テキストRPGをHTMLとJSで作ってみようと思うんだがat GAMEDEV
テキストRPGをHTMLとJSで作ってみようと思うんだが - 暇つぶし2ch2:名前は開発中のものです。
20/07/09 18:14:37.90 C2sLSK4a.net
プレイヤーの変数は名前とHPと攻撃力
配列に戦闘とイベントをランダムで入れてその配列を進めていく

3:名前は開発中のものです。
20/07/09 18:26:05.78 C2sLSK4a.net
とりあえずver0.01作った

4:名前は開発中のものです。
20/07/09 18:27:03.38 C2sLSK4a.net
<ぼでぃ>
<スパン>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;
document.querySelector("#ATTACK").textContent = ATTACK;
document.querySelector("#FLOOR").textContent = FLOOR + 1;
}
status();
</スクリプト>
</ぼでぃ>

5:名前は開発中のものです。
20/07/09 18:31:55.39 C2sLSK4a.net
戦闘シーケンスどうやって作るか
とりあえずモンスターのHPと攻撃力設定しておく
交互に攻撃してHPゼロになったら戦闘シーケンス終了
装備とかクリティカルヒットとか回避はあとあと考えるか
攻撃はとりあえずプレイヤー先攻がデフォ

6:名前は開発中のものです。
20/07/09 19:08:28.94 C2sLSK4a.net
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.sign(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));

7:名前は開発中のものです。
20/07/09 19:23:27.12 C2sLSK4a.net
配列がディープコピーしたいけどググっても素のJSでやる方法がすぐ出てこないからramda.js使う
URLリンク(ramdajs.com)

8:名前は開発中のものです。
20/07/09 19:24:09.77 C2sLSK4a.net
でモンスターの配列をディープコピー
let MONSTERS = [["ゴブリン",3,1]];
const getAnyMonster = (MONSTERS) =>{
const EntityMONSTER = R.clone(MONSTERS);
return EntityMONSTER[0];
}

9:名前は開発中のものです。
20/07/09 19:26:28.62 C2sLSK4a.net
戦闘を何度も繰り返したいときはこんな感じ?
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));
})

10:名前は開発中のものです。
20/07/09 19:27:00.30 C2sLSK4a.net
データ構造はこんなもん
let NAME = "Hiroyuki";
let HP = 11;
let AP = 2;
let FLOOR = 0;
let PROGRESS=[];

11:名前は開発中のものです。
20/07/09 19:35:48.27 C2sLSK4a.net
モンスター複数にしてランダムでモンスター出るようにした
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 EntityMONSTER = R.clone(MONSTERS);
return shuffleArray(EntityMONSTER)[0];
}

12:名前は開発中のものです。
20/07/09 19:41:06.61 C2sLSK4a.net
モンスター複数っていうかモンスターの種類が複数で出現は1体ずつ
あと死亡状態確認の関数も定義した
const deathCheck = () =>{ if(Math.sign(PLAYER[1]) !== 1){ indicate(`${PLAYER[0]}は死亡した`) } }

13:名前は開発中のものです。
20/07/09 19:52:24.97 C2sLSK4a.net
匿名でhtmlファイルの共有簡単にできるやつなんか無いのか
とりあえず検索してすぐ出たやつで上のこれ共有しとく
ただのHTMLとJSだからセットアップ無しでそのまま動く
URLリンク(volafile.org)

14:名前は開発中のものです。
20/07/09 19:57:45.35 C2sLSK4a.net
あと戦闘以外のイベント作りたい
とりあえずHPかAPを増減するだけのイベントだけ設定するか
戦闘もイベントも結果が選択によって変わるのと確率の要素入れたい
とりあえずまずイベントだけ作ってPROGRESSに入れてみるか

15:名前は開発中のものです。
20/07/09 20:20:38.39 C2sLSK4a.net
デバッグめんどくさいからシード値か何かでランダムの部分固定したい
イベント追加した
イベントの結果を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 = (THING) =>{
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())};
})

16:名前は開発中のものです。
20/07/12 20:25:51 rCxmJFqB.net
おい誰か反応してやれよ

17:くまじょ
20/07/13 09:50:39 /7c2Q8iI.net
俺もそう思うが
興味ない

18:くまじょ
20/07/13 10:00:43 ZHvjE/iT.net
最近のjsはconstとか使えるのか
すごいなあ
今スマホなのでレス見ながらレスできないので不便

=>ってのはラムダ式とか無名関数ってのかな
なれてないのでどうも分かりにくい

19:名前は開発中のものです。
20/07/22 22:41:50.45 wBHkT/Gr.net
とりあえずgithubにコードあげとけば?

