开始制作一个熟悉循环的小游戏-猜数字游戏!
建立基本思路。
1.游戏首先需要一个游戏页面让玩家选择故使用函数menu;
menu() { printf("******************\n"); printf("***1.开始游戏******\n"); printf("***0.退出游戏******\n"); printf("******************\n"); }
2.出现游戏页面需要玩家需要进行选择,那么一个游戏你需要玩很多次,那么为了满足条件,需要使用循环,那么你既需要使用循环,又需要先让循环运行一次,进行选择玩法。综上,我们就需要使用do-while循环。
#define _CRT_SECURE_NO_WARNINGS int main() { int input = 0;//需要使用一个变量接受玩家的选择 do { menu(); printf("请选择->"); scanf("%d", &input); } while (input); return 0; }
玩家输入数字,我们就需要根据数字,出现数字对应的玩法。此时应该考虑到,一种数字对应一种玩法,我们就可以使用switch case。
switch (input) { case 1://与菜单对应 game();//游戏函数 break;//记得加break 不然会导致循环继续运行下去 case 0: printf("已退出!\n"); break; default: printf("输入有误 请重新输入!\n");//如果输入其他数字,提醒玩家重新输入 break; }
准备工作已经全部完成,现在就是完成game()。
生成一个随机数
//在main函数中生成时间戳 srand((unsigned int)time (NULL))//注意引头文件 <time.h> //在game()函数中生成随机值(1-100) int num=rand()%100+1;
定义一个变量与随机数进行比较 并反馈猜测大了或者小了
while (num1!=num) { printf("请猜一个(1-100)以内的任意数字:"); scanf("%d", &num1); if (num < num1) { printf("猜大了\n"); } else if (num > num1) { printf("猜小了\n"); } } printf("恭喜您猜对了\n");
代码如下:
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <time.h> void menu() { printf("*******************\r\n"); printf("***1.开始游戏******\r\n"); printf("***0.退出游戏******\r\n"); printf("*******************\r\n"); } void game() { int num = rand() % 100 + 1;//生成随机数(1-100) int num1 = 0; while (1) { printf("请猜一个(1-100)以内的任意数字:"); scanf("%d", &num1); if (num < num1) { printf("猜大了\n"); } else if (num > num1) { printf("猜小了\n"); } else { printf("恭喜您猜对了\n"); } } } int main() { int input = 0; srand((unsigned int)time(NULL)); do { menu(); printf("请选择->"); scanf("%d", &input); switch (input) { case 1: game(); break; case 0: printf("退出\r\n"); break; default: printf("输入有误!\r\n"); break; } } while (input); return 0; }
升级版(限制次数)
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <time.h> menu() { printf("*******************\r\n"); printf("***1.开始游戏******\r\n"); printf("***0.退出游戏******\r\n"); printf("*******************\r\n"); } game() { int num = rand() % 100 + 1;//生成随机数(1-100) int num1 = 0; int count = 5;//设定次数 while (count) { printf("你还有%d次机会\n",count); count--;//循环一次 count-- printf("请猜一个(1-100)以内的任意数字:"); scanf("%d", &num1); if (num < num1) { printf("猜大了\n"); } else if (num > num1) { printf("猜小了\n"); } else { printf("恭喜您猜对了\n"); } } if (count == 0) { printf("次数已耗尽,正确答案是%d\n",num);//没有猜对,结束循环,并打印正确值 } } int main(void) { int input = 0; srand((unsigned int)time(NULL)); do { menu(); printf("请选择->"); scanf("%d", &input); switch (input) { case 1: game(); break; case 0: printf("退出\r\n"); break; default: printf("输入有误!\r\n"); break; } } while (input); return 0; }