トップページ > 記事閲覧
ステージ選択からステージ画面へ
名前:RON 日時: 2015/01/23 09:14

前回ありがとうございました。大変助かりました! 思わぬ壁に当たってしまって… メニュー画面のところで問題が… 右を押した状態でスタートを押してしまうと一応 そのマップデータステージに切り替わるのですが、キャラクターの動きが初期位置状態で止まってしまって… void GameMain(){ //アニメーションカウンタ g_stagedata.animcounter++; g_stagedata.animcounter &= MAXINT; //負の数にならないようにする処理 int ac = g_stagedata.animcounter / ANIM_RATE; DrawMap(); DrawHero(); //操作キャラの動作 DrawEnemy(ac); switch (g_stagedata.stagebunki) { case 1: metroid(); break; case 2: kriby(); break; default: break; } if(g_stagedata.hero.x >= (g_stagedata.mapwidth - 1) * IMG_CHIPSIZE){ g_stagedata.hero.oldx = g_stagedata.hero.x; g_stagedata.hero.oldy = g_stagedata.hero.y; g_stagedata.oldscrollx = g_stagedata.scrollx; metroid_1(); } if(g_stagedata.hero.x <= (g_stagedata.mapwidth == 0) * IMG_CHIPSIZE){ metroid(); g_stagedata.hero.x = g_stagedata.hero.oldx; g_stagedata.hero.y = g_stagedata.hero.oldy; g_stagedata.scrollx = g_stagedata.oldscrollx; } //ゲームクリア判定 //if (g_stagedata.hero.x >= (g_stagedata.mapwidth - 1) * IMG_CHIPSIZE){ // g_gamestate = GAME_CLEAR; // g_timerstart = g_lasttime; //タイマーセット //} } switch文を追加して数値と一致させたらその対応したマップデータステージに切り替わるようにしてるのですが… switch文のほうが原因みたいなんです…
メンテ

Page: 1 |

Re: ステージ選択からステージ画面へ ( No.1 )
名前:管理人 日時:2015/01/24 02:11

GameMain関数はゲームが始まったら毎フレーム実行される関数なので、 そこで kriby関数や metroid関数を呼ぶ switch 文を書いてしまったら 60分の1秒ごとに kriby関数や metroid関数が呼ばれてしまいます なので、こちらの switch処理 switch (g_stagedata.stagebunki) { case 1: metroid(); break; case 2: kriby(); break; default: break; } を、書くべき箇所は GameMain関数ではなく DrawGameMenu関数の g_gamestate に GAME_MAIN を代入している箇所になると思います //ステージ選択メニュー void DrawGameMenu(){ DrawGraph(0, 0, g_imghandles.menu, FALSE); if(CheckHitKey(KEY_INPUT_RIGHT)!=0){ DrawGraph(573, 220, g_imghandles.select, FALSE); int key1 = GetJoypadInputState(DX_INPUT_KEY_PAD1); if (IsAKeyTrigger(key1) == TRUE) { // この辺りと g_gamestate = GAME_MAIN; } } if(CheckHitKey(KEY_INPUT_LEFT)!=0){ DrawGraph(77, 220, g_imghandles.select, FALSE); int key1 = GetJoypadInputState(DX_INPUT_KEY_PAD1); if (IsAKeyTrigger(key1) == TRUE) { // この辺り g_gamestate = GAME_MAIN; } } } 頂いている手元のプログラムでは↑のようになっていますが、RONさんのお手元の最新版では DrawGameMenu 関数内で g_stagedata.stagebunki に値を代入しているのですよね? なので、恐らくこのような感じにすれば良いと思います・・・ //ステージ分岐関数 void StageBunki() { switch (g_stagedata.stagebunki) { case 1: metroid(); break; case 2: kriby(); break; default: break; } } //ステージ選択メニュー void DrawGameMenu(){ DrawGraph(0, 0, g_imghandles.menu, FALSE); if(CheckHitKey(KEY_INPUT_RIGHT)!=0){ DrawGraph(573, 220, g_imghandles.select, FALSE); int key1 = GetJoypadInputState(DX_INPUT_KEY_PAD1); if (IsAKeyTrigger(key1) == TRUE) { g_stagedata.stagebunki = 1; StageBunki(); g_gamestate = GAME_MAIN; } } if(CheckHitKey(KEY_INPUT_LEFT)!=0){ DrawGraph(77, 220, g_imghandles.select, FALSE); int key1 = GetJoypadInputState(DX_INPUT_KEY_PAD1); if (IsAKeyTrigger(key1) == TRUE) { g_stagedata.stagebunki = 2; StageBunki(); g_gamestate = GAME_MAIN; } } }
メンテ
Re: ステージ選択からステージ画面へ ( No.2 )
名前:RON 日時:2015/01/25 00:01

ありがとうございました!解決できました! 何度もお手数をおかけして大変申し訳ありませんm(_ _)m
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存