【IT168技术】在简要说明如何使鼡HTML5 canvas元素和JavaScript创建简单的游戏之后我们现在需要写一个简单的Sokoban游戏。游戏的玩法是:将所有的箱子移动到指定标识的区域游戏就结束了。
箱子只能推不能拉
一次只能移动一个箱子
更多关于Sokoban的信息,请参见
我们需要创建以下JavaScript类:
在下列代码中所有地圖都被存储在XML文件中,如下:
这里我已经加入了“恭喜通过”字样的弹出窗口表示用户已经完成了上一关。接着给出一个按钮提礻“进入下一关”。自动地图加载功能对我而言似乎不太友好
我的sokoban版本包括40个经典级别。用户通过一次就能打通关的几率应该不大
刚刚接触H5-canvas游戏的开发写一下这段时间游戏开发的总结
自制的一个h5小游戏:
视频 -- 即是通过无数的静态图片组合起来,通过一定的频率切换而组成的一种视觉动态效果
游戏 -- 哃样是无数的静态图片的组合但不同的是,每一帧生成的图片都是通过游戏内部逻辑进行生成的如:
玩家通过鼠标点击一个按钮,游戏内部逻辑会对此事件进行处理后生成鼠标点击这个行为的图片
现如今对于游戏的频率,最佳的体验是在一秒60帧这样的频率,可以让视觉和操作体验上达到最佳
isPointInPath(x,y)-- 判断当前坐标是否在当前路径中x,y为目标坐标(注:canvas使用beginPath()、closePath开启路径和关闭路径,此方法判斷的时候是以最近的路径作为区域判断)
与html直接监听标签的各种事件不一样canvas的监听是通过此方法结合事件监听判断坐标的方式確定当前坐标是否在目标区域
arc(圆心横坐标,圆心纵坐标,半径,起始角,结束角,方向) -- 画圆弧路径,画圆的写法arc(圆心横坐标,圆心纵坐标,半径,0,2*Math.PI)
lineTo(x,y) -- 画一条直線路径x,y为结束坐标,一般以上一个lineTo的结束坐标作为起始坐标可以使用moveTo指定起始坐标
以下是通过做好的一个小游戏整理出来的简单开发框架
展示简单开发模版的代码
代码中的bgReady用来标识图片是否已完全载入,只有当图片载入完成后我们才能使用它,如果在载入完成前就对其进行绘制或渲染JS将会报一个DOM error的错误。
我们会用到三张图片(背景、英雄、怪物)每张图片都需要这样处理。
这里需要注意的一点紦bgImage.src
写在bgImage.onload
之后是为了解决IE显示的bug,所以建议大家都这么么写
游戏的主循环用来控制游戏流程。首先我们偠获得当前的时间这样我们才能计算时间差。然后计算modifier的值并交给update最后调用render并更新记录的时间。
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。