[html5游戏开发]经典的推箱子

开言:

lufylegend.js引擎已经更新到1.6以上了,虽然我陆陆续续发布了一些教程,也提供了一些简单的游戏示例,但是一直以来也没有制作几款完整的作品来,实在也是自己一个人时间太有限了,接下来的时间,我会尽可能的使用lufylegend.js引擎开发几款完整的作品,来增加一下这个引擎的说服力,希望喜欢html5,喜欢游戏开发的朋友多提些意见。

这一次先来看一个经典的推箱子游戏,相信大家也都知道这款游戏,推箱子游戏最早源于日本,是一款极其锻炼逻辑思考能力的游戏,箱子只能推不能拉,玩家必须在一个有限的空间里,将所有的箱子归位,如下图所示。

350

图1



这是我用最新版lufylegend.js引擎开发的,想挑战一下的朋友,可以点击下面的游戏链接试一下自己能通过几关。

http://lufylegend.com/demo/box

游戏一共6关,我在游戏里加入了排名系统,每过一关可以上传自己的成绩,跟大家比拼一下,或者您也可以将自己的过关方法心得等回复到文章下面。


制作开始

好了,废话说完了,现在来看看如何来制作这款游戏。

一,首先,你需要下载lufylegend.js引擎

下面是我在博客的lufylegend-1.6.0发布帖

http://blog.csdn.net/lufy_legend/article/details/8593968


下面一步步来进入开发正题。

二,绘制背景和箱子

我们先来准备一张图,


图2

如果我们将上面的图平均分割成5份,那么他们的序号分别为0,1,2,3,4。

我们利用上面5个小图片就可以拼接任意的房间以及房间内箱子的摆放。

比如,我博客一开始的示例图1,它是游戏第一关的截图,要绘制这个房间,首先要知道这些图片应该摆放的位置,我们预先准备一个数组。

var stage01 = [
[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],
[-1,-1, 1, 1, 1, 1, 1, 1,-1,-1,-1],
[-1,-1, 1, 0, 0, 0, 0, 1, 1,-1,-1],
[-1,-1, 1, 0, 0, 4, 0, 0, 1,-1,-1],
[-1,-1, 1, 4, 4, 0, 4, 4, 1,-1,-1],
[-1,-1, 1, 0, 0, 4, 0, 0, 1,-1,-1],
[-1,-1, 1, 1, 0, 0, 0, 0, 1,-1,-1],
[-1,-1,-1, 1, 1, 1, 1, 1, 1,-1,-1],
[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]
];
上面的-1表示不摆放,然后0,1,4等分别对应着 图2中的序号。

按照这个数组来绘制房间就简单了,看下面的函数

function drawFloor(x,y){
	if(list[y][x] < 0)return;
	var bitmap = new LBitmap(bitmapDataList[list[y][x]]);
	bitmap.x = x*STEP;
	bitmap.y = y*STEP;
	boxLayer.addChild(bitmap);
}
这个list数组就是上面的stage01数组,参数x,y分别是数组的列和行的序号,STEP是每个小图片的长度,绘制一个小图块,其实我就是建立了一个LBitmap对象。

关于LSprite,LBitmap等对象是lufylegend.js引擎中很常用的对象,关于它们的用法,请大家参照官方的API文档,或者看我以前的一些文章来了解一下,这里不加赘述了。

当然,一开始,房间里要有箱子,箱子一开始的位置也是需要预先设置好的,我们同样建立一个数组。

var box01 = [
{x:3,y:3},
{x:4,y:3},
{x:5,y:3},
{x:5,y:5},
{x:6,y:5},
{x
阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 50
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 34
    评论
### 回答1: 好的,为了开发一个推箱子游戏,你需要了解一些基本的编程概念,如变量,循环,条件语句和函数。 首先,你需要定义游戏场景,即箱子和人物所在的空间。你可以使用二维数组表示游戏场景,每个元素都代表一个格子。 然后,你可以定义玩家的行动,如上下左右移动。当玩家移动时,需要判断该格子是否可以移动。如果是,则更新场景。 最后,你需要定义游戏的目标,如将所有箱子移动到指定位置。当游戏目标完成时,游戏结束。 以下是一个简单的代码示例: ``` def move(direction): if direction == "up": # code to move up elif direction == "down": # code to move down elif direction == "left": # code to move left elif direction == "right": # code to move right def play_game(): # code to initialize game while not game_over: direction = input("Enter a direction: up, down, left, or right") move(direction) # code to check game status and update game scene play_game() ``` 希望这个示例能帮助你开始编写代码。 ### 回答2: 推箱子是一款经典的益智类游戏,通过推动箱子,将所有的箱子推到指定位置,完成挑战。下面我将用300字介绍如何用Python开发一个推箱子游戏。 首先,需要导入Pygame库,它是一款专门用于游戏开发的库。接着,创建一个游戏窗口,并设置窗口大小和标题。 在游戏中,需要定义地图和角色的图像。使用数组来表示地图,并根据不同的值选择相应的图像,如墙、目标、箱子和人物。接着,将地图和角色渲染到游戏窗口中。 接下来,需要定义人物的移动操作。通过监听键盘事件,如果按下相应的键,则根据当前人物的位置和移动方向,判断是否可以进行移动操作。如果可以移动,则更新人物的位置,并相应地更新地图和角色的位置。 在判断箱子的移动时,需要考虑箱子不能穿过墙或其他箱子,只能推动。因此,需要在人物移动后判断人物是否与箱子相邻,若相邻则判断箱子是否可以移动。在确定箱子可以移动后,更新箱子的位置,并判断是否完成了挑战的目标。 在游戏中,可以根据需要添加背景音乐、背景图像和游戏难度等。 最后,添加一个游戏循环,用来更新游戏窗口的显示,并根据键盘事件进行相应的操作。 以上就是用Python开发推箱子游戏的大致步骤。通过学习和实践,可以进一步完善游戏的细节和功能,达到更好的游戏体验。 ### 回答3: 推箱子是一款经典的益智游戏,玩家需要将箱子推至指定位置。我们可以使用Python来开发一个简单的推箱子游戏。 首先,我们需要创建游戏的地图,可以使用一个二维列表来表示。列表中的元素可以用不同的字符来表示不同的物体,比如空地、墙、箱子和目标位置。我们可以用"_"表示空地,"#"表示墙,"@"表示玩家,"$"表示箱子,"X"表示目标位置。游戏地图可以按照游戏难度进行设计,可以使用数字代表不同难度级别,比如1代表简单、2代表中等、3代表困难。 接下来,我们需要实现一些基本的操作函数,比如移动箱子、玩家的移动、判断游戏是否胜利等。我们可以使用键盘上的方向键来控制玩家的移动,用"WASD"键来控制箱子的移动。当箱子被推到目标位置时,判断游戏是否胜利,如果所有的箱子都被成功推到目标位置则游戏获胜。 最后,我们可以使用Python的图形界面库来创建游戏界面,比如Pygame或Tkinter。在界面中显示游戏地图,并通过监听玩家的按键操作来更新地图的状态,从而实现游戏的进行。 通过以上的步骤,我们就可以使用Python开发一个简单的推箱子游戏。当然,开发一个完整的游戏还需要考虑更多的细节,比如关卡的设计、游戏的界面美化和声音效果等。但通过这个基础的框架,我们可以不断扩展和完善游戏,使其更加有趣和具有挑战性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 34
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

lufy

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

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

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

打赏作者

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

抵扣说明:

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

余额充值