テキストRPGをHTMLとJSで作ってみようと思うんだが (25レス)
1-

1: 2020/07/09(木)18:10 ID:C2sLSK4a(1/15) AAS
TRPGまとめ読んでたら作りたくなってきた
なおJSは実務未経験
2: 2020/07/09(木)18:14 ID:C2sLSK4a(2/15) AAS
プレイヤーの変数は名前とHPと攻撃力
配列に戦闘とイベントをランダムで入れてその配列を進めていく
3: 2020/07/09(木)18:26 ID:C2sLSK4a(3/15) AAS
とりあえずver0.01作った
4: 2020/07/09(木)18:27 ID:C2sLSK4a(4/15) AAS
<ぼでぃ>
<スパン>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: 2020/07/09(木)18:31 ID:C2sLSK4a(5/15) AAS
戦闘シーケンスどうやって作るか
とりあえずモンスターのHPと攻撃力設定しておく
交互に攻撃してHPゼロになったら戦闘シーケンス終了
装備とかクリティカルヒットとか回避はあとあと考えるか
攻撃はとりあえずプレイヤー先攻がデフォ
6: 2020/07/09(木)19:08 ID:C2sLSK4a(6/15) AAS
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: 2020/07/09(木)19:23 ID:C2sLSK4a(7/15) AAS
配列がディープコピーしたいけどググっても素のJSでやる方法がすぐ出てこないからramda.js使う

外部リンク:ramdajs.com
8: 2020/07/09(木)19:24 ID:C2sLSK4a(8/15) AAS
でモンスターの配列をディープコピー
let MONSTERS = [["ゴブリン",3,1]];

const getAnyMonster = (MONSTERS) =>{
const EntityMONSTER = R.clone(MONSTERS);
return EntityMONSTER[0];
}
9: 2020/07/09(木)19:26 ID:C2sLSK4a(9/15) AAS
戦闘を何度も繰り返したいときはこんな感じ?
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: 2020/07/09(木)19:27 ID:C2sLSK4a(10/15) AAS
データ構造はこんなもん

let NAME = "Hiroyuki";
let HP = 11;
let AP = 2;
let FLOOR = 0;

let PROGRESS=[];
1-
あと 15 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.005s