とあるDTPオペレーターのInDesignスクリプト備忘録

デザイナー上がりですがいまはDTP命。InDesign用スクリプトの解説などを綴っています。読者登録して戴けると励みになります。

コマンドバトル風スクリプトを作ってみた

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; //ダメージ値を返す
  }}

スクリプトを実行する際は自己責任にてお願い致します。スクリプトによるいかなる不具合も保証しかねます。