トップページ > 記事閲覧
次の問題がでない
名前:ドリルドリルドリル 日時: 2018/04/02 13:27

またまた質問すいません! 開発環境はVidual Stdio 2017でDXライブラリです 今、簡単な計算ゲーム(四則演算)を作っているのですが、わからないところがでてきました countという変数を作り、初期値を1にし、数値を入力したら次の問題を出題する。というのをやりたいのですが、それができません Enterをおすと、countが40を超えるまで入力できなくなってしまします・・・ プログラムはこんな感じです <Diff.cpp> #include "Diff.h" #include "SceneMgr.h" #include "DxLib.h" #include "Keyboard.h" void Diff_Update() { if (CheckHitKey(KEY_INPUT_ESCAPE) != 0) { SceneMgr_ChangeScene(eScene_TAITLE); } } void Diff_Draw() { int count = 1; char String[256]; int InputHandle; int x = GetRand(200) + 1; int y = GetRand(150) + 1; InputHandle = MakeKeyInput(4, FALSE, FALSE, TRUE); // 作成したキー入力ハンドルをアクティブにする SetActiveKeyInput(InputHandle); int StartTime; int hour, minute, second; StartTime = GetNowCount(); while(!ProcessMessage() && count <= 40) { if (CheckHitKey(KEY_INPUT_ESCAPE) != 0) break; if (CheckKeyInput(InputHandle) != 0) count++; second = (GetNowCount() - StartTime) / 1000; minute = second / 60; second %= 60; hour = minute / 60; minute %= 60; ClearDrawScreen(); SetFontSize(50); SetFontThickness(50); ChangeFont("MS明朝"); ChangeFontType(DX_FONTTYPE_ANTIALIASING_EDGE); DrawLine(0, 300, 640, 300, GetColor(0, 255, 0)); DrawLine(0, 350, 640, 350, GetColor(0, 255, 0)); DrawLine(150, 300, 150, 480, GetColor(0, 255, 0)); DrawLine(470, 300, 470, 480, GetColor(0, 255, 0)); SetFontSize(15); SetFontThickness(15); ChangeFont("メイリオ"); ChangeFontType(DX_FONTTYPE_ANTIALIASING_EDGE); DrawString(20, 320, "Playerの入力", GetColor(255, 255, 255)); DrawString(500, 320, "Enterで決定", GetColor(255, 255, 255)); SetFontSize(15); SetFontThickness(15); ChangeFont("メイリオ"); ChangeFontType(DX_FONTTYPE_ANTIALIASING_EDGE); DrawString(500, 380, "Escキー", GetColor(255, 255, 255)); DrawString(490, 440, "タイトルに戻る", GetColor(255, 255, 255)); DrawString(220, 360, "経過時間", GetColor(255, 0, 0)); SetFontSize(90); SetFontThickness(90); ChangeFont("MS明朝"); ChangeFontType(DX_FONTTYPE_ANTIALIASING_EDGE); DrawFormatString(120, 110, GetColor(255, 255, 0), "%d + %d", x, y); SetFontSize(50); SetFontThickness(50); ChangeFont("MS明朝"); ChangeFontType(DX_FONTTYPE_ANTIALIASING_EDGE); DrawFormatString(0, 400, GetColor(255, 255, 255), "%d", count); DrawFormatString(60, 410, GetColor(255, 255, 255), "/", count); DrawFormatString(80, 420, GetColor(255, 255, 255), "40"); DrawFormatString(220, 400, GetColor(255, 155, 90), "%d:%02d:%02d", hour, minute, second); SetFontSize(30); SetFontThickness(30); ChangeFont("MS明朝"); ChangeFontType(DX_FONTTYPE_ANTIALIASING_EDGE); DrawKeyInputModeString(640, 480); DrawKeyInputString(320, 310, InputHandle); ScreenFlip(); } GetKeyInputString(String, InputHandle); DeleteKeyInput(InputHandle); }
メンテ

Page: 1 |

Re: 次の問題がでない ( No.1 )
名前:C-- 日時:2018/04/02 20:08

「数値を入力したら次の問題を出題する」ということだけを解決したいのであれば if (CheckKeyInput(InputHandle) != 0) count++; の部分を if (CheckKeyInput(InputHandle) == 1) { DeleteKeyInput(InputHandle); InputHandle = MakeKeyInput(4, FALSE, FALSE, TRUE); SetActiveKeyInput(InputHandle); x = GetRand(200) + 1; y = GetRand(150) + 1; count++; } のように変更すればできます。ただし、 ・OK/NGの判定部分がない (GetKeyInputString(String, InputHandle) がループの外にある) ・41問目が一瞬見える など、変更や修正すべき点は多いと思います。
メンテ
Re: 次の問題がでない ( No.2 )
名前:ドリルドリルドリル 日時:2018/04/02 23:23

ありがとうございます! 数値を入力したら次の問題がでないという問題は解決しました! たしかに、OK/NGの判定がないのと、41が一瞬だけ見えてしまっています しばらくは自分でもう少し頑張ってみます!
メンテ

Page: 1 |

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

   クッキー保存