要求
- 随机生成数字
- 生成数字一段时间后数字消失
- 不用数组
- 每次产生的数字增加
- 判断用户输入的数字是否正确
创作思路与过程
- 第一步
确认需要用到的数据类型,然后由生成随机数易知开头输入
不能用数组所以需要用到for循环来积累数字
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
int main(){
int count = 3; //记录每次需要生成多少个随机数,放最前面方便修改
srand(time(NULL)); //设置随机数的种子
for(int i = 0; i < count; i++){
int temp2 = rand() % 9 + 1;//生成一个随机数
printf("%d ",temp2); //for循环用于输出多个随机数
}
printf("\n");//输出生成的随机数,让玩家知道自己要记的数字是啥
- 第二步
由数字需要等一段时间消失可知要让程序“沉睡”几分钟后刷新屏幕,此时需要运用到sleep函数执行休眠,运用cls清屏命令(见词条清屏命令,于是继续输入)
Ps也可靠for循环来拖延存在时间,根据结果来自行调整如用for(int i = 0; i < 10000000000/15*2; i++)来延时
Sleep(2000);// 延时2s
//for(int i = 0; i < 10000000000/15*2; i++);也可
system("cls");//刷新屏幕
- 第三步
因为要比较用户输入的与本身形成的数字是否相同,所以需要生成随机数的种子一样,所以需要在前面添加种子数据的保存并进行替换,如下操作
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
int main(){
int count = 3;
unsigned int seed = time(NULL); //添加的地方
srand(seed); //修改替换的地方
for(int i = 0; i < count; i++){
int temp2 = rand() % 9 + 1;
printf("%d ",temp2);
}
printf("\n");
4.第四步
将用户输入的数字与本身产生的数字进行比较,同理如下
srand(seed);//重新设定种子且需要和之前生成时的种子一样
int temp;//为接收用户输入的数据类型占位
printf("请输入:");
//用for循环一个一个接收用户输入
for(int i = 0; i < count; i++){
scanf("%d", &temp);//获取用户输入的答案
int old = rand() % 9 + 1;
//比较输入的和随机数是否相同
//另可以printf("old:%d\n", old);告诉玩家正确答案
if (temp != old){
printf("错误 退出!\n");
exit(EXIT_SUCCESS);
}
}
printf("正确!\n");
return 0;
}
5.第五步
每次产生的数字个数要增加,因此得知要给整个程序添加一个死循环,并在最后增加产生数组的个数,由此最终成品为
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
int main(){
int count = 3;
//添加一个while死循环
while(1){
unsigned int seed = time(NULL);
srand(seed);
for(int i = 0; i < count; i++){
int temp2 = rand() % 9 + 1;
printf("%d ",temp2);
}
printf("\n");
Sleep(2000);
system("cls");
int temp;
printf("请输入:");
srand(seed);
for(int i = 0; i < count; i++){
scanf("%d", &temp);
int old = rand() % 9 + 1;
if (temp != old){
printf("错误 退出!\n");
exit(EXIT_SUCCESS);
}
}
printf("正确!\n");
count++;//增加数字个数
}
return 0;
}
检验
因为gif太大无法导入qwq请自行验证
课后反思
为了使小游戏更完善和更具趣味性可以自行添加一些有趣的输出的句子等等