基础环境
IDE:VS2022,x64,编译器:VSMC
源码地址:https://gitee.com/bgssc/c-code/tree/master/therdC_2024_1_23
语言:C
用到的语句:switch,函数,if,while循环
整体代码(图片)
![](https://i-blog.csdnimg.cn/blog_migrate/f4fe10cdfb080001b1e7c51fd3c5fa9c.png)
拆分实现
1.菜单
这部分主要使用switch语句实现,通过用户输入来进行,1.开始,2.结束,3.调整难度等选项,这里不多讲switch语句的基本语法与使用方式,
实现方法使用一个接受用户输入的整形变量用,通过input对整体游戏的进行,结束,开始进行控制,当用户输入1时会进入游戏实现部分,用printf了测试当switch语句是否成功(注:printf需要使用头文件stdio.h)
int main()
{
int input = 0;
do
{
printf("***********************************\n");
printf("************1,paly ****\n");
printf("************2.exit ****\n");
printf("************3.increase diffcult****\n");
printf("***********************************\n");
printf("请输入->");
scanf("%d", &input);
switch (input)
{
case 1:
printf("猜数字游戏");
break;
case 2:
input = 0;
break;
case 3:
printf("选择困难难度");;
default:
printf("输入错误");
break;
}
} while (input);
2.游戏实现
游戏逻辑是 随机生成一个范围内的数字,与玩家输入的数字进行对比
对比情况分为4种
1.输入的数字等于随机生成的数字 -》》》打印游戏获胜 跳到菜单
2.输入的数字小于随机生成的数字 -》》》打印猜小了,并且将玩家输入的数字做为最小值
3.输入的数字小于随机生成的数字 -》》》打印猜大了,并且将玩家输入的数字做为最大值
4.如果玩家在输入的时候超出所给的范围,则打印印输入的数字不在范围内重新输入
代码如下
//猜数字游戏
void game(i) //游戏实现
{
int left = 0; //左边的边界值
int right = 100; //右边边的边界值
int number = rand() % 100 + 1; //生成1-100的随机数
int input_number = 0;
int i = 0;
printf("游戏开始 \n");
printf("请输入需要猜的数字->");
scanf("%d", &input_number); //玩家输入猜的数字
if (input_number == number)
{
system("cls"); //清屏操作需要头文件windows.h
printf("猜对了\n");
break;
}
//输入的数字在范围且小于随机
else if (input_number < number && input_number > left && input_number < right)
{
printf("猜小了\n");
left = input_number;
system("cls");
printf("随机数范围是是%d到%d\n", left, right);
}
//输入的数字在范围且大于随机
else if(input_number > left && input_number < right)
{
printf("猜大了\n");
right = input_number;
system("cls");
printf("随机数范围是是%d到%d\n", left, right);
}
else
{
system("cls");
printf("请在范围内输入数字\n");
printf("随机数范围是是%d到%d\n", left, right);
}
}
增加功能
增加一些惩罚让(例如:电脑关机),和在规定次数内猜到数字,和难度设置,显示剩余次数
def为最大次数,次数越少难度越高,默认次数是10(或是自行设定)
left 最小值用来确定左范围
right最大值有了确定右范围
number 为生成的随机数(需要在主函数配合srand生成器)
使用方法
srand((unsigned int)(time(NULL)));
number=rand()%100+1 //1-100的数 不加1 则为生成0-99的数
i为输入过的次数 每次猜大,猜小 i才会加1 当i=def的时则跳出while循环打印游戏失败
void game(int def) //游戏实现
{
int left = 0; //左边的边界值
int right = 100; //右边边的边界值
int number = rand() % 100 + 1; //生成1-100的随机数
int input_number = 0;
int i = 0;
printf("游戏开始 \n");
while (i<def)
{
printf("请输入需要猜的数字->");
scanf("%d", &input_number); //玩家输入猜的数字
if (input_number == number)
{
system("cls");
printf("猜对了\n");
break;
}
//输入的数小于随机数
else if (input_number < number && input_number > left && input_number < right)
{
printf("猜小了\n");
left = input_number;
system("cls");
printf("随机数范围是是%d到%d\n", left, right);
i++;
printf("还有%d次机会\n", def - i);
}
//输入的数大于随机数
else if(input_number > left && input_number < right)
{
printf("猜大了\n");
right = input_number;
system("cls");
printf("随机数范围是是%d到%d\n", left, right);
i++;
printf("还有%d次机会\n", def - i);
}
else
{
system("cls");
printf("请在范围内输入数字\n");
printf("随机数范围是是%d到%d\n", left, right);
}
}
printf("游戏失败\n"); //可自行设置惩罚
}