前言
如果您是刚学习C语言不久,那么您完全可以用这个小游戏程序来练手!此程序包括了C语言中的循环语句等,可作为章节训练。
那么就让我们进入正题吧!
代码呈现
废话不多说,先上代码!(VC++与VB6.0等可去掉#define行!)
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void menu()
{
int input = 0;
printf("****************************\n");
printf("********** welcome *********\n");
printf("***** Produced by Ahao *****\n");
printf("********** play(1) *********\n");
printf("********** exit(0) *********\n");
printf("****************************\n");
}
void game()
{
int right = rand() % 100 + 1;
int i;
printf("请输入您所要的难度:>");
scanf("%d", &i);
while (1)
{
int guess = 0;
printf("请输入猜测的数字(您还有%d次机会!):>",i);
scanf("%d", &guess);
if (guess < right)
{
printf("猜小了\n");
i--;
if (i == 0)
{
system("CLS");
printf("很抱歉,次数已用完!\n");
break;
}
}
else if (guess > right)
{
printf("猜大了\n");
i--;
if (i == 0)
{
system("CLS");
printf("很抱歉,次数已用完!\n");
break;
}
}
else
{
system("CLS");
printf("恭喜你!猜对了!\n");
break;
}
}
}
int main()
{
srand((unsigned)time(NULL));
int input = 0;
do
{
menu();
printf("请输入你的选择:>");
scanf("%d", &input);
if (input == 1)
{
system("CLS");
printf("开始游戏!\n");
game();
}
else if (input == 0)
{
system("CLS");
printf("退出游戏!");
break;
}
else printf("输入错误!请重新输入\n");
} while (input != 0);
return 0;
}
实现原理
分步解答一
对于此程序需要用到time、srand、system等函数,因此我们必须引入特定的头文件,如下:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
注意:如果你使用的是更高级的编译软件,那么可能无法识别scanf函数,这时我们需要定义此函数,如下:
#define _CRT_SECURE_NO_WARNINGS 1
若编译器未提示出错,那么您完全可以删除这句代码!
分步解答二
在最初,我们必须为游戏制作一个可视化的界面,这时我们完全可以用printf语句来实现:
void menu()
{
int input = 0;
printf("****************************\n");
printf("********** welcome *********\n");
printf("***** Produced by Ahao *****\n");
printf("********** play(1) *********\n");
printf("********** exit(0) *********\n");
printf("****************************\n");
}
我们把这个界面定义为菜单,为方便执行编写,我们可以将其储存在menu这个主函数中。当然,你可以编辑printf语句中的任意符号和文字。
分步解答三
其次,为游戏的主要实现环节,这一环节非常重要,它决定着游戏的规则与机制。代码如下:
void game()
{
int right = rand() % 100 + 1;
int i;
printf("请输入您所要的难度:>");
scanf("%d", &i);
while (1)
{
int guess = 0;
printf("请输入猜测的数字(您还有%d次机会!):>",i);
scanf("%d", &guess);
if (guess < right)
{
printf("猜小了\n");
i--;
if (i == 0)
{
system("CLS");
printf("很抱歉,次数已用完!\n");
break;
}
}
else if (guess > right)
{
printf("猜大了\n");
i--;
if (i == 0)
{
system("CLS");
printf("很抱歉,次数已用完!\n");
break;
}
}
else
{
system("CLS");
printf("恭喜你!猜对了!\n");
break;
}
}
}
此处,我们为了使游戏进行,必须生成一个随机的未知数,这时我们便用到了srand、time函数,这是为了让我们的随机数不会局限于固定的数,并且每次游戏都会更新(具体用法您可以搜索相关资料!)。
之后,我们使用while循环来判断玩家输入的数是否正确,并且,我也为程序制作了剩余输入次数的设计,当然,你也可以自定义所猜数字的位数。
同时,我们也用到了清屏代码,使我们的程序界面井井有条,锦上添花。如下:
system("CLS");
当然,我们也要把这段代码存储到game这个主函数中。
分步解答四
最后,我们来编译执行游戏的过程。如下:
int main()
{
srand((unsigned)time(NULL));
int input = 0;
do
{
menu();
printf("请输入你的选择:>");
scanf("%d", &input);
if (input == 1)
{
system("CLS");
printf("开始游戏!\n");
game();
}
else if (input == 0)
{
system("CLS");
printf("退出游戏!");
break;
}
else printf("输入错误!请重新输入\n");
} while (input != 0);
return 0;
}
如上我们为了使游戏开始和结束,以及游戏结束后退出正常,我们编写了如上代码,同时也用到了while循环。
执行体验
C语言:小游戏之猜数字(升级版)
实验总结
在我们正常的C语言程序制作中,不免要用到更高级的函数与语法,现在就让我们这一实验,作为我们成功路上的垫脚石吧!
感谢阅读