テキストRPGをHTMLとJSで作ってみようと思うんだが (25レス)
テキストRPGをHTMLとJSで作ってみようと思うんだが http://mevius.5ch.net/test/read.cgi/gamedev/1594285853/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
1: 名前は開発中のものです。 [] 2020/07/09(木) 18:10:53.88 ID:C2sLSK4a TRPGまとめ読んでたら作りたくなってきた なおJSは実務未経験 http://mevius.5ch.net/test/read.cgi/gamedev/1594285853/1
2: 名前は開発中のものです。 [] 2020/07/09(木) 18:14:37.90 ID:C2sLSK4a プレイヤーの変数は名前とHPと攻撃力 配列に戦闘とイベントをランダムで入れてその配列を進めていく http://mevius.5ch.net/test/read.cgi/gamedev/1594285853/2
3: 名前は開発中のものです。 [] 2020/07/09(木) 18:26:05.78 ID:C2sLSK4a とりあえずver0.01作った http://mevius.5ch.net/test/read.cgi/gamedev/1594285853/3
4: 名前は開発中のものです。 [] 2020/07/09(木) 18:27:03.38 ID:C2sLSK4a <ぼでぃ> <スパン>HP:</スパン><スパン id="HP"></スパン> <スパン>攻撃力:</スパン><スパン id="ATTACK"></スパン> <スパン>フロア:</スパン><スパン id="FLOOR"></スパン> <スクリプト> let HP = 10; let ATTACK = 1; let FLOOR = 0; let PROGRESS=[]; const status = () =>{ document.querySelector("#HP").textContent = HP; docume
nt.querySelector("#ATTACK").textContent = ATTACK; document.querySelector("#FLOOR").textContent = FLOOR + 1; } status(); </スクリプト> </ぼでぃ> http://mevius.5ch.net/test/read.cgi/gamedev/1594285853/4
5: 名前は開発中のものです。 [] 2020/07/09(木) 18:31:55.39 ID:C2sLSK4a 戦闘シーケンスどうやって作るか とりあえずモンスターのHPと攻撃力設定しておく 交互に攻撃してHPゼロになったら戦闘シーケンス終了 装備とかクリティカルヒットとか回避はあとあと考えるか 攻撃はとりあえずプレイヤー先攻がデフォ http://mevius.5ch.net/test/read.cgi/gamedev/1594285853/5
6: 名前は開発中のものです。 [] 2020/07/09(木) 19:08:28.94 ID:C2sLSK4a const indicate = (text) =>{ document.querySelector("#INDICATE").innerText += text+"\n" } let PLAYER=[NAME,HP,AP]; let MONSTERS = [["ゴブリン",3,1]]; const getAnyMonster = (MONSTERS) =>{ return MONSTERS[0] } const battle = (PLAYER,MONSTER) =>{ const attack = () =>{ let PLAYER_HP = PLAYER[1]; const PLAYER_AP = PLAYER[2]; let MONSTER_HP = MONSTER[1]; const MONSTER_AP = MONSTER[2]; while ( Math.s
ign(PLAYER_HP) === 1 && Math.sign(MONSTER_HP) === 1 ) { console.table(PLAYER_HP,PLAYER_AP,MONSTER_HP,MONSTER_AP) PLAYER_HP = PLAYER_HP - MONSTER_AP; indicate(`${PLAYER[0]}のHP`+PLAYER_HP); MONSTER_HP = MONSTER_HP - PLAYER_AP; indicate(`${MONSTER[0]}のHP`+MONSTER_HP); } indicate(`戦闘は終了した`); } attack(); } battle(PLAYER,getAnyMonster(MONSTERS)); http://mevius.5ch.net/test/read.cgi/gamedev/1594285853/6
7: 名前は開発中のものです。 [] 2020/07/09(木) 19:23:27.12 ID:C2sLSK4a 配列がディープコピーしたいけどググっても素のJSでやる方法がすぐ出てこないからramda.js使う https://ramdajs.com/ http://mevius.5ch.net/test/read.cgi/gamedev/1594285853/7
8: 名前は開発中のものです。 [] 2020/07/09(木) 19:24:09.77 ID:C2sLSK4a でモンスターの配列をディープコピー let MONSTERS = [["ゴブリン",3,1]]; const getAnyMonster = (MONSTERS) =>{ const EntityMONSTER = R.clone(MONSTERS); return EntityMONSTER[0]; } http://mevius.5ch.net/test/read.cgi/gamedev/1594285853/8
9: 名前は開発中のものです。 [] 2020/07/09(木) 19:26:28.62 ID:C2sLSK4a 戦闘を何度も繰り返したいときはこんな感じ? const battle = (PLAYER,MONSTER) =>{ const attack = () =>{ while ( Math.sign(PLAYER[1]) === 1 && Math.sign(MONSTER[1]) === 1 ) { console.table(PLAYER[1],PLAYER[2],MONSTER[1],MONSTER[2]) PLAYER[1] = PLAYER[1] - MONSTER[2]; indicate(`${PLAYER[0]}のHP`+PLAYER[1]); MONSTER[1] = MONSTER[1] - PLAYER[2]; indicate(`${MONSTER[0]}のHP`+MONSTER[1]); } indicate(`戦闘は終了した`); } attack(); }
PROGRESS=[battle, battle, battle, battle, battle, battle, battle]; PROGRESS.forEach(SEQUENCE=>{ SEQUENCE(PLAYER,getAnyMonster(MONSTERS)); }) http://mevius.5ch.net/test/read.cgi/gamedev/1594285853/9
10: 名前は開発中のものです。 [] 2020/07/09(木) 19:27:00.30 ID:C2sLSK4a データ構造はこんなもん let NAME = "Hiroyuki"; let HP = 11; let AP = 2; let FLOOR = 0; let PROGRESS=[]; http://mevius.5ch.net/test/read.cgi/gamedev/1594285853/10
11: 名前は開発中のものです。 [] 2020/07/09(木) 19:35:48.27 ID:C2sLSK4a モンスター複数にしてランダムでモンスター出るようにした let PLAYER=[NAME,HP,AP]; let MONSTERS = [["ゴブリン",3,1],["骸骨剣士",5,2],["ドワーフ",6,1]]; const shuffleArray = array => { for (let i = array.length - 1; i > 0; i--) { let r = Math.floor(Math.random() * (i + 1)); let tmp = array[i]; array[i] = array[r]; array[r] = tmp; } return array } const getAnyMonster = (MONSTERS) =>{ const EntityMONS
TER = R.clone(MONSTERS); return shuffleArray(EntityMONSTER)[0]; } http://mevius.5ch.net/test/read.cgi/gamedev/1594285853/11
12: 名前は開発中のものです。 [] 2020/07/09(木) 19:41:06.61 ID:C2sLSK4a モンスター複数っていうかモンスターの種類が複数で出現は1体ずつ あと死亡状態確認の関数も定義した const deathCheck = () =>{ if(Math.sign(PLAYER[1]) !== 1){ indicate(`${PLAYER[0]}は死亡した`) } } http://mevius.5ch.net/test/read.cgi/gamedev/1594285853/12
13: 名前は開発中のものです。 [] 2020/07/09(木) 19:52:24.97 ID:C2sLSK4a 匿名でhtmlファイルの共有簡単にできるやつなんか無いのか とりあえず検索してすぐ出たやつで上のこれ共有しとく ただのHTMLとJSだからセットアップ無しでそのまま動く https://volafile.org/r/1bq7592g8 http://mevius.5ch.net/test/read.cgi/gamedev/1594285853/13
14: 名前は開発中のものです。 [] 2020/07/09(木) 19:57:45.35 ID:C2sLSK4a あと戦闘以外のイベント作りたい とりあえずHPかAPを増減するだけのイベントだけ設定するか 戦闘もイベントも結果が選択によって変わるのと確率の要素入れたい とりあえずまずイベントだけ作ってPROGRESSに入れてみるか http://mevius.5ch.net/test/read.cgi/gamedev/1594285853/14
15: 名前は開発中のものです。 [] 2020/07/09(木) 20:20:38.39 ID:C2sLSK4a デバッグめんどくさいからシード値か何かでランダムの部分固定したい イベント追加した イベントの結果を2つ以上にして結果をランダムにするのと イベントを実行するの実装するか const THINGS = [ ["HPが1増えた", ()=>{PLAYER[1]=PLAYER[1]+1}], ["HPが5減った", ()=>{PLAYER[1]=PLAYER[1]-5}] ]; const getAnyHappening = () =>{ const EntityTHINGS = R.clone(THINGS); return shuffleArray(EntityTHINGS)[0]; } const happening = (T
HING) =>{ indicate(THING[0]); THING[1](); deathCheck(); } PROGRESS=[happening, battle, battle, happening, battle, battle, battle]; PROGRESS.forEach(SEQUENCE=>{ if(SEQUENCE===battle){SEQUENCE(PLAYER,getAnyMonster(MONSTERS))}; if(SEQUENCE===happening){SEQUENCE(getAnyHappening())}; }) http://mevius.5ch.net/test/read.cgi/gamedev/1594285853/15
16: 名前は開発中のものです。 [sage] 2020/07/12(日) 20:25:51.01 ID:rCxmJFqB おい誰か反応してやれよ http://mevius.5ch.net/test/read.cgi/gamedev/1594285853/16
17: くまじょ [sage] 2020/07/13(月) 09:50:39.52 ID:/7c2Q8iI 俺もそう思うが 興味ない http://mevius.5ch.net/test/read.cgi/gamedev/1594285853/17
18: くまじょ [sage] 2020/07/13(月) 10:00:43.90 ID:ZHvjE/iT 最近のjsはconstとか使えるのか すごいなあ 今スマホなのでレス見ながらレスできないので不便 =>ってのはラムダ式とか無名関数ってのかな なれてないのでどうも分かりにくい http://mevius.5ch.net/test/read.cgi/gamedev/1594285853/18
19: 名前は開発中のものです。 [age] 2020/07/22(水) 22:41:50.45 ID:wBHkT/Gr とりあえずgithubにコードあげとけば? http://mevius.5ch.net/test/read.cgi/gamedev/1594285853/19
20: 名前は開発中のものです。 [sage] 2020/08/02(日) 05:11:07.88 ID:xA8cEPYg >>13 codepen.ioとかjsfiddle http://mevius.5ch.net/test/read.cgi/gamedev/1594285853/20
21: 名前は開発中のものです。 [sage] 2020/09/12(土) 03:34:53.36 ID:ezbp5FoJ 挫折した http://mevius.5ch.net/test/read.cgi/gamedev/1594285853/21
22: 名前は開発中のものです。 [] 2020/10/12(月) 10:33:40.81 ID:8HwwmF4l >>18 =>を使う関数はアロー関数と呼ばれてて、主な違いは、 ・短く書ける (const test1 = x =>x**2+3; みたいな) ・thisが上書きされない ・argumentsが定義されていない 詳しくはMDNで調べるといいと思う http://mevius.5ch.net/test/read.cgi/gamedev/1594285853/22
23: 名前は開発中のものです。 [sage] 2023/07/03(月) 20:21:27.20 ID:UCmJE3+L ( )y-~~( ´)y-~~( ´-)y-~~(´ー`)y━~~∑( ゚Д゚)y━~~スゲー!! http://mevius.5ch.net/test/read.cgi/gamedev/1594285853/23
24: 名前は開発中のものです。 [sage] 2023/08/19(土) 12:00:28.01 ID:87EPDeDn プハァー ( ̄┏Д┓ ̄)y─┛~~ http://mevius.5ch.net/test/read.cgi/gamedev/1594285853/24
25: 名前は開発中のものです。 [sage] 2023/10/19(木) 00:18:00.90 ID:RR2g51y6 ・・・運命なんかどうでもいい・・・だが、あんたはここで倒さなきゃならないらしいな http://mevius.5ch.net/test/read.cgi/gamedev/1594285853/25
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.307s*