概要
現在、Dxライブラリを用いてゲームを制作しております。
ある地点に到着した際に、ゴールとしたいのですが、特定の地点の座標の取得がうまくできていない状況となっております。
コード
C/C++
1#include "gamemain.h" 2 3char g_mapdata[MAP_HEIGHT][MAP_WIDTH + 1]; 4StageData g_stagedata; 5char goal; 6 7 8void GameMain() { 9 // アニメーションカウンタ 10 g_stagedata.animcounter++; 11 g_stagedata.animcounter &= MAXINT; 12 int ac = g_stagedata.animcounter / ANIM_RATE; 13 int eac = g_stagedata.animcounter / ANIM_RATE_CANNON; 14 int bac = g_stagedata.animcounter / ANIM_RATE_BOSS1; 15 ・ 16 ・ 17 ・ 18 (中略) 19 // 次のステージへ 20 if (g_stagedata.hero.x >= (g_stagedata.mapwidth - 1) * IMG_CHIPSIZE) { 21 g_gamestate = NEXT_STAGE; 22 g_timerstart = g_lasttime; 23 } 24 25 // ゲームクリア判定(未完成) 26 // IMG_CHIPSIZEは定数の50 27 if (g_stagedata.hero.x >= (goal * IMG_CHIPSIZE)) { 28 g_gamestate = GAME_CLEAR; 29 g_timerstart = g_lasttime; // タイマーセット 30 } 31} 32 33void DrawMap() { 34 int sc = (int)(g_stagedata.scrollx / IMG_CHIPSIZE); 35 int shiftx = (int)g_stagedata.scrollx % IMG_CHIPSIZE; 36 for (int y = 0; y < MAP_HEIGHT; y++) { 37 for (int x = 0; x < SCR_WIDTH + 1; x++) { 38 if (x + sc >= g_stagedata.mapwidth) break; 39 // ブロック1 40 if (g_mapdata[y][x + sc] == '1') { 41 DrawGraph(x * IMG_CHIPSIZE - shiftx, y * IMG_CHIPSIZE, 42 g_imghandles.block, TRUE); 43 ・ 44 ・ 45 ・ 46 (中略) 47 // ブロック4(ゴール) 48 if (g_mapdata[y][x + sc] == '4') { 49 DrawGraph(x * IMG_CHIPSIZE - shiftx, y * IMG_CHIPSIZE, 50 g_imghandles.goal, TRUE); 51 goal = g_mapdata[y - 1][x + sc]; 52 } 53 } 54 } 55}
発生している問題
上記のコードより、「ブロック4」の上に操作キャラ(hero)が来た時、ゲームステータス(g_gamestate)をゲームクリア(GAME_CLEAR)としたい(ゲームクリア判定)のですが、なかなかうまくできません。次のステージへ行く処理はできているため、同じような処理でゲームクリアにできると考えていたのですが、うまくできませんでした。もし何かご存じのかたがいらっしゃいましたら、アドバイスなどでも構いませんので、ご助言いただけたら幸いです。
補足
ステージはテキストファイルにて、作成をしております。
値が「0」であれば何もない、「1」ならばブロック1を描画、そして「4」ならばブロック4(ゴール)を描画するような処理にしております。
ただ、ゴールといっても、ただ他のブロックと色が違うだけで、ブロック自体に特に処理は入れておりません。
回答1件
あなたの回答
tips
プレビュー