需求:
计算机产生一个1-100之间随机数,玩家需要输入一个数字,若所猜数字大于随机数,则提示猜大了,若小于随机数,则提示猜小了,重复此过程直到猜对为止,结束本次猜数字游戏,一次游戏结束后可由玩家自己选择继续玩或退出。
步骤:
1.选择流程
当进入此程序,首先给出一个选择菜单由玩家选择
当玩家依照菜单输入选择应有三种结果:
a.输入1,进入游戏
b.输入0,退出游戏
c.输入了1和0之外的数,提示输入错误,并重新输入
int main()
{
int input = 0;
do
{
//菜单
menu();
printf("请选择:>");
//玩家输入选项
scanf("%d", &input);
switch (input)
{
case 1:
//玩游戏
game();
break;
case 0:
//退出游戏
break;
default:
//输入错误
printf("输入错误,请重新输入!\n");
break;
}
} while (input);
return 0;
}
菜单实现:
void menu()
{
printf("********************\n");
printf("****** 1.play ******\n");
printf("****** 0.exit ******\n");
printf("********************\n");
}
2.游戏流程
如输入1,就进入游戏
a.产生一个随机数
rand( )函数会返回一个介于 0 -
RAND_MAX(32767)的随机整数,此函数与srand( )函数搭配使用
srand( )函数的参数类型是unsigned int型
time( )函数会获取当前日历时间作为time_t类型的值,返回一个时间戳,由于我们计算机的时间是每时每刻都在发生变化的,因此随机值是不同的
使用rand( ),srand( )函数要引用头文件<stdlib.h>
使用time( )函数要引用头文件<time.h>
b.玩家猜数,并给出提示
guess > 随机数,提示猜大了,继续猜
guess < 随机数,提示猜小了,继续猜
guess == 随机数,提示猜对了,本次猜数结束
代码实现:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void menu()
{
printf("********************\n");
printf("****** 1.play ******\n");
printf("****** 0.exit ******\n");
printf("********************\n");
}
void game()
{
//任何数除100后的余数范围都是0-99,再加1为1-100
int ret = rand()%100+1;
int guess = 0;
while (1)
{
printf("请猜数字:>\n");
scanf("%d", &guess);
if (guess > ret)
{
printf("猜大了\n");
continue;
}
else if (guess < ret)
{
printf("猜小了\n");
continue;
}
else
{
printf("恭喜您,猜对了\n");
break;
}
}
}
int main()
{
int input = 0;
//强制类型转换为unsigned int型
srand((unsigned int)time(NULL));
do
{
menu();
printf("请选择:>");
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
break;
default:
printf("输入错误,请重新输入!\n");
break;
}
} while (input);
//当玩家选择0时,退出游戏,而此时条件判断为假,退出循环
//而选择非0时,判断为真,循环继续
return 0;
}
运行结果: