一. 简单介绍
猜数字游戏是一款经典的编程入门游戏,通过C语言实现这款游戏,可以帮助初学者熟悉C语言的基本语法、循环结构、条件判断等知识点。小皖将介绍如何使用C语言编写一个简单的猜数字游戏,并提供完整的代码和流程图。
游戏玩法非常简单,那么怎么实现呢?
二、游戏规则
- 系统随机生成一个1-100之间的整数;
- 玩家输入一个猜测的数字;
- 系统给出提示,告诉玩家猜测的数字是大了还是小了;
- 玩家根据提示继续猜测,直到猜对为止;
- 猜错后,显示玩家猜对还剩下的次数。
三、C语言实现
1.包含头文件
这段代码是C语言的头文件引入部分,它包含了三个库:stdio.h、stdlib.h和time.h。 1. stdio.h:这个头文件包含了标准输入输出函数的定义为下文printf()、scanf()做铺垫 2. stdlib.h:这个头文件包含了一些通用函数的定义,下文的rand()函数用得到 3. time.h:这个头文件包含了时间相关的函数定义,下面要用到time()
#include <stdio.h> #include <stdlib.h> #include <time.h>
2.调用函数
void jinru();
3.主函数
int main()
{
int count,b;
int flag = 1;
jinru();
srand((unsigned int)time(NULL));
do
{
printf("请输入你的选择>:\n");
scanf_s("%d", &count);
switch (count)
{
case 1:
printf("****欢迎进入游戏***\n");
gme();
break;
case 2:
printf("****退出游戏***\n");
break;
default:
printf("****输入错误,请重新输入***\n");
break;
}
break;
} while (count);
return 0;
}
4.实现函数(1)
我们为游戏写了一个菜单来供玩家选择玩游戏还是结束游戏退出的函数。实现比较简单,直接上代码:
void jinru()
{
printf("*****************\n");
printf("****欢迎你来玩游戏****\n");
printf("****1.进入游戏***\n");
printf("****2.退出游戏***\n");
printf("*****************\n");
}
4.实现函数(2)
首先对内容进行分析,这个函数是干嘛的呢?
我们首先需要生成一个随机数,可以考虑通过rand函数来实现:
a = rand() % 100 + 1
但是当我们写完代码调试试玩会发现每次的随机数都是相同的,因为所生成的是伪函数,并不能达到游戏效果,所以我们要在之前加入如下代码:
srand((int)time(NULL))那么这样使就可以随机数发生器初始化
这样,每次我们都会重新产生一个新的随机数。
接下来我们则需要构造循环来实现玩家猜数字的过程,并且通过玩家给入的数字赋值给b,然后与随机值a进行比较,不断提示玩家猜大了还是猜小了。
同时这里我将所猜的次数规定为5次,猜错的则减一次
代码实现如下:
void gme()
{
int b = 0, c = 5;
int a = rand() % 100 + 1;
printf("%d\n", a);
while (c)
{
printf("请输入你猜的数字>");
scanf_s("%d", &b);
if (a > b)
{
printf("你猜的数字小了,再猜猜,你还有%d次机会\n",--c);
}
else if (a < b)
{
printf("你猜的数字大了,再猜猜你还有%d次机会\n", --c);
}
else
{
printf("恭喜你,你猜对了\n");
c = 0;
break;
}
}
}
5.实现代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
void gme();
void jinru()
{
printf("*****************\n");
printf("****欢迎你来玩游戏****\n");
printf("****1.进入游戏***\n");
printf("****2.退出游戏***\n");
printf("*****************\n");
}
int main()
{
int count,b;
int flag = 1;
jinru();
srand((unsigned int)time(NULL));
do
{
printf("请输入你的选择>:\n");
scanf_s("%d", &count);
switch (count)
{
case 1:
printf("****欢迎进入游戏***\n");
gme();
break;
case 2:
printf("****退出游戏***\n");
break;
default:
printf("****输入错误,请重新输入***\n");
break;
}
break;
} while (count);
return 0;
}
void gme()
{
int b = 0, c = 5;
int a = rand() % 100 + 1;
printf("%d\n", a);
while (c)
{
printf("请输入你猜的数字>");
scanf_s("%d", &b);
if (a > b)
{
printf("你猜的数字小了,再猜猜,你还有%d次机会\n",--c);
}
else if (a < b)
{
printf("你猜的数字大了,再猜猜你还有%d次机会\n", --c);
}
else
{
printf("恭喜你,你猜对了\n");
c = 0;
break;
}
}
}