数字炸弹小游戏

       最近开始接触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语言的一些实践和总结。希望对大家有所帮助。

"数字炸弹"游戏通常是一个简单的JavaScript编程练习,它涉及到数组遍历、随机数生成以及计时功能。下面是一个简单的示例代码,演示了如何创建一个基础版的数字炸弹游戏: ```javascript // 定义游戏矩阵大小 const gridSize = 5; let gameBoard = Array(gridSize).fill(0).map(() => []); // 创建数字炸弹(通常是地雷,这里是0) function createBombs(numBombs) { for (let i = 0; i < numBombs; i++) { let x = Math.floor(Math.random() * gridSize); let y = Math.floor(Math.random() * gridSize); if (!gameBoard[x][y]) { gameBoard[x][y] = 0; // 设置为地雷 } } } // 遍历并点击数字 function handleClick(x, y) { if (gameBoard[x][y] === 0) { // 如果是地雷 alert('爆破了!'); return false; } else { revealArea(x, y); // 转移控制到揭示周围区域 } } // 展示周围的数字 function revealArea(x, y) { const neighbors = getNeighbors(x, y); for (let nx, ny of neighbors) { if (!gameBoard[nx][ny]) { gameBoard[nx][ny] = revealNumber(nx, ny); } } } // 获取相邻位置 function getNeighbors(x, y) { return [ [x - 1, y - 1], [x, y - 1], [x + 1, y - 1], [x - 1, y], [x + 1, y], [x - 1, y + 1], [x, y + 1], [x + 1, y + 1] ]; } // 查看周围的数值并递归处理 function revealNumber(x, y) { return gameBoard[x][y] || (gameBoard[x][y] = Math.floor(Math.random() * 9) + 1); } // 初始化游戏 createBombs(10); // 设定一定数量的地雷 for (let i = 0; i < gridSize; i++) { for (let j = 0; j < gridSize; j++) { document.body.appendChild(document.createElement('button')) .textContent = gameBoard[i][j] || ' ' .addEventListener('click', () => handleClick(i, j)); } } ```
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式小企鹅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值