//敵キャラ設定 //敵の種類を判別するための変数speciesを用いてキャラクターを決定する。 //キャラクターごとに、能力値、使用する魔法の種類、魔法の使用条件、倒すともらえる経験値を設定。 //敵とエンカウントするたびに新しくクラスを作成するので、初期化は必要ない。 /************************** Enemy内で使うグローバル変数 **************************/ //enemyの画像 PImage[] enemy_image = new PImage[100]; class Enemy { //基本情報 int species; //敵の種類 //HP,MP設定 int hp; //敵のHP int max_Hp; //敵のMAXHP int mp; //敵のMP int max_Mp; //敵のMP int a; //敵の攻撃力 int b; //防御力 int magic; //魔法攻撃力 int recovery; //回復 int exp; //経験値 String name; //名前 String attack_name; //攻撃の名前 //敵の初期位置決定(引数に敵の種類をもらう) Enemy(int z) { species = z; switch(species) { case 0: //最弱 name = "ペンギン"; hp = 50; a = 5; b = 5; exp = 100; break; case 1: //HP name = "フォックス"; hp = 200; a = 40; b = 10; exp = 100; break; case 2: //攻撃 name = "ラビット"; hp = 50; a = 50; b = 5; exp = 100; break; case 3: //防御 name = "スナイル"; hp = 150; a = 80; b = 60; exp = 200; break; case 4: //攻撃魔法 name = "ファルコン"; hp = 150; mp = 3; a = 20; b = 20; magic = 120; exp = 200; break; case 5: //強い敵 name = "ウルフ"; hp = 150; mp = 0; a = 80; b = 70; magic = 0; exp = 300; break; case 6: //HP強化版 name = "超フォックス"; hp = 350; a = 80; b = 10; exp = 300; break; case 7: //攻撃強化版 name = "超ラビット"; hp = 200; a = 110; b = 10; exp = 300; break; case 8: //防御強化版 name = "超スナイル"; hp = 300; a = 140; b = 80; exp = 430; break; case 9: //攻撃魔法強化版 name = "超ファルコン"; hp = 300; mp = 10; a = 40; b = 60; magic = 100; exp = 430; break; case 10: //超強敵、回復 name = "超ウルフ"; hp = 300; mp = 1; a = 200; b = 160; magic = 1; exp = 500; break; case 100: //中ボス(1) name = "クルペオ"; hp = 300; a = 80; b = 25; exp = 300; break; case 200: //中ボス(2) name = "ドラゴン"; hp = 400; mp = 2; a = 80; b = 50; exp = 400; break; case 300: //中ボス(3) name = "アシナ"; hp = 15; mp = 0; a = 220; b = 9999; exp = 500; break; case 400: //中ボス(4) name = "アエオニウム"; hp = 500; mp = 1; a = 300; b = 80; recovery = 300; exp = 600; break; case 500: //ラストボス name = "テツロウ"; hp = 1000; a = 400; b = 150; magic = 500; exp = 0; break; } max_Hp = hp; max_Mp = mp; } //攻撃の種類の判定(10が通常攻撃、11が魔法、12が回復) int attack_type() { //この関数でattack_nameに攻撃名を入れていく attack_name = "攻撃"; switch(species) { //敵ごとに分岐 case 4: //1/2の確率で魔法攻撃をする if (int(random(1)) == 0 && mp > 0) { mp -= 1; attack_name = "ファイア"; return 11; } break; case 9: //4の敵はmpがあるだけ魔法攻撃をする if (mp > 0) { mp -= 1; //mpを減らす attack_name = "超ファイア"; return 11; } break; case 10: if (hp<100 && mp>0) { mp --; attack_name = "ヒール"; return 12; } break; case 200: //中ボス2(未設定) if (mp > 0) { mp --; attack_name = "竜の舞"; return 13; } break; case 400: //中ボス4(未設定) if (hp < 200 && mp > 0) { mp --; attack_name = "ヒール"; return 12; } break; case 500: //ラストボス(未設定) if (enemy_a_rank < 2) { attack_name = "能力超強化"; return 14; } else if (int(random(1)) == 0) { attack_name = "魔法攻撃"; return 11; } break; } return 10; //魔法、回復以外は通常攻撃 } //死亡判定 //HPが0以下になった場合、trueを返す。 boolean isDead() { if (hp <= 0) return true; else return false; } //敵キャラのグラフィック(敵を表示させる座標をもらう(x、y)) void display(int x, int y) { imageMode(CENTER); if (isDead() == false) { switch(species) { //最弱 case 0: image(enemy_image[0], x, y); break; //HP case 1: image(enemy_image[1], x, y); break; //攻撃 case 2: image(enemy_image[2], x, y); break; //防御 case 3: image(enemy_image[3], x, y); break; //魔法 case 4: image(enemy_image[4], x, y); break; //強敵 case 5: image(enemy_image[5], x, y); break; //HP強 case 6: image(enemy_image[1], x, y); break; //攻撃強 case 7: image(enemy_image[2], x, y); break; //防御強 case 8: image(enemy_image[3], x, y); break; //魔法強 case 9: image(enemy_image[4], x, y); break; //強敵、回復 case 10: image(enemy_image[5], x, y); break; //中ボス(1) case 100: image(enemy_image[90], x, y); break; case 200: //中ボス2 image(enemy_image[91], x, y); break; case 300: //中ボス3 image(enemy_image[92], x, y); break; case 400: //中ボス4 image(enemy_image[93], x, y); break; case 500: //ラスボス image(enemy_image[99], x, y); break; } } } }