所有分类
  • 所有分类
  • 后端开发
日本顶尖推箱子游戏!lufylegend引擎升级,全新玩法惊艳登场

日本顶尖推箱子游戏!lufylegend引擎升级,全新玩法惊艳登场

开言:lufylegend.js引擎已经更新到1.6以上了,虽然我陆陆续续发布了一些教程,也提供了一些简单的游戏示例,但是一直以来也没有制作几款完整的作品来

推箱子游戏简介

日本顶尖推箱子游戏!lufylegend引擎升级,全新玩法惊艳登场

小游戏”推箱子”就是个超级考验脑力的游戏,起源于日本!你得把箱子移动到指定地方,但切记只能推不能拉。这种玩法让人玩得停不下来,而且还能提升我们的逻辑能力!这个有趣的小游戏不仅在日本火爆得不得了,全世界都有很多人都喜欢玩它。

使用lufylegend.js引擎开发推箱子游戏

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]
];

最近,那个叫lufylegend.js的引擎升级到了1.6版,给有些人带来了更多好用又强大的新玩意儿。有个程序猿说了,要靠这新引擎做出几个好玩的大制作,就像那个老得不能再老但玩不腻的推箱子那样。他做出来的那个推箱子 Game不仅保留了原来的味道,还有些新的花样,像排名什么的,让大家玩得更爽快!

绘制游戏界面

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);
}

咱们做推箱子游戏得先画个画面呀。直接用那些预设好的数字,就把图片放在对应的地方了。然后,就挑几个lsprite和lbmp这些lufylegend引擎里的小玩意儿,给画面添点色彩。别忘了放上小箱子,还得专门弄个数组存起来,后面判断能不能通关就要靠它们!

判断游戏通关条件

var box01 = [
{x:3,y:3},
{x:4,y:3},
{x:5,y:3},
{x:5,y:5},
{x:6,y:5},
{x:7,y:5}
];

function drawBox(){
	var bitmap;
	for(var i=0;i<boxList[stageIndex].length;i++){
		bitmap = new LBitmap(bitmapDataList[2]);
		bitmap.x = boxList[stageIndex][i].x*STEP;
		bitmap.y = boxList[stageIndex][i].y*STEP;
		boxLayer.addChild(bitmap);
		nowBoxList.push(bitmap);
	}
}

想知道你是不是闯关成功?看所有的箱子是不是都回到了该去的地方。只要循环一圈看看每个箱子在哪儿,跟目标地点对个照,要是所有的箱子都正确落地,那就恭喜通关!这样的设计既保留了游戏的挑战性又让你乐在其中。

人物移动及动画效果

function checkBox(){
	var bitmap,x,y,win=true;
	list = [];
	for(var i=0;i<stageList[stageIndex].length;i++){
		list.push(stageList[stageIndex][i].join(",").split(","));
	}
	
	for(var i=0;i<nowBoxList.length;i++){
		bitmap = nowBoxList[i];
		x = bitmap.x / STEP;
		y = bitmap.y / STEP;
		if(list[y][x] == 4){
			bitmap.bitmapData = bitmapDataList[3];
		}else{
			bitmap.bitmapData = bitmapDataList[2];
			win = false;
		}
		list[y][x] += 10;
	}
	if(win)gameClearShow();
}

当你玩推箱子游戏时,角色是跟着你操控跑的!但你知道吗?想要让它移动得更有趣,就用 lufylegend.js引擎里的LAnimation对象!只要设置好方向和激活移动事件,就能看到生动活泼的人物走路画面了,真的很棒!

交互设计与优化

		if(list[y][x] == 4){
			bitmap.bitmapData = bitmapDataList[3];
		}else{
			bitmap.bitmapData = bitmapDataList[2];
			win = false;
		}

除了简单的玩法和规矩,一款好的推箱子游戏还要重视用户体验和互动设计。就要想办法让大家玩得轻松,懂规则又会玩,不能让游戏卡住或者变得繁琐。反复试玩和调整就能逐渐改善用户体验!

完整源代码分享

日本顶尖推箱子游戏!lufylegend引擎升级,全新玩法惊艳登场

你别急,看到最后就能找到推箱子游戏的源码!读完这篇文章,你还能了解到它是怎么做出来的,以及lufylegend.js引擎是怎么用的~

结语与展望

/**
 * 循环事件 
 * @param data 图片数据
 * @param row 图片分割行数
 * @param col 图片分割列数
 **/
function Character(data,row,col){
	base(this,LSprite,[]);
	var self = this;
	//设定人物动作速度
	self.speed = 2;
	self.speedIndex = 0;
	//设定人物大小
	data.setProperties(0,0,data.image.width/col,data.image.height/row);
	//得到人物图片拆分数组
	var list = LGlobal.pideCoordinate(data.image.width,data.image.height,row,col);
	//设定人物动画
	self.anime = new LAnimation(this,data,list);
	//设定不移动
	self.move = false;
	//在一个移动步长中的移动次数设定
	self.moveIndex = 0;
};

今天我就要来给你扒一扒用lufylegend.js引擎做推箱子游戏是怎么回事,希望能帮到那些喜欢html5和玩游戏的小伙伴~以后,这个引擎会越来越牛逼,肯定能做出好多好玩的东西,真是期待!

/**
 * 开始移动 
 **/
Character.prototype.onmove = function (){
	var self = this;
	//设定一个移动步长中的移动次数
	var ml_cnt = 4;
	//计算一次移动的长度
	var ml = STEP/ml_cnt;
	//根据移动方向,开始移动
	switch (self.direction){
		case UP:
			self.y -= ml;
			if(box)box.y -= ml;
			break;
		case LEFT:
			self.x -= ml;
			if(box)box.x -= ml;
			break;
		case RIGHT:
			self.x += ml;
			if(box)box.x += ml;
			break;
		case DOWN:
			self.y += ml;
			if(box)box.y += ml;
			break;
	}
	self.moveIndex++;
	//当移动次数等于设定的次数,开始判断是否继续移动
	if(self.moveIndex >= ml_cnt){
		self.moveIndex = 0;
		box = null;
		self.move = false;
		checkBox();
	}
};

原文链接:https://www.icz.com/technicalinformation/web/2024/04/15013.html,转载请注明出处~~~
0

评论0

请先
注意:请收藏好网址www.icz.com,防止失联!站内免费资源持续上传中…!赞助我们
显示验证码
没有账号?注册  忘记密码?