您的位置:首页 > 编程语言 > C语言/C++

C++ 如何使用时间函数(2)--记忆游戏

2012-11-24 14:33 405 查看
这里提供一个 记忆游戏 类似于记单词

#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 */

/* 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(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(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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: