鱼C论坛

 找回密码
 立即注册
查看: 2455|回复: 2

一个记忆游戏需要涉及到STDBOOL程序设计到随即数据和读秒有点不懂

[复制链接]
发表于 2012-1-12 01:35:28 | 显示全部楼层 |阅读模式
5鱼币
/* Program 4.12 Simple Simon */
#include <stdio.h>                     /* For input and output   */
#include <ctype.h>                     /* For toupper() function */
#include <stdbool.h>                   /* For bool, true, false  */
#include <stdlib.h>                    /* For rand() and srand() */
#include <time.h>                      /* For time() and clock() */
int main(void)
{
  /* Records if another game is to be played */
  char another_game = 'Y';
  /* true if correct sequence entered, false otherwise */
  int correct = false;
  /* Number of sequences entered successfully          */
  int counter = 0;
  int sequence_length = 0;     /* Number of digits in a sequence        */
  time_t seed = 0;             /* Seed value for random number sequence */
  int number = 0;              /* Stores an input digit                 */
  time_t now = 0;            /* Stores current time - seed for random values  */
  int time_taken = 0;        /* Time taken for game in seconds                */
  /* Describe how the game is played */
  printf("\nTo play Simple Simon, ");
  printf("watch the screen for a sequence of digits.");
  printf("\nWatch carefully, as the digits are only displayed"
                                                " for a second! ");
  printf("\nThe computer will remove them, and then prompt you ");
  printf("to enter the same sequence.");
  printf("\nWhen you do, you must put spaces between the digits. \n");
  printf("\nGood Luck!\nPress Enter to play\n");
  scanf("%c", &another_game);
  /* One outer loop iteration is one game */
  do
  {
    correct = true;         /* By default indicates correct sequence entered */
    counter = 0;            /* Initialize count of number of successful tries*/
    sequence_length = 2;    /* Initial length of a digit sequence            */
    time_taken = clock();  /* Record current time at start of game       */
    /* Inner loop continues as long as sequences are entered correctly */
    while(correct)
    {
      /* On every third successful try, increase the sequence length */
      sequence_length += counter++%3 == 0;
      /* Set seed to be the number of seconds since Jan 1,1970  */
      seed = time(NULL);
      now = clock();                  /* record start time for sequence  */   这里开始之后有点看不懂 程序的意思就是让程序停壹秒给用户记忆,然后删除程序 让用户输入    这里我很不理解,这个程序不是让渡1秒吗但是这里并没有明确1秒?而且删除在哪里?


      /* Generate a sequence of numbers and display the number */
      srand((unsigned int)seed);      /* Initialize the random sequence */
      for(int i = 1; i <= sequence_length; i++)
        printf("%d ", rand() % 10);    /* Output a random digit          */
      /* Wait one second */
      for( ;clock() - now < CLOCKS_PER_SEC; );
      /* Now overwrite the digit sequence */
      printf("\r");                   /* go to beginning of the line */
      for(int i = 1; i <= sequence_length; i++)
        printf("  ");                 /* Output two spaces */
      if(counter == 1)           /* Only output message for the first try */
        printf("\nNow you enter the sequence  - don't forget"
                                               " the spaces\n");
      else
        printf("\r");                /* Back to the beginning of the line */
      /* Check the input sequence of digits against the original */
      srand((unsigned int)seed);     /* Restart the random sequence    */
      for(int i = 1; i <= sequence_length; i++)
      {
        scanf("%d", &number);         /* Read an input number         */
        if(number != rand() % 10)     /* Compare against random digit */
        {
          correct = false;            /* Incorrect entry             */
          break;                      /* No need to check further... */
        }
      }
      printf("%s\n", correct? "Correct!" : "Wrong!");
    }
    /* Calculate total time to play the game in seconds)*/
    time_taken = (clock() - time_taken) / CLOCKS_PER_SEC;
    /* Output the game score */
    printf("\n\n Your score is %d", --counter * 100 / time_taken);
    fflush(stdin);
    /* Check if new game required*/
    printf("\nDo you want to play again (y/n)? ");
    scanf("%c", &another_game);
  }while(toupper(another_game) == 'Y');
  return 0;
}

最佳答案

查看完整内容

clock()求出当前的时间,你看后面: /* Wait one second */ for( ;clock() - now < CLOCKS_PER_SEC; ); 这个循环只有当前时间-now=某个数的时候才退出。就是在这个循环里实现延时的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-1-12 01:35:29 | 显示全部楼层
clock()求出当前的时间,你看后面:
  /* Wait one second */
      for( ;clock() - now < CLOCKS_PER_SEC; );
这个循环只有当前时间-now=某个数的时候才退出。就是在这个循环里实现延时的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-1-17 18:26:44 | 显示全部楼层
懂啊。。。。纠结了半天 一语惊醒我。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-12 12:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表