关于简易猜数字游戏的实现
对于今天的三子棋游戏,有以下几个特性:
- 玩家通过输入数字来选择是否进行游戏或退出游戏,选错时会提示并重新输入
- 通过键盘输入数据后,电脑会提示玩家所猜的数据过大或过小,若猜对则打印恭喜你,猜对了,然后让玩家重新选择是否重新进行游戏
- 随机数的范围为1-100
废话不多说,直接上代码:>
#include <stdio.h>#include <time.h>#include <stdlib.h>void menu()
{printf("**********************\n");printf("****** 1.play *******\n");printf("****** 0.exit *******\n");printf("**********************\n");
}void game()
{int input2 = 0;int ret = rand() % 100 + 1;//生成一个随机数;while (1){printf("请猜数字:>");scanf("%d", &input2);if (input2 < ret){printf("猜小了\n");}else if (input2 > ret){printf("猜大了\n");}else{printf("恭喜你,猜对了\n");break;}}
}int main()
{int input1 = 0;srand((unsigned int)time(NULL));//设置随机数的起点do{menu();//此处的menu为菜单函数printf("请输入数字:>");scanf("%d", &input1);switch(input1){case 1:printf("猜数字游戏\n");game();break;case 0:printf("退出程序\n");break;default:printf("输入错误,请重新输入\n");break;}} while (input1);return 0;
}
各处代码讲解
关于主函数中的srand函数,为设置一个随机数起点,但若要生成一个随机数,还需要给他传一个随机数,因此,我们想到了用时间来作为参数,并且强制转换为(unsigned int)类型,来匹配srand的语法。
menu为我们自己创建的菜单函数,用来输出并提示玩家要输入什么
关于do-while循环:
因为游戏至少执行一次,因此用do while循环来进行切入,其中的switch case用来判断玩家输入为几来执行相应的结果
若选1.则进行游戏,若选0,则退出游戏,若选择其他数字,则重新输入
对game函数的讲解:
game函数中,rand函数用来生成一个随机数,在while循环中,玩家输入的数字会与rand函数产生的随机数进行比较,如果输入过小或过大,电脑都会进行提示,让玩家重新输入,若玩家猜对,则跳出循环,让玩家重新开始游戏或退出程序。
对于程序的一点变动
前面所打印的内容占了一部分屏幕,看起来好像不太爽,因此对程序进行以下改动:
这样的话打印出来会变得漂亮一些(我个人是这么认为的)!。