游戏介绍:
经典的推箱子游戏是一款来自日本的游戏,目的是训练玩家的逻辑思维能力。在一个狭小的仓库中,要求把木箱放到指定的位置,稍不小心就会出现箱子无法移动或者通道被堵住的情况,因此要求玩家巧秒的利用有限的空间和通道,合理安排移动的次序的位置,才能顺利的完成任务
功能介绍:
运行游戏载入相应的地图,屏幕中出现一名推箱子的工人https://img-blog.csdn.net/20150620091305014?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWFuZ3Bfd2s=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center、其周围是围墙、人可以走的通道、几个可以移动的箱子、和箱子的放置目的地。玩家通过按上下左右键控制工人推箱子、
当所有的箱子推到目的地后出现过关信息,并显示下一关、
如果推错了,玩家通过单击鼠标右键可以撤消上次的移动操作、
还可以按空格键重玩这一关,直到通过全部关卡。
游戏中我们用到的是图片资源来完成游戏的绘图如下:
图片资源说明如下 :
pic1:墙 pic2:箱子 pic3:箱子在目的地上
pic4:目的地 pic5:向下的人 pic6:向左的人
pic7:向右的人 pic8:向上的人 pic9:通道
pic10:站在目的地向下的人 pic11:站在目的地向左的人 pic12:站在目的地向右的人
pic13:站在目的地向上的人
程序设计思路:
对于工人的操作很简单:4个方向的移动,工人移动箱子也随之移动。
地图数据最为关键:第一关的地图都要更换,这些位置也要变,首先我们设计一个二维数组map.我们所地图想象成一个网格,每个格子就是图片的大小30像素,工人和箱子每步移动的距离也是30像素
每个格子的状态值分别用枚举型值:
//定义一些常量,对应地图的元素
final byte WALL = 1,BOX = 2,BOXONEND = 3, END = 4,
MANDOWN = 5,MANLEFT = 6, MANRIGHT = 7,MANUP = 8, GRASS = 9, MANDOWNONEND = 10,MANLEFTONEND = 11,
MENRIGHTONEND = 12,MANUPONEND = 13;
下面分析算法:
假设工人移动方式向右,其它方向原理是一致的,P1、P2分别代表工人移动趋势方向前的两个方格
(1)前方P1是围墙:
如果工人前方是围墙 {
退出规则判断,布局不做任何改变
}
(2)前方P1是通道或目的地
如果工人前方是通道或目的地 {
工人可以进入到P1方格,修改相关位置的格子状态值
}
(3)前方P1是箱子
在这种情况,需要判断箱子(P1)前方P2处的物体,来判断工人是否可以移动,此时有以下可能:
一、P1处为箱子(BOX)或者放到目的地的箱子(BOXONEND),P2处为通道(GRASS):工人可以进到P1方格,P2方格的状态可以修改为箱子(BOX),修改相关位格子的状态值
二、P1处为箱子(BOX)或者放到目的地的箱子(BOXONEND),P2处为目的地(END):工人可以进到P1方格,P2处为放到目的地的箱子(BOXONEND),修改相关位格子的状态值
三、P1处为箱子(BOX),P2处为墙(WALL):退出判断规则布局不做任何改变