//戦闘メイン文 //戦闘の進行を示す変数battleの数字によって処理などの関数を呼び出し戦闘を進めていく int gameover_massage; // ゲームオーバー用メッセージをランダム作成 //プレイヤーと敵の能力変化技による補正ランク int player_a_rank, player_b_rank; int enemy_a_rank, enemy_b_rank; //プレイヤーのバトル時の攻撃力と防御力 int player_battle_a, player_battle_b; int enemy_battle_a, enemy_battle_b; void fight() { //基本設定 stroke(0); strokeWeight(1); //背景表示 switch(enemy.species) { case 100: image(boss_field1, 0, 0, 600, 600); break; case 200: image(boss_field2, 0, 0, 600, 600); break; case 300: image(boss_field3, 0, 0, 600, 600); break; case 400: image(boss_field4, 0, 0, 600, 600); break; case 500: image(boss_field5, 0, 0, 600, 600); break; default: image(field, 0, 0, 600, 600); } //敵の表示 enemy.display(300, 200); //ステータス画面 imageMode(CORNER); status2(player.hp, player.max_Hp, player.mp, player.max_Mp); status3(); status1(); //プレイヤーが覚えているスキルの判定 skill_ac(); //プレイヤーの補正込み能力値の決定 if (player_a_rank > 0) player_battle_a = player.a * ((player_a_rank + 2) / 2); else player_battle_a = player.a * (2/(2-player_a_rank)); if (player_b_rank > 0) player_battle_b = player.b * ((player_b_rank + 2) / 2); else player_battle_b = player.b * (2/(2-player_b_rank)); if (enemy_a_rank > 0) enemy_battle_a = enemy.a * ((enemy_a_rank + 2) / 2); else player_battle_a = player.a * (2/(2-player_a_rank)); if (enemy_b_rank > 0) enemy_battle_b = enemy.b * ((enemy_b_rank + 2) / 2); else enemy_battle_b = enemy.b * (2/(2-enemy_b_rank)); /***************************************************** battle切り替え case 100:バトルスタート(○○が現れた!) case 101:バトル開始の入力待機(スペースキーでバトルスタート、誤操作防止) case 0:主人公はどうする?(こうげき⇒2 or まほう⇒1 or にげる⇒500) case 1:どの魔法を使う? case 2:通常/魔法のダメージ/回復/状態変化/ステータス変化の処理とログ更新 case 3:敵の死亡判定(Enemy.isDeadを使用し、死亡の場合はmenu5へ) case 4:敵の攻撃(ダメージエフェクトとコマンドログ) case 5:主人公の死亡判定(Player.isDeadを使用し、死亡の場合はbattle=999へ) case 6:敵を倒した!(コマンドログに倒した!コメントと経験値記載) case 7:ダンジョンマップに戻る入力待機(スペースキーでダンジョンに戻る。誤操作防止) case 500:逃げる判定 (ボス戦の場合逃げられない、モブ戦⇒ 7) case 999:ゲームオーバー(コンティニュー?) どちらかの体力が尽きるまで0~5を繰り返す。 *****************************************************/ switch(battle) { case 0: //プレイヤーはどうする?の選択用矢印の表示 comm1.display(); break; case 1: //どの魔法を使う?の選択用矢印の表示 comm2.display(); break; case 2: //攻撃によってダメージ計算を行い、処理する。 if (comm1.position == 0) judg(comm1.position); else if (comm1.position == 1) { judg(magic[comm2.position].type); } battle ++; break; case 4: judg(enemy.attack_type()); //attack_type() で敵の攻撃のタイプを選んでjudg()で表示する //プレイやーのHPがマイナスなら0にあわせる if (player.hp < 0) player.hp = 0; battle++; break; case 6: log_off(); log_color[0] = #00FF00; log[0] = enemy.name + "を倒した!"; log_off(); log[0]=enemy.exp+"の経験値を得た"; if (level_up(enemy.exp)) { log_off(); log[0] = "レベルアップ!"; if (player.level <= 10 && player.skill[player.level-1]) { log_off(); log[0] = "魔法を覚えた!"; } stats_up(); battle++; } else { battle++; } break; case 100: //ゲームオーバー時のメッセージを戦闘毎にランダムで決定 gameover_massage = int(random(4)); //能力補正ランクの初期化 player_a_rank = 0; player_b_rank = 0; enemy_a_rank = 0; enemy_b_rank = 0; //モンスター出現メッセージの表示 log_off(); log_color[0] = #FF0000; log[0] = enemy.name + "が出てきた!"; battle ++; break; case 500: if (enemy.species<100) { log_off(); log[0] = "フジは逃げ出した!"; battle = 7; } else { log_off(); log[0] = "大事な勝負だ!逃げられない!"; battle = 0; } break; case 999: gameover(gameover_massage); break; } }