現在タイピングゲームを作っているのですが、中途半端な知識しかないため、序盤で詰まってしまいました。
現在:特定の文字列(haro-)を問題文として、キーボード入力した文字と1文字ずつ正誤を判定し、その結果を出力しようとしています。
下記のように作ったのですが、実行すると入力に関係なく一気に×××××○と出力されてしまいます。
また、キーボード入力でなくクリックしただけでも出力されます。
色々間違っているところがあると思いますが、アドバイスよろしくお願いします。
#include "DxLib.h"
#include <string>
int Cr;
void Judge (char Seikai[30], int n){
char SeikaiA;
int i;
char Nyuryoku;
char Nyuryoku_end[30];
for(i=0; i<=n; i++)
{
SeikaiA = Seikai[i];
Nyuryoku = GetInputChar(TRUE); //文字入力バッファから1文字取得
while(Nyuryoku != 0 && Nyuryoku>=CTRL_CODE_CMP);
{
if(SeikaiA == Nyuryoku)
{
DrawString(10*i,10, "○", Cr);
Nyuryoku_end[i] = Nyuryoku;
}
else DrawString(10*i, 10, "×", Cr);
continue;
}
}
Nyuryoku_end[n+1]='\0';
DrawString(300,300,Nyuryoku_end, Cr);
return;
}
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
int n;
char Nyuryoku;
char Seikai[30];
char Nyuryoku_end[30]= {};
ChangeWindowMode (TRUE);
SetFontSize( 20 ) ; //フォントサイズ指定
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
Cr = GetColor( 255 , 255 , 255 ) ; // 白色の値を取得
DrawString( 250 , 240 - 32 , "キーを押すとスタートします", Cr ); // トップメッセージ
strcpy(Seikai, "haro-");//Seikaiへ抽出
n = strlen(Seikai);//文字数取得
WaitKey() ; // キーの入力待ち
ClearDrawScreen() ;
ClearInputCharBuf() ;
DrawString( 240, 50 , Seikai, Cr); //出題する文字列を描画
//ESCキーまたはエラー発生で強制終了
while( !ProcessMessage() && ( CheckHitKey( KEY_INPUT_ESCAPE) == 0))
{
Judge(Seikai, n);
}
WaitKey();
//↓終了処理
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
ちなみに、今は文字列固定ですが、最終的には問題文を入れたファイルを作り、そこからランダムに抽出して出題させようと思っています。