JAVA推箱子游戏(一)

游戏介绍:

经典的推箱子游戏是一款来自日本的游戏,目的是训练玩家的逻辑思维能力。在一个狭小的仓库中,要求把木箱放到指定的位置,稍不小心就会出现箱子无法移动或者通道被堵住的情况,因此要求玩家巧秒的利用有限的空间和通道,合理安排移动的次序的位置,才能顺利的完成任务

功能介绍:

运行游戏载入相应的地图,屏幕中出现一名推箱子的工人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):退出判断规则布局不做任何改变



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值