経歴としてはまだまだ浅いですが、各地のサイトを見て回り、
現在、下記のような、簡易的な基盤プログラムを作ってみました。
「タイプ数」別で単語の「ローマ字」を代入した文字列を、
main(または他の関数)で1文字ずつ入力、認識させるためのコードです。
今このゲームは、すべての処理をmainでやっています。
つきましてはここに、
① 更に「タイプ数別の単語を選ぶ処理」のパターンを増やすために、
この一連の作業の短くできるところを短く関数などにまとめる。
② ①に乗っ取り、「タイプ数」のパターンも増やす。 タイプ数が7回の単語、10回の単語など。
③ かかった時間の表示を、「小数点第2位」を四捨五入。「小数点第1位」まで表示させる。
というの仕様やコードの改変でゲーム性を出してみようと思います。
ちなみにコードのエラーは今のところなく、正常稼働します。
何か上記の3つを作るためのアドバイスや参考のコード、あるいは
このコードじゃ上の3つの実現は難しいから、一部を書き直した方がいい。などの提案でも
良いので、ご助言をお願いします。
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#include <string.h>
//タイプ数が5回の文字列を出力する関数
int main(void)
{
int wr5, typed;
int i, j;
char w5[6];
int falsetype = 0;
printf("出てくるローマ字をタイプせよ!\n");
printf("☆PRESS ANY KEY TO START☆\n\n");
_getch();
clock_t start, end;
start = clock();
for(i = 1; i <= 5; i++) {
srand((unsigned)time(NULL));
wr5 = (rand() % 5); //5パターン
switch(wr5){
case 0:
strcpy(w5, "iruka"); //イルカ
printf("イルカ\n");
break;
case 1:
strcpy(w5, "saito"); //サイト
printf("サイト\n");
break;
case 2:
strcpy(w5, "manto"); //マント
printf("マント\n");
break;
case 3:
strcpy(w5, "tanki"); //短期
printf("短期\n");
break;
case 4:
strcpy(w5, "yuusi"); //勇志
printf("勇志\n");
break;
}
printf("%s\n",w5);
for(j = 0; j <= 4; j++){
utinaosi: //gotoのやり直し処理後の開始地点
typed = _getch();
if(typed == w5[j]) { //タイプされた文字を正しいものと認識したら、
_putch(w5[j]); //タイプした文字を画面に出力する。
} else { //タイプされた文字を違うものと認識したら、
printf("×\b");
falsetype = falsetype + 1;
goto utinaosi; //gotoでやり直させる。
}
}
printf("\n○OK\n\n");
}
end = clock();
printf("かかった時間: %f秒\n", (double)(end - start) / CLOCKS_PER_SEC);
printf("ミスタイプ %d回\n",falsetype);
_getch();
return 0;
}