如何用C语言实现一个简单的猜数字游戏呢?
首先,写一个输出函数,给玩家一个提示,提供选择。
1.进入游戏
2.退出游戏
void Print()
{
printf("******************************\n");
printf("* *\n");
printf("* 欢迎来到猜数字小游戏 *\n");
printf("* 1.play 2.exit *\n");
printf("* *\n");
printf("******************************\n");
}
接着写一个游戏函数,num为要猜的随机数字,guess为用户猜的数字。
在一个while循环里:若输入的数值 等于 电脑给出的随机数时,输出“恭喜你!猜对啦!!”;
若输入的数值 大于 电脑给出的随机数时,输出“猜大了!!”,用户继续输入,循环继续,直到猜对为止;
若输入的数值 小于 电脑给出的随机数时,输出“猜小了!!”,用户继续输入,循环继续,直到猜对为止;
void Play()
{
int num = rand()% 100 + 1;//产生100以内的随机数
int guess;
printf("请输入你猜的数字(1-100):\n");
while (scanf("%d", &guess))
{
if (guess == num)
{
printf("恭喜你!猜对啦!!\n");
break;
}
else if (guess > num)
{
printf("猜大了!!\n");
}
else
{
printf("猜小了!!\n");
}
}
}
最后,写main函数,先调用Print()函数;choice代表选项,当choice 为 1时,调用Play()函数,进入游戏;当choice 为 2时,退出游戏;当choice 既不等于1也不等于2时,让用户重新输入。
int main()
{
srand((unsigned)time(NULL));
int choice;
Print();
while (scanf("%d", &choice))
{
if (choice == 1)
{
Play();
}
else if (choice == 2)
{
printf(" bye~ 下次见! \n");
break;
}
else
{
printf("请重新输入:\n");
}
}
return 0;
}
这其中主要的难点就是如何生成一个随机数。rand()函数是C语言里生成随机数的一个函数,rand() % 100 的范围是0-99,要想在1-100之间,只要 rand() % 100 + 1 就可以;它的头文件是#include<stdlib.h>,但它并不是实际意义的随机数,每次编译,出现的随机数都是一样的。因此这里就需要用srand()函数进行初始化,利用 srand((unsigned)time(NULL)) 来实现真正意义的随机;它的头文件也是#include<stdlib.h>,这里还用到了time()函数,需要引用头文件#include <time.h>。
完整代码为:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void Print()
{
printf("******************************\n");
printf("* *\n");
printf("* 欢迎来到猜数字小游戏 *\n");
printf("* 1.play 2.exit *\n");
printf("* *\n");
printf("******************************\n");
}
void Play()
{
int num = rand()% 100 + 1;//产生100以内的随机数
int guess;
printf("请输入你猜的数字(1-100):\n");
while (scanf("%d", &guess))
{
if (guess == num)
{
printf("恭喜你!猜对啦!!\n");
break;
}
else if (guess > num)
{
printf("猜大了!!\n");
}
else
{
printf("猜小了!!\n");
}
}
}
int main()
{
srand((unsigned)time(NULL));
int choice;
Print();
while (scanf("%d", &choice))
{
if (choice == 1)
{
Play();
}
else if (choice == 2)
{
printf(" bye~ 下次见! \n");
break;
}
else
{
printf("请重新输入:\n");
}
}
return 0;
}
运行结果如下(VS2013):