本次猜数字游戏的规则就是在1-100生成一个 随机数,玩家可输入数字进行猜测,若所猜数字比随机数小,则会提示;”猜小了“,反之一样。
我们拿到题目不妨带入玩家的身份,当进入游戏时,自然而然就要先有一个菜单,因此此处我们可以用do while循环,当输入某个值时可进入游戏,输入某个值时我们就可以退出游戏。如下列代码。
int main()//制作一个猜数字游戏的思路(涵盖循环与分支的内容)
{
do
{
}while
}
既然我们要进入菜单,便可以再设定一个函数如下列代码
void menu()
{
printf("************************");
printf("*** 1.开始游戏 *****");
printf("*** 0.退出游戏 *****");
printf("************************");
}
int main()//制作一个猜数字游戏的思路(涵盖循环与分支的内容)
{
int sign_1 = 1;
do
{
menu();
scanf("%d",&sign_1);
} while (sign_1);
return 0;
}
这样我们就能得到一个菜单(menu中的*号仅仅为了修饰菜单,可自行调整。)
下面就是若是我们输入1就会进行游戏,输入0就会退出游戏,输入其他值肯定就不可以,需要重新输入,若是我们使用 if(sign_1 == 1) 和 if(sign_1 == 0)进行分支时,我们没有办法对其他的输入值进行约束(这里后期发现其实都可以,可自行选择)因此我们可以选择switch来进行分支,如下列代码所示
void menu()
{
printf("************************");
printf("*** 1.开始游戏 *****");
printf("*** 0.退出游戏 *****");
printf("************************");
}
int main()//制作一个猜数字游戏的思路(涵盖循环与分支的内容)
{
int sign_1 = 1;
do
{
menu();
scanf("%d",&sign_1);
switch (sign_1)
{
case 1:game_1();
case 0: break;
default:printf("输入错误,请重新输入\n");
}
} while (sign_1);
return 0;
}
至此我们的菜单制作已完成,可以看到图中引入了一个game_1,所以这里我们又需要再命名一个game_1的函数
void game_1()
{
int ret = rand() % 100 + 1;//引出随机数
int count_1 = 0;
printf("请输入您所猜测的数字:\n");
}
既然要生成随机,那就要用到rand函数,此处在我的这一篇文章有相关说明(写文章-CSDN创作中心)就不多赘述。代码到这里就需要我们进行下一步的考虑,如题”若所猜数字比随机数小,则会提示;”猜小了“,反之一样。“因此我们需要引入count_1来与ret这个随机数进行比较,输出对应的提示。那让我们进入下一步的代码:
void game_1()
{
int ret = rand() % 100 + 1;//引出随机数
int count_1 = 0;
printf("请输入您所猜测的数字:\n");
while (1)
{
scanf("%d", &count_1);
if (count_1 > ret)
printf("猜大了\n");
else if (count_1 < ret)
printf("猜小了\n");
else
{
printf("恭喜您猜对了,随机数是%d\n", ret);
break;
}
}
}
在这个地方我们的思路是,若没有猜对,则需要一直猜测,所以while后括号的参数是1,即若没有break则会一直循环,知道猜对(count_1 == ret)时加入break。
至此我们试运行下列总的代码
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void menu()
{
printf("************************\n");
printf("*** 1.开始游戏 *****\n");
printf("*** 0.退出游戏 *****\n");
printf("************************\n");
}
void game_1()
{
int ret = rand() % 100 + 1;//引出随机数
int count_1 = 0;
printf("请输入您所猜测的数字:\n");
while (1)
{
scanf("%d", &count_1);
if (count_1 > ret)
printf("猜大了\n");
else if (count_1 < ret)
printf("猜小了\n");
else
{
printf("恭喜您猜对了,随机数是%d\n", ret);
break;
}
}
}
int main()//制作一个猜数字游戏的思路(涵盖循环与分支的内容)
{
int sign_1 = 1;
srand(time(NULL));
do
{
menu();
scanf("%d",&sign_1);
switch (sign_1)
{
case 1:game_1();
case 0: break;
default:printf("输入错误,请重新输入\n");
}
} while (sign_1);
return 0;
}
可以看到我们的简易版猜数字游戏就到此结束了,后续还有一个可选难度的猜数字游戏留到下一期再进行讲解。