20:名前は開発中のものです。
20/08/02 05:11:07.88 xA8cEPYg.net
>>13
codepen.ioとかjsfiddle

21:名前は開発中のものです。
20/09/12 03:34:53.36 ezbp5FoJ.net
挫折した

22:名前は開発中のものです。
20/10/12 10:33:40.81 8HwwmF4l.net
>>18
=>を使う関数はアロー関数と呼ばれてて、主な違いは、
・短く書ける
(const test1 = x =>x**2+3; みたいな)
・thisが上書きされない
・argumentsが定義されていない
詳しくはMDNで調べるといいと思う

23:名前は開発中のものです。
23/06/28 15:33:49.53 i4B/b8Lfe
リスキリング(笑)とかほざいて税金泥棒と゛もか゛新たな利権のネ夕披露しまくっててクソ気色悪いよな
日本じゅう航空騷音まみれにして私権侵害して勉強まて゛妨害して,アプリのひとつも作れないようなガヰジだらけにして
知的産業に威カ業務妨害して壞滅させた、てめえら何ひとつ価値生産できない地球に涌いた害蟲の税金泥棒こそ小学生からやり直せや力ス
小学生以下の無能公務員と゛もか゛利権拡大させて私腹を肥やす目的て゛マヰナンバ─た゛なんた゛と個人情報収集して漏えいさせてやがるし、
JavaScript強要したりと税金泥棒NTTに汚染された税金泥棒國税庁やらポンコツ政府サイトのセキュリティのなさには唖然とするよな
都心まで数珠つなぎて゛私権侵害して、コロナに温室効果ガスにとまき散らして氣候変動させて災害連發させて人を殺す強盗殺人推進して,
工ネ価格に物価にと暴騰させて健常者の人生を破壞するこうした他人の権利を強奪して私腹を肥やすテ口リストを根絶やしにするのが先だろ
つか.アプリとか小学生て゛も独学て゛作れるわけた゛が、税金もらわなきゃアプリの扱い方すら習得て゛きないとか小学校からやり直せや税金泥棒

創価学會員は、何百万人も殺傷して損害を与えて私腹を肥やし続けて逮捕者まで出てる世界最惡の殺人腐敗組織公明党を
池田センセ―がロをきけて容認するとか本氣で思ってるとしたら侮辱にもほどか゛あるぞ!
hTtρs://i,imgur、сom/hnli1ga.jpeg

24:名前は開発中のものです。
23/07/03 20:21:27.20 UCmJE3+L.net
(   )y-~~( ´)y-~~( ´-)y-~~(´ー`)y━~~∑( ゚Д゚)y━~~スゲー!!

25:名前は開発中のものです。
23/08/19 12:00:28.01 87EPDeDn.net
プハァー ( ̄┏Д┓ ̄)y─┛~~

26:名前は開発中のものです。
23/10/19 00:18:00.90 RR2g51y6.net
・・・運命なんかどうでもいい・・・だが、あんたはここで倒さなきゃならないらしいな

27:名前は開発中のものです。
25/04/04 01:25:49.09 a2wjrQQhP
何もかも支離滅裂で突っ込むのもウンザリな齋藤鉄夫た゛の竹谷とし子だの強盜殺人推進公明党が力ンコー立國だのほざいてJALだのANΑだの
クソポリヘリだのテロリストに莫大な温室効果カ゛スまき散らさせて気候変動、災害連発させて人殺しまくっていながら気候変動対策だの
防災だの平然と嘘八百ほざいて憲法13条25条29条とカ゛ン無視て゛力による一方的な現状変更によって閑静な住宅地まで騒音まみれ
知的産業根絶やしにして国際競争カ壊滅させて子の学習環境破壊して私腹を肥やしていながら闇バイトは無差別強盗で卑劣、強盗殺人は俺らの
専売特許だからなとか寝言は寝てから言えやインバウンド何兆円だのほざきなか゛ら━千億とか補助金出してるあたりて゛気づくべきだが
力ンコ-こそか゛国民貧困化の根源、流出する石油代や農作物その他の被害など物価高騰引き起こしたり何年もカンコ‐だのほざいていなか゛ら
儲かってるのは癒着業者だけ国民不倫民主党の戯言とかどうでもいいが犯罪惹起して税金泥棒してるクソポリ公から悪質おもちゃ取り上げて
航空燃料税リッター1萬円にするだけでもくだらない扶養云々全廃して公平な最低所得保障財源で治安回復するわ
(ref.) URLリンク(www.call4.j)<)Ct.jimdofree.com/ , ttps://flight-rouТe.com/
TtРs://n-souonhigaisosyoudan.amebaownd.Com/


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch