ゲームの作成をしており、5秒後に動作をするプログラムを作成していたのですが
5秒以内に特定文字が入力されると他の動作をするプログラムに変更したいのですが
どのようにすればよいのでしょうか
コンソール入力と時間待ち
Re: コンソール入力と時間待ち
そのようにプログラムを書き換えればよいと思います。にゃあ さんが書きました:どのようにすればよいのでしょうか
心配なら、前のプログラムのバックアップを取っておくとさらに良いでしょう。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
- Hiragi(GKUTH)
- 記事: 167
- 登録日時: 14年前
- 住所: 大阪府
- 連絡を取る:
Re: コンソール入力と時間待ち
ゲーム開始 -> 5秒待機 -> 次の動作へ を
ゲーム開始 -> 5秒待機 -> 特定の文字が入力されるまで待機 -> 次の動作へ
と変更すればいいと思いますが具体的にどこがどのようにわからないのか教えてくれないと回答の
正確性も落ちますし抽象的なモノになります。
とりあえず現時点でのソースコードを貼りましょう。
ゲーム開始 -> 5秒待機 -> 特定の文字が入力されるまで待機 -> 次の動作へ
と変更すればいいと思いますが具体的にどこがどのようにわからないのか教えてくれないと回答の
正確性も落ちますし抽象的なモノになります。
とりあえず現時点でのソースコードを貼りましょう。
だいがくせい!
Re: コンソール入力と時間待ち
それは最初の質問と合っていない気がします。Hiragi(GKUTH) さんが書きました:ゲーム開始 -> 5秒待機 -> 次の動作へ を
ゲーム開始 -> 5秒待機 -> 特定の文字が入力されるまで待機 -> 次の動作へ
と変更すればいいと思いますが
このような感じではないですか? もしくは、このような感じでしょうか? ただ、今回のタイトルは「コンソール入力」を含んでいるので、
「普通」の(DXライブラリで作るような)ゲームに使う手法は通用しないかもしれません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: コンソール入力と時間待ち
みけCATさんの上のフローチャートのような形にプログラムを修正したいです。
ソースですが以下の様な形です。
ソースですが以下の様な形です。
int game(game_result result, int field[ROW][COL]){
char c;
char re_flag;
int re;
int choice[SIZE][SIZE];
int b_field[ROW][COL];
int error;
printf("ゲームスタートは'R'を押して下さい。\n");
do{
c = getch();
}while(c != 'R');
re = -1;
error = -1;
while(error == -1){
memcpy(b_field,field,sizeof(field));
system("cls");
select_block(choice);
error = check(field, choice);
show_field(field, result);
Sleep(5000);
}
printf("もう一度やる場合は'R'を押して下さい。\n");
re_flag = getch();
if(re_flag == 'R'){
re = 1;
}else{
re = 2;
}
return re;
}
Re: コンソール入力と時間待ち
まずは5000ミリ秒一気にSleepしないようにするといいかもしれません。
「5秒経過したか」の判定は、「(今の時刻)-(待機を開始してからの時刻)>=5000 [ms]」という式で判定できます。
ここで利用する時刻は、Windows環境ならtimeGetTime()やGetTickCount()で、
gccならgettimeofday()で得られる値を加工して求めることができます。
「5秒経過したか」の判定は、「(今の時刻)-(待機を開始してからの時刻)>=5000 [ms]」という式で判定できます。
ここで利用する時刻は、Windows環境ならtimeGetTime()やGetTickCount()で、
gccならgettimeofday()で得られる値を加工して求めることができます。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)