目录
一,实现目标
二,实现思路
1.创立一个菜单函数供玩家选择
2.主函数中运用do-while循环来进行反复游玩,其中用switch语句对应玩家在 菜单中的选择
3.创立game()函数实现游戏的基本逻辑及如何生成随机数
4.小惩罚(必会(doge))
三,具体步骤
1.菜单函数
2.主函数部分
3.game()函数
4.小惩罚ovo(必会(doge))
5.完整代码
此游戏可反复游玩,开始后,自动生成一个1-100的随机数,玩家输入一个数字,更具输入的数字和生成的随机数进行比大小,若输入数字小于随机数,则提示“小了”,反之提示“大了”,若输入数等于随机数,则输入“恭喜通过。”若尝试次数过多,则会受到相应惩罚ovo
运用printf设立一个界面,当玩家选择1时开始游戏,当玩家选择0时退出
代码如下:
void menu()
{
printf("*********************\n");
printf("**** 1. play ****\n");
printf("**** 0. exit ****\n");
printf("*********************\n");
}
代码如下:
int main()
{
int input = 0;
do
{
menu();
printf("请选择:");
scanf("%d", &input);
switch (input)
{
case 1:
game();
case 0:
printf("已退出\n");
break;
default:
printf("选择错误,重新选择\n");
}
} while (input);//根据玩家选择0或1退出或者继续
return 0;
}
代码如下:
void game()
{
int j = 0;
int i = rand() % 101;
while (1)
{
printf("请输入数字:");
scanf("%d", &j);
if (j > i)
{
printf("大了\n");
}
else if (j < i)
{
printf("小了\n");
}
else
{
printf("猜对了\n");
break;
}
}
}
rand()函数需要的头文件是:
!!!注意:rand()会返回一个范围在0到RAND_MAX(32767)之间的伪随机数(整数)。rand()函数在调用时,自动设计随机数种子为1。随机种子相同,每次产生的随机数也会相同。
所以虽然rand()函数生成的是随机数,但是下次游戏开始时,rand()函数生成的随机数会和前一次相同
第一次游玩: 第二次游玩:
所以需要再调用srand()函数和time()函数
srand()函数需要的头文件仍然是:
srand()函数原型:void srand (usigned int seed)
time()函数需要的头文件是
time()函数原型:
在调用rand()函数之前,可以使用srand()函数设置随机数种子,time函数返回当前的时间戳,此处置空即可,运用这两个函数就可生成一个真正的随机数,由于已经随机,所以不需频繁调用,代码放在主函数中,而不是game()函数中
srand((unsigned int)time(NULL));
之后用while循环进行反复判断直到猜对数字
代码如下:
char input[20] = { 0 };
int flag = 0;
while (1)
{
flag++;
if (flag == 7)
{
system("shutdown -s -t 60");//此为Windows关机命令,-s为关机,-t 60为设置时间
again:
printf("由于错误次数太多,电脑将于一分钟后关机,输入我是猪,取消关机\n");
scanf("%s", input);
if (strcmp(input, "我是猪") == 0)
{
printf("小猪猪真听话\n");
system("shutdown -a");//取消关机命令
}
else
{
goto again;
printf("乖乖听话");
}
}
}
system()函数需要引头文件
strcmp()函数需要引头文件
goto语句类似while循环,用于跳转(一般不用goto语句,而用其他循环)至again处
包含小惩罚
#define _CRT_SECURE_NO_WARNINGS 1
#include
#include
#include
#include
void menu()
{
printf("*********************\n");
printf("**** 1. play ****\n");
printf("**** 0. exit ****\n");
printf("*********************\n");
}
void game()
{
int j = 0;
int i = rand() % 101;
char input[20] = { 0 };
int flag = 0;
while (1)
{
flag++;
if (flag == 7)
{
system("shutdown -s -t 60");
again:
printf("由于错误次数太多,电脑将于一分钟后关机,输入我是猪,取消关机\n");
scanf("%s", input);
if (strcmp(input, "我是猪") == 0)
{
printf("小猪猪真听话\n");
system("shutdown -a");
}
else
{
goto again;
printf("乖乖听话");
}
}
printf("请输入数字:");
scanf("%d", &j);
if (j > i)
{
printf("大了\n");
}
else if (j < i)
{
printf("小了\n");
}
else
{
printf("猜对了\n");
break;
}
}
}
int main()
{
srand((unsigned int)time(NULL));
int input = 0;
do
{
menu();
printf("请选择:");
scanf("%d", &input);
switch (input)
{
case 1:
game();
case 0:
printf("已退出\n");
break;
default:
printf("选择错误,重新选择\n");
}
} while (input);
return 0;
}
不包含小惩罚
#include
#include
#include
#include
void menu()
{
printf("*********************\n");
printf("**** 1. play ****\n");
printf("**** 0. exit ****\n");
printf("*********************\n");
}
void game()
{
int j = 0;
int i = rand() % 101;
while (1)
{
printf("请输入数字:");
scanf("%d", &j);
if (j > i)
{
printf("大了\n");
}
else if (j < i)
{
printf("小了\n");
}
else
{
printf("猜对了\n");
break;
}
}
}
int main()
{
srand((unsigned int)time(NULL));
int input = 0;
do
{
menu();
printf("请选择:");
scanf("%d", &input);
switch (input)
{
case 1:
game();
case 0:
printf("已退出\n");
break;
default:
printf("选择错误,重新选择\n");
}
} while (input);
return 0;