C语言数组实现推箱子游戏

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

在学习C语言的数组知识后,我们通常会想能够用这个来干什么呢?下面我们就用数组来实现一款经典的游戏——推箱子。


一、地图思考

在终端地图中,我们使用一个个像素点来绘制地图,通过不同的数值,来使像素点显示不同字符图形,如下效果所示
在这里插入图片描述
我们可以通过定义自己的字符图形数组,通过不同的数值变量数组,再从终端输出就可得到以上效果,在以下数组中,firstMap就是我们的图形数组:

/*
	⊕------把球推到框里                 7
	♀-----人                            5
	●-------球                          4
	○-------框                          3
	■----墙                             1
	两个空格:表示空地                   0
*/
char Pic[][3] = {
   
   "  ", "■", " ", "○", "●", "♀", " ", "⊕"};
int firstMap[10][10] = {
   
   
		1,1,1,1,1,1,1,1,1,1,
		1,3,1,1,0,0,0,4,3,1,
		1,4,1,0,0,1,1,1,1,1,
		1,0,0,0,1,1,1,1,1,1,
		1,1,0,0,0,5,0,0,1,1,
		1,1,4,0,1,1,1,4,1,1,
		1,1,3,0,0,0,0,3,1,1,
		1,1,0,0,1,1,1,1,1,1,
		1,3,4,0,0,0,4,3,1,1,
		1,1,1,1,1,1,1,1,1,1
	};
for(int i = 0; i < 10; i++)
{
   
   
	for(int j = 0; j < 10; j++)
	{
   
   
		cout << Pic[firstMap[i][j]];
	}
	cout << endl;
}

二.数值定义解释

在这里可能会有很多小伙伴不明白,为什么不定义连续的数值0~5来表示空地、墙和球等数值,这样定义不就使Pic字符图形数组更好赋图形吗。这是因为,我们在进行人物移动时,是通过数值的加减来实现地图上人物,球,框的位置变化当人物移动时,会将人物当前位置减5,便得到0,而0刚好是空地,移动到的位置加5,则原来是空地的地方就是0+5=5,所以再重新刷新地图后,人物就会出现移动的效果,下面通过一张图片来解释。

同理对于其他操作,比如人物移动方向移动方向是球框挨着,对应的操作如下,当然,在更改数组时,还需要对人物移动方向位置进行判断。
在这里插入图片描述
当然还有各种其他情况,比如人物移动方向是墙、框和球已经进入框的情况,这些都需要进行判断来对数值进行加减,从而使地图得到更新,这也是我们定义地图数据的依据。所以,在我们开始编码前,应该想想游戏地图的中的数值安排,使地图中的数据更好操作。


总结

以下是整个推箱子游戏的完整代码,地图部分我只是进行了简单的设置,小伙伴们可自行更改。在代码中,我设置了三个关卡,使用了一个三维数组的方式来实现,也可以使用二维数组或者一维数组的方式来实现。(由于是第一次写文章,有不恰当之处,还请多点理解)

#include <iostream>
#include <conio.h>

using namespace std;

int main()
{
   
   
	/*

	⊕------把球推到框里                 7
	♀-----人                            5
	●-------球                          4
	○-------框                          3
	■----墙                             1
	两个空格:表示空地                   0
	*/

	int guanKa = 0;

	int map[][10][10] = {
   
   
		{
   
   1,1,1,1,1,1,1,1,1,1,
		 1,3,1,1,0,0,0,4,3,1,
		 1,4,1,0,0,1,1,1,1,1,
		 1,0,0,0,1,1,1,1,1,1,
		 1,1,0,0,0,5,0,0,1,1,
		 1,1,4,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值