//プログラム本文 //各プログラムで使う変数を宣言する。 //menuの数字によってプログラムを呼び出し、ゲームを進行していく //キー操作の設定もこのタブの中で行う。 int menu = 0; Select select; //主人公、敵キャラ、主人公が使う魔法の宣言(本文共通) Player player; Enemy enemy; Magic[] magic = new Magic[10]; /******************************** menu2 キャラセレクト用 ********************************/ Select_chara select_c; PImage kougeki, bougyo, maho, tairyoku, field, boss_field1, boss_field2, boss_field3, boss_field4, boss_field5; /******************************** menu1 && 3 && 7 タイトル、プロローグ、エピローグ用 ********************************/ //プログラムに挿入する背景写真用変数 PImage img0, img1, img2; //テキストの文字色を決める color font_color = 255; //テキストの色を変える時間を調整する int color_time = 0; /******************************** menu5 MAP用変数 ********************************/ //画面サイズ int SZ = 600; //ボタン boolean up, down, right, left, space; boolean bossbattle = false; //MAPクリア!の真理値 boolean[] MapClear = { false, false, false, false, false, false }; //行けないMAP選択時のメッセージの表示、非表示 boolean fogMessage = false; MapSb mp; //Mapプレイヤーの位置初期値 int mapx = 15, mapy =15; // MAPの時間 / プレイヤーの動く感覚 /イベントの状態 int maptime = 0, map_movetime = 0, Event = 0, map_menutime = 0; //イベント発生中かどうか 条件スイッチ的なの boolean eve1 = true, eve2 = true; //menuが出ているかどうか boolean mapmenu = false; //画像の変数 PImage worldmap; PImage ground1, ground2, ground3, ground4, river, mountain1, mountain2, mountain4, br, mori1, mori4, mplayer, sea, mapesc, boss, cas, fog; //マップ用 int[][] MiniMap; //エンカウント用ランダム変数 float encounter = 0; int last_encount = 0; /******************************** menu8 ED用 ********************************/ int ed_y, ed_time=0; /******************************** menu9 バトル用変数 ********************************/ //コマンド選択時のカーソルを宣言 Command1 comm1; Command2 comm2; //バトルのフェイズを変数で管理(詳しくはdraw内のバトル切り替え) int battle = 100; //ダメージ計算用の変数を宣言 int damage=0; int critical; //バトルログのテキスト用変数を宣言 String log[] = { "", "", "", "", "" }; color log_color[] = { 0, 0, 0, 0, 0 }; void setup() { size(600, 600); //フォント指定(日本語、ゴシック体) PFont font = createFont("MS Gothic", 48, true); textFont(font); /******************************** menu2 キャラセレクト用 ********************************/ select_c = new Select_chara(); kougeki = loadImage("attack.jpg"); bougyo = loadImage("defense.jpg"); maho = loadImage("magic.jpg"); tairyoku = loadImage("physical.jpg"); /******************************** menu4&5 MAP用変数 ********************************/ mp = new MapSb(SZ, 31); //ワールドマップの選択用 select = new Select(); //MAPの大きさ MiniMap = new int[31][31]; //画像読み込み //PImage ground1,ground2,ground3,ground4,river,mountain1,mountain2,mountain4,br,mori1,mori4,mplayer,sea,mapesc,boss,cas; worldmap = loadImage("worldmap.jpg"); ground1 = loadImage("ground1.png"); ground2 = loadImage("ground2.png"); ground3 = loadImage("ground3.png"); ground4 = loadImage("ground4.png"); river = loadImage("river.png"); mountain1 = loadImage("mou1.png"); mountain2 = loadImage("mou2.png"); mountain4 = loadImage("mou4.png"); mori1 = loadImage("mori1.png"); mori4 = loadImage("mori4.png"); sea = loadImage("sea.png"); br = loadImage("br.png"); mplayer = loadImage("pl.gif"); mapesc = loadImage("esc.png"); boss = loadImage("boss.png"); cas = loadImage("cas.png"); fog = loadImage("fog.png"); /******************************** menu8 ED用 ********************************/ ed_y = height/2; /******************************** menu9 バトル用変数 ********************************/ comm1 = new Command1(); comm2 = new Command2(); //実行テスト用の敵を宣言 enemy = new Enemy(0); //バトル時の背景 field = loadImage("field.jpg"); boss_field1 = loadImage("boss_f1.png"); boss_field2 = loadImage("boss_f2.png"); boss_field3 = loadImage("boss_f3.png"); boss_field4 = loadImage("boss_f4.png"); boss_field5 = loadImage("boss_f5.jpg"); //enemy画像読み込み enemy_image[0] = loadImage("enemy_0000.png"); enemy_image[1] = loadImage("enemy_0001.png"); enemy_image[2] = loadImage("enemy_0002.png"); enemy_image[3] = loadImage("enemy_0003.png"); enemy_image[4] = loadImage("enemy_0004.png"); enemy_image[5] = loadImage("enemy_0005.png"); enemy_image[90] = loadImage("enemy_0090.png"); enemy_image[91] = loadImage("enemy_0091.png"); enemy_image[92] = loadImage("enemy_0092.png"); enemy_image[93] = loadImage("enemy_0093.png"); enemy_image[99] = loadImage("enemy_0099.png"); } void draw() { textAlign(LEFT); //ダンジョンマップで文字が中央揃えに設定されているので解除する。 background(255); /****************************************** menu切り替え case 0:タイトル画面 (豊田、ふみ) case 1:ゲームの操作説明 (逸見) case 2:キャラセレクト (ふじ) case 3:プロローグ (ふみ) case 4:ワールドマップ (いっこー) case 5:ダンジョンマップ (いっこー) case 6:魔王戦 (豊田、逸見) case 7:エピローグ (ふみ) case 8:ED (豊田)ok case 9:バトル (豊田) ******************************************/ if (menu == 0 ) title(); else if (menu == 1) readme(); else if (menu == 2) charaSelect(); else if (menu == 3) prologue(); else if (menu == 4) world(); else if (menu == 5) minimap(); else if (menu == 6) boss(); else if (menu == 7) epilogue(); else if (menu == 8) ending(); else if (menu == 9) fight(); } void keyPressed() { switch(menu) { case 0: if (key == ' ') menu ++; break; case 1: if (key == ' ') menu ++; break; case 2: if (key == CODED) { if (keyCode == UP) select_c.move_c(1); else if (keyCode == DOWN) select_c.move_c(2); else if (keyCode == RIGHT) select_c.move_c(3); else if (keyCode == LEFT) select_c.move_c(4); } else if (key == ' ') { menu++; } break; case 3: if (key == ' ') menu++; break; case 4: if (key == CODED) { //メッセージが表示されていない時 カーソルは動く if (fogMessage) { } else { if (keyCode == UP) select.move(1); else if (keyCode == DOWN) select.move(2); else if (keyCode == RIGHT) select.move(3); else if (keyCode == LEFT) select.move(4); } } //霧に覆われているならメッセージON OFF 霧がないならMAPに進む 中央は魔王戦 else if (key == ' ') { if (select.position == 0) { if (MapClear[4]) menu+=2; else { if (fogMessage) fogMessage = false; else fogMessage = true; } } else { if (select.position == 1) menu++; else if (MapClear[select.position-1]) menu++; else { if (fogMessage) fogMessage = false; else fogMessage = true; } } } /*チート 全クリアON OFF*/ /* else if (key == 'Z') { if (MapClear[0]) { for (int i = 0;i<5;i++) MapClear[i] = false; } else { for (int i = 0;i<5;i++) MapClear[i] = true; } }*/ break; case 5: if (key == ' ') space = true; if (key == CODED) { if (keyCode == UP) up = true; if (keyCode == DOWN) down = true; if (keyCode == RIGHT) right = true; if (keyCode == LEFT) left = true; } break; case 6: if (key == 'z') menu = 4; if (key == ' ') menu = 9; break; case 7: if (key == ' ') menu++; break; case 9: //こうげき?まほう? switch(battle) { case 0: if (key == CODED) { if (keyCode == UP) comm1.move(-1); else if (keyCode == DOWN) comm1.move(1); } else if (key == ' ') { if (comm1.position == 0) battle += 2; else if (comm1.position == 1) battle++; else if (comm1.position == 3) battle = 500; } break; //どのまほうを使う? case 1: if ( key == CODED) { if (keyCode == UP) comm2.move(-1); else if ( keyCode == DOWN) comm2.move(1); } else if (key == 'z') battle--; else if (key == ' ') { if (player.skill[comm2.position]) { if (player.mp >= magic[comm2.position].mp)battle++; else { log_off(); log[0] = "MPが足りません"; battle--; } } } break; case 3 : if (key == ' ') { if (enemy.isDead()) battle = 6; else battle++; } break; case 5: if ( key == ' ') { if (player.isDead()) battle = 999; else battle = 0; } break; case 7: //戦闘勝利時、マップに戻る直前に各数値の初期化 if (key == ' ') { battle = 100; player.mp = player.max_Mp; player_a_rank = 0; player_b_rank = 0; enemy_a_rank = 0; enemy_b_rank = 0; log[0] = ""; log_off(); log_off(); log_off(); log_off(); if (enemy.species == 500) menu = 7; else if (enemy.species >= 100) { MapClear[select.position] = true; menu = 4; } else menu = 5; } break; case 101: if (key == ' ')battle = 0; break; case 999: if (key == ' ' ) { menu = 4; battle = 100; player.hp = player.max_Hp; player.mp = player.max_Mp; log[0] = ""; log_off(); log_off(); log_off(); log_off(); break; } } } } void keyReleased() { if (key == ' ') space = false; if (key == CODED) { if (keyCode == UP) up = false; if (keyCode == DOWN) down = false; if (keyCode == RIGHT) right = false; if (keyCode == LEFT) left = false; } }