C语言猜数字游戏(详解)
1.我们需要电脑生成一个随机数2.玩家进行猜数字3.玩过一次可以再玩一次,那么至少要进去一次,可以使用do...while循环。
使用C语言写出猜数字游戏
1.思路
1.我们需要电脑生成一个随机数
2.玩家进行猜数字
3.玩过一次可以再玩一次,那么至少要进去一次,可以使用do...while循环
2.大体结构(主函数)
使用do...while循环,使游戏至少进入一次,然后根据菜单提示选择:开始或者退出游戏
需要用到Switch case语句,来进行判断。
然后加入菜单函数进行选择,1.开始游戏,进入game()函数 0.退出游戏,跳出循环 ,如果输入错误,循环再进行选择。
int main()//主函数
{
int input = 0;
printf("猜数字,1--100之间\n");
//do...while循环
do
{
menu();//菜单函数
printf("请选择数字:>");
scanf("%d", &input);
switch (input)
{
case 1:
game();//游戏函数
break;
case 0:
printf("已退出游戏\n");
break;
default:
printf("输入错误,请重新输入\n");
break;
}
} while (input);
return 0;
}
3.菜单函数(menu)
使用printf 打印出菜单,void 表示无返回
void menu()//菜单函数
{
printf("|----------------------------------------------------|\n");
printf("|------------------- 1.开始游戏 -----------------|\n");
printf("|------------------- 0.退出游戏 -----------------|\n");
printf("|----------------------------------------------------|\n");
}
4.游戏函数(game)
在game()函数内部要使电脑生成一个随机数,由玩家来猜数字。在C语言rand()函数是专门生成随机数的,并且会返回一个随机整数,在0——RAND MAX之间(0----32767),但是在使用rand()之前需要调用srand()函数(设置随机数的生成器),否者随机数生成第一次和第二次完全相同
srand()函数是设置一个随机起点,需要使用整型,但由于整型为固定值,随机值也相同,所以我们需要一个每时每刻都在发生变化的值,那就是:时间戳(是计算机当前时间-起始时间)所得到的值就是时间戳,使用时间戳来设置随机数的生成起点,使用时间戳要用time()函数来获取当前时间,srand函数返回值为unsigned int 类型,那么要将time强制类型转换成unsigned int 类型,time(NULL)为空指针。
srand 生成起点不能多次调用,否则会出现相同的情况,放在主函数内部调用一次就可以。
4.猜数字
随机数是在0--32767之间,数字比较大,很难猜对,所以我们将随机值%100+1(%100余数在1-99之间再+1,就是1-100之间),就会得到1--100之间的数字。
然后进行猜数字,需要进行循环,如果猜大了,提示猜大了,如果猜小了,就提示猜小了,如果猜对了,跳出循环,进行下一次选择。
5.游戏运行和完整程序
代码:
#include<stdio.h>
#include<stdlib.h>//头文件
#include<time.h>
void menu()//菜单函数
{
printf("|----------------------------------------------------|\n");
printf("|------------------- 1.开始游戏 -----------------|\n");
printf("|------------------- 0.退出游戏 -----------------|\n");
printf("|----------------------------------------------------|\n");
}
void game()//游戏函数
{
int i = 0;
int ret = rand()%100+1 ;//生成随机数
printf("请猜数字\n");
while (1)//while循环,如果猜对跳出来
{
scanf("%d", &i);
if (i < ret)
{
printf("猜小了!\n");
}
else if (i>ret)
{
printf("猜大了!\n");
}
else
{
printf("恭喜你!!猜对了!\n");
break;
}
}
}
int main()//主函数
{
srand((unsigned int)time(NULL));//随机数生成
int input = 0;
printf("猜数字,1--100之间\n");
//do...while循环
do
{
menu();//菜单函数printf("请选择数字:>");
scanf("%d", &input);
switch (input)
{
case 1:
game();//游戏函数
break;
case 0:
printf("已退出游戏\n");
break;
default:
printf("输入错误,请重新输入\n");
break;
}
} while (input);
return 0;
}
更多推荐
所有评论(0)