コンソール入力と時間待ち

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
にゃあ

コンソール入力と時間待ち

#1

投稿記事 by にゃあ » 11年前

ゲームの作成をしており、5秒後に動作をするプログラムを作成していたのですが
5秒以内に特定文字が入力されると他の動作をするプログラムに変更したいのですが
どのようにすればよいのでしょうか

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: コンソール入力と時間待ち

#2

投稿記事 by みけCAT » 11年前

にゃあ さんが書きました:どのようにすればよいのでしょうか
そのようにプログラムを書き換えればよいと思います。
心配なら、前のプログラムのバックアップを取っておくとさらに良いでしょう。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
Hiragi(GKUTH)
記事: 167
登録日時: 14年前
住所: 大阪府
連絡を取る:

Re: コンソール入力と時間待ち

#3

投稿記事 by Hiragi(GKUTH) » 11年前

ゲーム開始 -> 5秒待機 -> 次の動作へ を
ゲーム開始 -> 5秒待機 -> 特定の文字が入力されるまで待機 -> 次の動作へ

と変更すればいいと思いますが具体的にどこがどのようにわからないのか教えてくれないと回答の
正確性も落ちますし抽象的なモノになります。
とりあえず現時点でのソースコードを貼りましょう。
だいがくせい!

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: コンソール入力と時間待ち

#4

投稿記事 by みけCAT » 11年前

Hiragi(GKUTH) さんが書きました:ゲーム開始 -> 5秒待機 -> 次の動作へ を
ゲーム開始 -> 5秒待機 -> 特定の文字が入力されるまで待機 -> 次の動作へ

と変更すればいいと思いますが
それは最初の質問と合っていない気がします。
このような感じではないですか?
hoge_chart.png
フローチャートカッコカリ
hoge_chart.png (4.27 KiB) 閲覧数: 3849 回
もしくは、このような感じでしょうか?
hoge_chart2.png
フローチャートカッコカリ(2)
hoge_chart2.png (4.3 KiB) 閲覧数: 3849 回
ただ、今回のタイトルは「コンソール入力」を含んでいるので、
「普通」の(DXライブラリで作るような)ゲームに使う手法は通用しないかもしれません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

にゃあ

Re: コンソール入力と時間待ち

#5

投稿記事 by にゃあ » 11年前

みけ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;
}

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: コンソール入力と時間待ち

#6

投稿記事 by みけCAT » 11年前

まずは5000ミリ秒一気にSleepしないようにするといいかもしれません。
「5秒経過したか」の判定は、「(今の時刻)-(待機を開始してからの時刻)>=5000 [ms]」という式で判定できます。
ここで利用する時刻は、Windows環境ならtimeGetTime()やGetTickCount()で、
gccならgettimeofday()で得られる値を加工して求めることができます。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

にゃあ

Re: コンソール入力と時間待ち

#7

投稿記事 by にゃあ » 11年前

なるほどです。
5000ミリ秒経過したかの判定は出来ました。
ありがとうございます。

閉鎖

“C言語何でも質問掲示板” へ戻る