スピード計算ゲーム

2016-01-20 (水) 23:39:44 (1391d) | Topic path: Top / 授業 / C言語基礎 / スピード計算ゲーム

時間の計測

time.h の time関数は、1970年1月1日0時0分からの経過時間(秒)をlong型で返します。

時間を計り始めた時刻を t0、時間を計り終えた時刻を t1 とすると、t1 から t0 を引くことで経過時間(秒)を求めることができます(プログラム1)。

#include <time.h>

int main(void) {
  long t0 = time(NULL);

  int i;
  for (i = 0; i < 1000000; i++ ) {}

  long t1 = time(NULL);
  long t = t1 - t0;
  printf("%ds\n", t);

  return 0;
}

時間計測機能付き計算ゲーム

以前に作成した計算ゲームに、時間計測の機能をつけてゲームを面白くしましょう。 10問正解するまでの時間を計測します。

/*
 *  時間計測機能付き計算ゲーム
 */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void) {
  srand((unsigned int) time(NULL));

  long t = time(NULL);  // 開始時刻
  int  s = 0;           // 得点
  while (s < 10) {
    int i = rand() % 99 + 1;
    int j = rand() % 99 + 1;

    printf("第%d問: %d + %d = \n", s + 1, i, j);
    int a;
    scanf("%d", &a);

    if (a == i + j) {
      printf("正解!\n");
      s++;
    } else {
      printf("間違い!\n");
    }
  }
  printf("時間: %d秒", time(NULL) - t);

  return 0;
}

スピード計算ゲーム

次に、制限時間内に何問正解できるかを競うゲームにしてみましょう。

/*
 *  スピード計算ゲーム
 */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void) {
  srand((unsigned int) time(NULL));

  long limit = 30;      // 制限時間(秒)
  printf("制限時間: %d秒\n", limit);

  long t = time(NULL);  // 開始時刻
  int s = 0;            // 得点
  while (time(NULL) < t + limit) {
    int i = rand() % 99 + 1;
    int j = rand() % 99 + 1;

    printf("第%d問: %d + %d = \n", s + 1, i, j);
    int a;
    scanf("%d", &a);

    if (time(NULL) > t + limit) { break; }  // 時間切れ

    if (a == i + j) {
      printf("正解!\n");
      s++;
    } else {
      printf("間違い!\n");
    }
  }
  printf("%d問正解", s);

  return 0;
}
トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS