最近开始接触c语言,学了一段时间,想检验一下,做了一个数字炸弹小游戏。想必大家都玩过,以前刷视频总是这个小游戏。今天小编也尝试一番,将游戏用代码实现一下。
#include <stdio.h>
#include<stdlib.h>
#include<time.h>
int boom; //生成一个全局变量boom,存储炸弹的值。
void start(); //开始函数的界面定义。 (不写也没事,写了单纯好看,具体没什么特别的功能)
int main(int argc,char *argv[])
{
int x;
int left=1,right=100; //设置两个变量,分别为左值和右值 ,开始为1-100,因为游戏规定,你也可以根据自己需求做更改。
srand (time(NULL));
boom=1+rand()%100; //使用rand函数生成随机数炸弹,生成的炸弹是1-100之间的数字。
start();
while(1)
{
scanf("%d",&x); //游戏开始,输入数字
if(x==666)
{
printf("游戏结束 炸弹是%d\n",boom);
return -1; //如果输入的值为设定的退出游戏值,那么整个程序结束。 (return 是函数返回值,函数接收到返回值,自然不会往下运行)
}
if(x==boom)
{
printf("你输了\n");
return -1;
}
if(x<left||x>right) //如果输入的值不在左值和右值之间
{
printf("输入错误 范围是%d--%d\n",left,right); //打印错误信息,并给出左值和右值
continue; //这个很重要,continue是跳出一次循环,一会给出画图解释。
}
if(x>boom) //如果输入的值大于炸弹
{
right=x; //更新右值,对应的范围应该缩小。
printf("大了,范围是%d--%d\n",left,right); //右值更新,打印最新的右值
}
if(x<boom) //如果输入的值小于炸弹
{
left=x; //更新左值,对应的范围应该缩小。
printf("小了,范围是%d--%d\n",left,right); //左值更新,打印最新的左值
}
}
return 0;
}
void start()
{
printf("数字炸弹游戏开始\n");
printf("输入666退出游戏\n");
printf("炸弹是随机数\n");
printf("请输入1----100的数字\n");
}
对于上文中提及的画图给出提示,如下图:
continue关键字的作用是,跳出本次循环。也就是说,在continue之后的语句不会往下执行,而返回 while(1) 开始继续输入。举个简单例子,给出运行结果(删除continue之后的效果图):
这是因为continue下面的代码(if里面的条件满足),会更新我的右值,很显然,对于非法输入时,不应该更新我的左值或者右值,这一条 (if(x<left||x>right)) 判断值是否在范围内的语句,应该在 if(x>boom) 和 if(x<boom) 的前面。对于输入的值,应该先判断其合法性,再去判断更改我的左值或者右值。
对于这个小游戏,只需要使用一个 while() 循环就可以解决,不需要多次嵌套。
另外,多说一下多个 if() 和 if()-else if() 的区别:
- 多个 if() 的话,是只要满足条件,if() 里面的语句就会执行;
- 而 else if() 则是,当 if() 不满足时,才会往下进行,直到条件成立执行本条,并且在往后的 else if() 或者 else 也不会在执行。
这是小编初学c语言的一些实践和总结。希望对大家有所帮助。