トップページ > 記事閲覧
コンテニュー後の描画について
名前:デデデデンネ 日時: 2020/01/20 06:30

現在浅い知識ながらシューティングゲームを作っていて、敵を倒すとゲームクリアの文字が表示されRキーでコンテニューというシステムにしたのですが、 コンテニューは無事にできてもコンテニュー後もう一度敵を倒した際の爆発エフェクトが描画されなくて困ってます。どうしてなのでしょうか。 間違いがわからず全文貼ってしまったので時間に余裕のある方ご教授願いたいです。 #include "DxLib.h" #define SCROLL_SPEED 2 int p, px, py,pw,ph,pdf; int e, ex, ey, ew, eh, emuki,edf,sdc; int sf[10], sx[10], sy[10], sw, sh, sg; int esf, esx, esy, esw, esh, esg, esc; int b,bc,bgf,count; int hx, hy; int haikei; int i; enum{TITLE,MAIN,CLEAR,OVER}status=TITLE; //タイトル画面 void gameTitle() { LoadGraphScreen(0, 0, "haikeikari.png", FALSE); if (CheckHitKey(KEY_INPUT_RETURN)) { status = MAIN; } edf = 0; pdf = 0; bgf = 0; DrawString(225, 225, "PRESS ENTER TO START",GetColor(255,255,255)); } //メイン画面 void gameMain() { if (edf == 1) { status = CLEAR; } if (pdf == 1) { status = OVER; } } //クリア画面 void gameClear() { DrawString(280, 225, "GAME CLEAR", GetColor(255, 255, 255)); DrawString(240, 245, "PRESS R TO CONTINUE", GetColor(255, 255, 255)); if (CheckHitKey(KEY_INPUT_R)) { status = TITLE; } } //ゲームオーバー画面 void gameOver() { DrawString(279, 225, "GAME OVER", GetColor(255, 255, 255)); DrawString(240, 245, "PRESS R TO CONTINUE", GetColor(255, 255, 255)); if (CheckHitKey(KEY_INPUT_R)) { status = TITLE; } } int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { ChangeWindowMode(TRUE); DxLib_Init(); SetDrawScreen(DX_SCREEN_BACK); //各変数画像設定 p = LoadGraph("player1.png"); sg = LoadGraph("pshot.png"); e = LoadGraph("enemy1.png"); b = LoadGraph("effe.png"); haikei = LoadGraph("haikeikari.png"); esg = LoadGraph("eshot.png"); //背景の初期値設定 hx = 0; hy = 0; //自機変数の初期値設定 px = 288; py = 400; pdf = 0; GetGraphSize(p, &pw, &ph); //敵変数の初期値設定 ex = 320; ey = 74; emuki = 1; edf = 0; GetGraphSize(e, &ew, &eh); //自弾変数の初期値設定 GetGraphSize(sg, &sw, &sh); for (i = 0; i < 10; i++) { sf[i] = 0; } //敵弾変数の初期値設定 GetGraphSize(esg, &esw, &esh); esf = 0; esc = 0; //爆発エフェクトの初期設定 bc = 255; bgf = 0; while (!ProcessMessage()) { ClearDrawScreen(); //背景ループ { DrawGraph(hx, hy, haikei, FALSE); DrawGraph(hx, hy - 480, haikei, FALSE); if (hy == 480)hy = 0; hy += SCROLL_SPEED; } //自機の操作設定 { if (CheckHitKey(KEY_INPUT_LEFT)) px -= 4; { if (px < 0 - 64 + 52)px = 0 - 64 + 52; } if (CheckHitKey(KEY_INPUT_RIGHT)) px += 4; { if (px > 640 - 52)px = 640 - 52; } if (CheckHitKey(KEY_INPUT_UP)) py -= 4; { if (py < 0)py = 0; } if (CheckHitKey(KEY_INPUT_DOWN)) py += 4; { if (py > 480 - 64)py = 480 - 64; } if (CheckHitKey(KEY_INPUT_SPACE)) { for (i = 0; i < 10; i++) { if (sf[i] == 0) { sx[i] = px + 28; sy[i] = py; sf[i] = 1; break; } } } if (pdf == 1) { bgf = 1; if (bgf == 1) { bc = 255 - 255 / 30 * count; ++count; SetDrawBlendMode(DX_BLENDMODE_ALPHA, bc); DrawGraph(px, py, b, TRUE); SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 0); bgf = 0; } } else { for (i = 0; i < 10; i++) { if (sf[i] == 1) { sy[i] -= 8; if (sy[i] < 0 - 14)sf[i] = 0; } DrawGraph(sx[i], sy[i], sg, FALSE); } DrawGraph(px, py, p, TRUE); } } //敵プログラム { if (edf == 1) { bgf = 1; if (bgf == 1) { bc = 255 - 255 / 30 * count; ++count; SetDrawBlendMode(DX_BLENDMODE_ALPHA, bc); DrawGraph(ex, ey, b, TRUE); SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 0); bgf = 0; } } else { if (emuki == 1)ex += 4; if (emuki == 0)ex -= 4; if (ex > 640 - 64) { ex = 640 - 64; emuki = 0; } if (ex < 0) { ex = 0; emuki = 1; } DrawGraph(ex, ey, e, TRUE); esc++; if (esc == 60) { if (esf == 0) { esx = ex + ew / 2 - esw / 2; esy = ey + eh / 2 - esh / 2; esf = 1; } esc = 0; } } if (esf == 1) { esy += 8; if (esy > 480)esf = 0; DrawGraph(esx, esy, esg, TRUE); } } //自機の当たり判定 if (esf == 1) { if (((esx > px&& esx < px + pw) || (px > esx&& px < esx + esw)) && ((esy > py&& esy < py + ph) || (py > esy&& py < esy + esh))) { esf = 0; pdf = 1; } } //敵の当たり判定 for (i = 0; i < 10; i++) { if (sf[i] == 1) { if (((sx[i] > ex&& sx[i] < ex + ew) || (ex > sx[i] && ex < sx[i] + sw)) && ((sy[i] > ey&& sy[i] < ey + eh) || (ey > sy[i] && ey < sy[i] + sh))) { sf[i] = 0; edf = 1; } } } switch (status) { case TITLE:gameTitle(); break; case MAIN:gameMain(); break; case CLEAR:gameClear(); break; case OVER:gameOver(); break; } ScreenFlip(); } DxLib_End(); return 0; }
メンテ

Page: 1 |

Re: コンテニュー後の描画について ( No.1 )
名前:紺帽子 日時:2020/01/20 22:02

ざっと見た限りだと変数countをリセットする処理が見当たらないです。
メンテ

Page: 1 |

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

   クッキー保存