刚学了C语言的一些知识,想尝试着写一个猜数字的小游戏,可能不太完善,有错误的地方还请大佬指出。
目录
1.菜单
主函数不用写过多的内容,一般写出布局,具体的交给函数来进行即可。
既然是游戏,那就要有一个菜单来让玩家进行选择,因此可以写一个menu函数来实现
void menu()
{
printf("**********************\n");
printf("**** 1.开始游戏 ****\n");
printf("**** 0.退出游戏 ****\n");
printf("**********************\n");
}
因为不需要返回值,所以可以直接用void。
2.选择
玩家可以根据菜单来选择,所以需要用scanf让玩家输入,然后根据输出的值进入下一步。
do
{
menu();
printf("请输入:>");
scanf("%d", &x);//输入选择
switch (x)
{
case 1: game();//game函数实现玩法
break;
case 0:printf("已关闭游戏");
break;
default: printf("输入错误,请重新输入\n");
}
if (x == 0)
break;//退出游戏
} while (1);
因为有多种输入可能,所以可以用switch来进行判断,其中game实现怎么玩。
扫描二维码关注公众号,回复:
13667814 查看本文章
3.game
下面来写game函数,既然是猜数字,那就要随机产生一个数字供玩家猜测,这里涉及了一个函数-rand(),该函数可以随机产生一个数字
printf("%d\n", rand());
但是经过测试会发现,无论怎么产生随机数,再来一次总是重复这几个数字这就需要在rand前引用srand函数,但是srand函数又需要一个随机值才能让rand生成随机值这时可以用时间戳来实现;至于时间戳,不懂得可以百度一下,它产生的数字总是在变化,所以可以放入srand中。
srand((unsigned int)time());
为了可以得到1到100的数字,可以取余100加1实现;
printf("%d\n", rand()%100+1);
既然已经找到了可以产生随机数的方法,接下来就可以写玩法了,其实很简单,可以用if判断来实现。
void game()
{
int x, num;
x = rand()%100+1;//产生随机数
//进行猜测
do
{
printf("请输入:>");
scanf("%d", &num);
if (num > x)
printf("猜大了\n");
else if (num < x)
printf("猜小了\n");
else
{
printf("恭喜你,猜对了\n");
break;
}
} while (1);
}
4.全部代码如下
//猜1-100之间的数字
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void menu()
{
printf("**********************\n");
printf("**** 1.开始游戏 ****\n");
printf("**** 0.退出游戏 ****\n");
printf("**********************\n");
}
void game()
{
int x, num;
x = rand()%100+1;//产生随机数
//进行猜测
do
{
printf("请输入:>");
scanf("%d", &num);
if (num > x)
printf("猜大了\n");
else if (num < x)
printf("猜小了\n");
else
{
printf("恭喜你,猜对了\n");
break;//退出循环,回到主函数
}
} while (1);
}
int main()
{
int x;
srand((unsigned int)time(NULL));//用于产生随机数字,在rand前
do
{
menu();
printf("请选择:>");
scanf("%d", &x);//输入选择
switch (x)
{
case 1: game();//game函数实现玩法
break;
case 0:printf("已关闭游戏");
break;
default: printf("输入错误,请重新输入\n");
}
if (x == 0)
break;//退出游戏
} while (1);
return 0;
}
当然,为了美观一些;也可以用system(“cls”)和sleep()等方法来构造更完美的程序。
初学C语言,如有错误还请大佬指正。