概述
写一个简单的猜数字小游戏
游戏的规则与内容:
输入一个1-100的数字,给你10次机会来猜出它
我们直接写游戏的内容:
#include <stdio.h>
int main()
{
int a = 15;//要被猜的数字,假设它是随机的
int tmp = 0;//每次输入的数字
int i = 10;//一局游戏只能猜10次
while (i)
{
scanf("%d",&tmp);
if (tmp > a)
{
//如果输入的数字大于要猜的数字,就进入
printf("猜大了n");
}
else if (tmp < a)
{
//如果输入的数字小于要猜的数字,就进入
printf("猜小了n");
}
else
{
//否则就是才对了
printf("猜对了n");
//猜对了,就不需要再猜了,就退出循环
break;
}
//每次猜完 i--
i--;
}
//程序走到这里只有两种原因
//1.当 i==0 的时候循环结束
//2.当数字猜对的时候,break会退出循环,就算是第十次才对的,i 也是 1
//所以我们判断如果 i == 0 游戏失败,i > 0 游戏胜利,并且输出是猜了几次后猜对的
if (i == 0)
{
printf("游戏失败!n");
}
else if (i > 0)
{
printf("恭喜你走了%d步就猜对了", 10-i+1);
//10是总步数,i是剩余步数,10-i+1计算出走了的步数
//因为我们是在每次猜数字,猜错了,程序才会执行 i--
//猜对的话程序就不会执行 i-- 但我们也算走了一步 所以在 i-10 后在 +1
}
return 0;
}
这样写有一个缺陷就是,程序没有一个随机数的生成
这里我们就要用到C语言里面的一个库函数 rand()
(这个知识点不用深入掌握,只需要知道怎么用就可以了)
rand函数是专门用来生成随机数的
rand函数返回的是0~(32767)之间的一个随机数
rand函数在使用之前要使用一个srand函数来设置随机数的生成器
srand函数在程序中只要调用一次就可以了,不需要频繁调用
rand与srand的头文件为 <stdlib.h>
C语言中,time函数会返回时间戳
time的头文件为 <time.h>
所以我们生成随机数的代码,这样用就可以
int main()
{
srand((unsigned int)time(NULL));
int a = rand();
//这里 a 的值就是0~32767的随机数
}
所以我们生成 1~100 的随机值只需要给 a = rand()%100+ 1
所以我们的猜数字游戏代码为:
#include <stdio.h>
#include <stdlib>
#include <time.h>
int main()
{
srand((unsigned int)time(NULL));
int a = rand()%100 + 1;
int tmp = 0;//每次输入的数字
int i = 10;//一局游戏只能猜10次
printf("猜数字游戏,请输入一个 1--100 的数字n");
while (i)
{
scanf("%d", &tmp);
if (tmp > a)
{
//如果输入的数字大于要猜的数字,就进入
printf("猜大了n");
}
else if (tmp < a)
{
//如果输入的数字小于要猜的数字,就进入
printf("猜小了n");
}
else
{
//否则就是才对了
printf("猜对了n");
//猜对了,就不需要再猜了,就退出循环
break;
}
//每次猜完 i--
i--;
}
//程序走到这里只有两种原因
//1.当 i==0 的时候循环结束
//2.当数字猜对的时候,break会退出循环,就算是第十次才对的,i 也是 1
//所以我们判断如果 i == 0 游戏失败,i > 0 游戏胜利,并且输出是猜了几次后猜对的
if (i == 0)
{
printf("游戏失败!n");
}
else if (i > 0)
{
printf("恭喜你走了%d步就猜对了", 10 - i + 1);
//10是总步数,i是剩余步数,10-i+1计算出走了的步数
//因为我们是在每次猜数字,猜错了,程序才会执行 i--
//猜对的话程序就不会执行 i-- 但我们也算走了一步 所以在 i-10 后在 +1
}
return 0;
}
为了使游戏更完善我们可以加上游戏菜单,开始游戏与退出游戏
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void menu()
{
printf("**************************n");
printf("****** 1. play ******n");
printf("****** 0. exit ******n");
printf("**************************n");
}
int main()
{
int input = 0;
srand((unsigned int)time(NULL));
do
{
//打印菜单
menu();
printf("请选择:>");
scanf("%d", &input);
switch (input)
{
case 1:
game();//game函数中是猜数字的整个路基逻辑
break;
case 0:
printf("退出游戏n");
break;
default:
printf("选择错误,重新选择n");
break;
}
} while (input);
return 0;
}
最后我们再把游戏部分,与游戏菜单,开始游戏,退出游戏,写在一起
只需要把游戏的 函数名改成 void game()
最终代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void game()
{
srand((unsigned int)time(NULL));
int a = rand() % 100 + 1;
int tmp = 0;//每次输入的数字
int i = 10;//一局游戏只能猜10次
printf("猜数字游戏,请输入一个 1--100 的数字n");
while (i)
{
scanf("%d", &tmp);
if (tmp > a)
{
//如果输入的数字大于要猜的数字,就进入
printf("猜大了n");
}
else if (tmp < a)
{
//如果输入的数字小于要猜的数字,就进入
printf("猜小了n");
}
else
{
//否则就是才对了
printf("猜对了n");
//猜对了,就不需要再猜了,就退出循环
break;
}
//每次猜完 i--
i--;
}
//程序走到这里只有两种原因
//1.当 i==0 的时候循环结束
//2.当数字猜对的时候,break会退出循环,就算是第十次才对的,i 也是 1
//所以我们判断如果 i == 0 游戏失败,i > 0 游戏胜利,并且输出是猜了几次后猜对的
if (i == 0)
{
printf("游戏失败!n");
}
else if (i > 0)
{
printf("恭喜你走了%d步就猜对了n", 10 - i + 1);
//10是总步数,i是剩余步数,10-i+1计算出走了的步数
//因为我们是在每次猜数字,猜错了,程序才会执行 i--
//猜对的话程序就不会执行 i-- 但我们也算走了一步 所以在 i-10 后在 +1
}
}
void menu()
{
printf("**************************n");
printf("****** 1. play ******n");
printf("****** 0. exit ******n");
printf("**************************n");
}
int main()
{
int input = 0;
srand((unsigned int)time(NULL));
do
{
//打印菜单
menu();
printf("请选择:>");
scanf("%d", &input);
switch (input)
{
case 1:
game();//game函数中是猜数字的整个路基逻辑
break;
case 0:
printf("退出游戏n");
break;
default:
printf("选择错误,重新选择n");
break;
}
} while (input);
return 0;
}
猜数字小游戏这样就已经完成了
拜拜~
最后
以上就是迅速黑米为你收集整理的让你C语言学完分支和循环就能写出猜数字小游戏的全部内容,希望文章能够帮你解决让你C语言学完分支和循环就能写出猜数字小游戏所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复