- 締切済み
C言語/ランダムbeepのプログラム方法
プログラムを書いていますが理解に苦しんでいます。 勉強し始めたばかりなのでかなりハードです。どなたか助けていただけませんか。 前に進めずにいます。 何をしたいかというと、マッチングゲームの中の一部でランダムなビープサウンドにあわせて反応して答えを返すというものです。答えられなければ点数がマイナスになります。 まず、数字をランダムに1から10の間で生成し、出た数字がある特定の数字だとビープサウンドが流れるという仕組みを考えたのですがどうでしょうか。 本当に切羽詰っています。助けてください。 // rand.cpp : Defines the entry point for the console application. // #include <stdafx.h> #include <stdlib.h> /*This header is for rand srand code)*/ int main (void) { unsigned int seed; int i,run=0; printf("Choose a level of difficulty"); scanf("%d", &seed); /*&seed is for "unsigned" int*/ printf("\n"); srand(seed); /*generate a number 0-10*/ i=1+(int) (10.0*rand()/(RAND_MAX+1.0)); /*if a number is 1, beep sound comes out*/ if(i==1) for(int j=0; j<i; j++) printf("\a"); return 0; }
- みんなの回答 (2)
- 専門家の回答
みんなの回答
>> beep音が鳴ってからプレイヤーが反応するまでの時間を計算するには >> 下記のようになります。 ビープ音が鳴ってからプレイヤーがキーを押下するまでの時間をミリ秒単位で計算します。結果は変数dtに格納されます。 ----------------------------- #include <stdafx.h> #include <stdlib.h> #include <time.h> #include <sys/time.h> #include <stdio.h> int main (void) { int i,j; struct timeval t0; struct timeval t1; int dt; srand(time(NULL)); /* 乱数の初期化 */ /*generate a number 0-10*/ i = rand() % 11; /*if a number is 1, beep sound comes out*/ if (i==1) { printf("\a"); /* BEEP */ gettimeofday(&t0, NULL); /* 計測開始 */ while (getchar()) ; /* キー押下を待つ */ gettimeofday(&t1, NULL); /* 計測終了 */ dt = (int)(t1.tv_usec - t0.tv_usec); } return 0; }
何となくコードが冗長なので、下記のようにしてみました。 ご参考まで。 --------------------------------------- #include <stdafx.h> #include <stdlib.h> /*This header is for rand srand code)*/ int main (void) { int i,j; srand(time(NULL)); //乱数の初期化 /*generate a number 0-10*/ i = rand() % 11; /*if a number is 1, beep sound comes out*/ if (i==1) printf("\a"); return 0; }
お礼
即回答して頂いて本当にありがとうございます。 もう1つ質問させて下さい。 1の時にbeep音が鳴るとすると、beep音に合わせてゲームプレイヤーが反応するようにし、プレイヤーの反応が遅かった場合(時間指定)、点数がマイナスになるというふうに設定しようと思っているのですが、beep音が鳴ってからプレイヤーが反応するまでの時間を計算するにはどのようにつなげればよいでしょうか? ゲーム内容は、赤、黄、緑のアルファベットに対して、指定されたキーを押すマッチングゲームです。 ランダムビープ音とともに、赤と画面に表示されそれに対して赤と指定されたキーを素早く押す。シンプルなゲームです。 宜しくお願いいたします。
補足
#include <stdlib.h> #include "time.h" int i; /*generate a number 0-100000*/ //int limit =( unsigned int seed; //int n; srand(seed); i = rand() % 1000000; /*if a number is 1, a beep sound comes out*/ //if (i==66666); for(i=0; i<1; i++) printf("\a"); 回答いただいた方法で走らせて見たのですがエラーがでてそれを理解できなかったのでまた新たにコード書いてみました。 ランダムなbeep音が出ないため、iの数字も大きなものに変えてみました。 //にしているのはそれがあると走らなかったので(何故か不明)、またはいろいろトライしてみた結果です。 私が一番ほしいのは、beepサウンドがランダムに5回でるってことだけなんです。 タイミングは今回は使わないことにしました。 即回答お願いいたします。