コマンドバトル風スクリプトを作ってみた
ESTKでド○クエ風コマンドバトルを作ってみました。グラフィックはないですが会心の一撃はあります(笑)
コマンドバトルと言いつつ、「戦う」と「やめる」しか選べません…
関数同士のパラメータのやりとりを検証したかったからで、決してヒマだったわけではありません(多分)
行き当たりばったりに書いていったので、結構無駄な箇所もあるかもしれません。
簡単なオブジェクトモデルしか使っていないので、初心者~脱初心者レベルくらいの方なら、参考になる部分もあるかもしれません。
ターゲットがESTKかInDesignなら動くと思いますが、遊ぶ人がいるのでしょうか…
ポップアップが出るたびにポンポン鳴るかもしれないので、実行の際はお気をつけください…
[しょーもなコマンドバトル]
//初期パラメータ--------------------------------------- var youHP = 30; //あなたのHP var enemyHP = 30; //敵のHP var damage = 0; //敵へのダメージを入れる変数 var youGetDamage = 0; //あなたへのダメージを入れる変数 //--------------------------------------------------- //スタート関数の呼び出し start (youHP,enemyHP,damage,youGetDamage); ///////スタート画面(情報表示と開始か終了かを選択) function start (youHP,enemyHP,damage,youGetDamage) { youHP = youHP -youGetDamage; //あなたのHPからダメージ値を減算 enemyHP = enemyHP - damage; //敵のHPからダメージ値を減算 var flag = Window.confirm ( //情報の画面呼び出し "あなた HP/"+youHP+"\r"+"ドラゴン HP/" +enemyHP+"\r\r"+"戦いますか?",false, "しょーもなコマンドバトル"); if (flag == true) { //trueは略せた気がするけど一応記述 yourTurn (youHP,enemyHP); } else {alert ("戦闘を終了します");return} //いいえが押されたら終了 } //////「あなた」のターンの関数 function yourTurn (youHP,enemyHP,damage,youGetDamage) { var damage = damageCulc (); //関数が計算したダメージを取得 if (damage == 0) { //ダメージ0の時の処理 alert ("ミス! ドラゴンにダメージをあたえられない!"); enemyTurn (youHP,enemyHP,damage,youGetDamage); } else { //ダメージが0以外の時の処理 alert ("ドラゴンに"+damage+"のダメージをあたえた!"); var HPcheck = enemyHP - damage; if (HPcheck <= 0) { //敵のHPが0以下になったら終了 alert ("ドラゴンをやっつけた!") ; return; } else { //敵のHPが1以上なら敵のターン enemyTurn (youHP,enemyHP,damage,youGetDamage); }} return damage; //ダメージ値を返す } //////「敵」のターンの関数 function enemyTurn (youHP,enemyHP,damage,youGetDamage) { var youGetDamage = yourDamageCulc ();//関数が計算したダメージを取得 if (youGetDamage == 0) { //ダメージ0の時の処理 alert ("あなたはひらりと身をかわした!"); start (youHP,enemyHP,damage,youGetDamage); } else { //ダメージが0以外の時の処理 alert ("あなたは"+youGetDamage+"のダメージを受けた!"); var HPcheck = youHP - youGetDamage; if (HPcheck <= 0) { //あなたのHPが0以下になったら終了 alert ("あなたは負けてしまった!"); return; } else { //あなたのHPが1以上なら最初に戻る start (youHP,enemyHP,damage,youGetDamage); }} return youGetDamage; //ダメージ値を返す } /////敵へのダメージを計算する関数 function damageCulc (youHP,enemyHP,damage,youGetDamage) { var hitFlag = Math.floor (Math.random () *8) ; //会心の一撃の判定 if (hitFlag ==0) { //乱数が0なら会心の一撃発生(確率1/8) alert ("あなたの攻撃!"); alert ("会心の一撃!"); //会心の一撃のときのメッセージ var damage = Math.floor (Math.random ()*10); //ダメージ計算 damage = damage+10; //会心の一撃時はダメージ10加算 return damage; //ダメージ値を返す } else { alert ("あなたの攻撃!"); var damage = Math.floor (Math.random ()*10); //通常ダメージ return damage; //ダメージ値を返す }} /////あなたへのダメージを計算する関数 function yourDamageCulc (youHP,enemyHP,damage,youGetDamage) { var hitFlag = Math.floor (Math.random () *8) ; //痛恨の一撃の判定 if (hitFlag ==0) { //乱数が0なら痛恨の一撃発生(確率1/8) alert ("ドラゴンの攻撃!"); alert ("痛恨の一撃!"); //痛恨の一撃のときのメッセージ var youGetDamage = Math.floor (Math.random ()*10); //ダメージ計算 youGetDamage = youGetDamage+10; //痛恨の一撃時はダメージ10加算 return youGetDamage; //ダメージ値を返す } else { alert ("ドラゴンの攻撃!"); var youGetDamage = Math.floor (Math.random ()*10); //通常ダメージ return youGetDamage; //ダメージ値を返す }}