- 浏览: 599970 次
- 来自: ...
文章分类
最新评论
-
lgh1992314:
相同的元素呢
一种离散化方法 -
HelloSummerR:
圆心的位置是随机的,于是圆的部分会落到canvas外,那样就显 ...
HTML5 Canvas学习笔记(1)处理鼠标事件 -
hlstudio:
好久没见到sokuban了,这有个java版的,带源码,可以参 ...
求推箱子的最小步数(java) -
肖泽文:
太好了,谢谢你。。有中文注释!
HTML5 推箱子游戏过关演示动画 -
swm8023:
删除操作,将最后一个叶子节点插入后也有可能上浮吧
彻底弄懂最大堆的四种操作(图解+程序)(JAVA)
点击下面链接可看动画:
http://www.108js.com/article/article3/zip1/exam/a.html
效果图:
代码:
全部代码请下载。
热情奉献:HTML5 Canvas绘图与动画学习59例源码
http://www.108js.com/example.html
http://www.108js.com/article/article3/zip1/exam/a.html
效果图:
代码:
var canvas = document.getElementById("gameBox"); var context = canvas.getContext("2d"); var imglen = 14; //需预加载的图片数量 /*游戏主对象*/ var FlGame = { grade : 2, //关卡 loadImgLen : 0, //已加载的图片数量 imgList : {},//缓存所有图像 map : [],//地图数据 timer : null, //计时器 girlPos : [], //女孩的位置 girlDirec : "down", //女孩当前的朝向(默认正面朝下) girlFrame : 0, //女孩动画第N帧,共两帧 MoveTimes:0,//移动次数 UseTime:0, lastTime:0, msg: document.getElementById("msg"), setp:-1,//移动步数 result:[],//过关答案 init : function(){ //入口 this.result=getSuccess(this.grade).split(""); this.getMap(this.grade); this.draw(); this.lastTime= Date.now(); this.run(); }, getMap : function(_mapIndex){ this.map = getMap(_mapIndex); }, draw : function(){ //绘制主对象 this.clearCanvas(); this.drawMap(); this.drawGirl(); this.showMoveInfo(); }, // 游戏主循环 run : function(){ //运行帧 var now = Date.now(); var dt = (now - this.lastTime) / 1000.0; this.update(dt);//更新 this.draw(); this.lastTime = now; var that = this; this.timer = setTimeout(function(){ that.run(); },1000) }, // 更新游戏对象 update: function(dt) { this.UseTime += dt; this.readText(dt); }, readText:function(dt){ var sc=this.getSetp(); if(sc=="d"){ this.girlPos[0]+=1; this.girlPos[1]+=0; this.girlDirec ="down"; this.MoveTimes++; } if(sc=="u"){ this.girlPos[0]+=-1; this.girlPos[1]+=0; this.girlDirec ="up"; this.MoveTimes++; } if(sc=="l"){ this.girlPos[0]+=0; this.girlPos[1]+=-1; this.girlDirec ="left"; this.MoveTimes++; } if(sc=="r"){ this.girlPos[0]+=0; this.girlPos[1]+=+1; this.girlDirec ="right"; this.MoveTimes++; } if(sc=="D"){ this.girlPos[0]+=1; this.girlPos[1]+=0; this.girlDirec ="down"; this.MoveTimes++; if(this.map[this.girlPos[0]][this.girlPos[1]]==6)//人的位置是带花的花盆 this.map[this.girlPos[0]][this.girlPos[1]] = 4;//留下花 else this.map[this.girlPos[0]][this.girlPos[1]] = 3; if( this.map[this.girlPos[0]+1][this.girlPos[1]] ==4) this.map[this.girlPos[0]+1][this.girlPos[1]] = 6; else this.map[this.girlPos[0]+1][this.girlPos[1]] = 5; } if(sc=="U"){ this.girlPos[0]+=-1; this.girlPos[1]+=0; this.girlDirec ="up"; this.MoveTimes++; if(this.map[this.girlPos[0]][this.girlPos[1]]==6)//人的位置是带花的花盆 this.map[this.girlPos[0]][this.girlPos[1]] = 4;//留下花 else this.map[this.girlPos[0]][this.girlPos[1]] = 3; if( this.map[this.girlPos[0]-1][this.girlPos[1]] ==4) this.map[this.girlPos[0]-1][this.girlPos[1]] = 6; else this.map[this.girlPos[0]-1][this.girlPos[1]] = 5; } if(sc=="R"){ this.girlPos[0]+=0; this.girlPos[1]+=1; this.girlDirec ="right"; this.MoveTimes++; if(this.map[this.girlPos[0]][this.girlPos[1]]==6)//人的位置是带花的花盆 this.map[this.girlPos[0]][this.girlPos[1]] = 4;//留下花 else this.map[this.girlPos[0]][this.girlPos[1]] = 3; if( this.map[this.girlPos[0]][this.girlPos[1]+1] ==4) this.map[this.girlPos[0]][this.girlPos[1]+1] = 6; else this.map[this.girlPos[0]][this.girlPos[1]+1] = 5; } if(sc=="L"){ this.girlPos[0]+=0; this.girlPos[1]+=-1; this.girlDirec ="left"; this.MoveTimes++; if(this.map[this.girlPos[0]][this.girlPos[1]]==6)//人的位置是带花的花盆 this.map[this.girlPos[0]][this.girlPos[1]] = 4;//留下花 else this.map[this.girlPos[0]][this.girlPos[1]] = 3; if( this.map[this.girlPos[0]][this.girlPos[1]-1] ==4) this.map[this.girlPos[0]][this.girlPos[1]-1] = 6; else this.map[this.girlPos[0]][this.girlPos[1]-1] = 5; } }, getSetp:function(){ this.setp++; if(this.setp==this.result.length) { return 0; } return this.result[this.setp]; }, drawMap : function(){ var mapBg = context.createPattern(this.imgList.map_bg,"repeat"); context.save(); context.fillStyle = mapBg; context.fillRect(0,0,667,519); context.restore(); for(var i=0;i<this.map.length;i++){ for(var j=0;j<this.map[i].length;j++){ if(this.map[i][j]!=1){ var x = (j+1)*1+j*36; var y = (i+1)*1+i*36; if(this.map[i][j]==9){//人物位置,在人的位置要绘底图 this.map[i][j] = 3; if(this.girlPos.length==0){ //初始化时,取一次人物的初始坐标 this.girlPos = [i,j]; } } var mapFlag = this.map[i][j]; context.drawImage(this.imgList["map_"+mapFlag],x,y); } } } }, drawGirl :function(){ //女孩,direc方向 this.girlFrame = this.girlFrame==0?1:0; var i = this.girlPos[0]; var j = this.girlPos[1]; var x = (j+1)*1+j*36+3; var y = (i+1)*1+i*36-4; context.drawImage(this.imgList["npc_"+this.girlDirec+"_"+this.girlFrame],x,y); }, showMoveInfo:function() { this.msg.innerHTML="第"+(this.grade)+"关 移动次数:"+this.MoveTimes+" 用时:"+Math.floor(this.UseTime); }, stop : function(){ //停止 clearInterval(this.timer); }, clearCanvas : function(){ //清空画布 canvas.width=0; canvas.width=667; }, imgOnload : function(img){ FlGame.loadImgLen++; FlGame.imgList[img.picname] = img; if(FlGame.loadImgLen==imglen){ FlGame.init();//所有图片加载后启动动画 } } }; //加载所属图片 (function(){ var imgList = { //加载的清单 map_bg:"images/map_bg.png", map_2:"images/map_2.jpg", map_3:"images/map_3.jpg", map_4:"images/map_4.jpg", map_5:"images/map_5.jpg", map_6:"images/map_6.jpg", npc_down_0:"images/npc_down_0.png", npc_down_1:"images/npc_down_1.png", npc_up_0:"images/npc_up_0.png", npc_up_1:"images/npc_up_1.png", npc_left_0:"images/npc_left_0.png", npc_left_1:"images/npc_left_1.png", npc_right_0:"images/npc_right_0.png", npc_right_1:"images/npc_right_1.png" }; for(name in imgList){ var img = new Image(); img.src = imgList[name]; img.picname = name; img.onload =function(){ FlGame.imgOnload(this);} img.onerror = function(e){ alert("资源加载时发生错误!"+this.src); } } })();
全部代码请下载。
热情奉献:HTML5 Canvas绘图与动画学习59例源码
http://www.108js.com/example.html
发表评论
-
HTML5 Canvas 旋转的“金字塔”
2015-12-24 13:25 10071效果图: 效果链接:http://www.108js.co ... -
HTML5 canvas 飘扬的五星红旗
2015-12-21 08:56 2445效果图: 效果链接: http://www.108js.co ... -
简单HTML5 Canvas Arrow旋转动画
2015-05-22 08:38 12961效果图: 效果链接: http://www.108js.c ... -
HTML5 Canvas简单透明文字动画
2015-05-22 08:17 7445效果图: 效果链接: http://www.108js.c ... -
一个非常好的HTML5 Canvas焰火效果
2014-12-28 15:56 1620效果图: 点击观看效果:http://www.108js. ... -
《HTML5 Canvas学习笔记(10)》数钱数到手抽筋
2014-12-21 14:01 3260网上看到一个游戏《数钱数到手抽筋》简单的模仿一下。 鼠标拖动或 ... -
HTML5 Canvas学习笔记(9)俄罗斯方块游戏之三(游戏面板)
2014-07-05 07:13 1406接上一遍《HTML5 Canvas学习笔记(8)俄罗斯方块游戏 ... -
HTML5 Canvas学习笔记(8)俄罗斯方块游戏之二(方块)
2014-07-04 13:08 1698接上一遍《HTML5 Canvas学习笔记(7)俄罗斯方块游戏 ... -
HTML5 Canvas学习笔记(7)俄罗斯方块游戏之一(色块)
2014-07-04 10:53 2401在网上看到一个俄罗斯方块游戏: http://www.108j ... -
HTML5 Canvas学习笔记(6)拼图游戏(数字版)
2014-06-28 17:38 2564今天网上发现了一段代码,只有界面,很不错,学习了并完成了逻辑。 ... -
HTML5 Canvas学习笔记(5)游戏得分动画
2014-06-26 17:11 1122效果图: 点击查看效果: http://www.108js ... -
HTML5 Canvas学习笔记(4)游戏界面的淡入淡出
2014-06-26 11:26 1975效果图: 点击看效果: http://www.108js. ... -
HTML5 Canvas学习笔记(3)加载游戏/动画音乐
2014-06-25 11:20 1700先要准备应付各种浏览器的声音文件,什么.mp3,.ogg ... -
HTML5 Canvas学习笔记(2)菜单高亮显示与像素字体
2014-06-23 23:13 1972看到哪,学到哪,记到哪。见谅,这些笔记就没有顺序和知识上的连贯 ... -
HTML5 Canvas学习笔记(1)处理鼠标事件
2014-06-21 17:48 2983一直在学习HTML5 Canvas相关内容,游戏,动画 ... -
javaScript 广度优先搜索法"自动推箱子"(二)
2014-06-12 09:57 1340接上文: javaScript 广度优先搜索法"自动 ... -
javaScript 广度优先搜索法"自动推箱子"(一)
2014-06-12 09:45 1851用JS写了一个“广度优先搜索法”自动推箱子,理论上无论 ... -
HTML5 Canvas简单淡入淡出游戏启动界面
2014-06-05 12:22 2256欢迎访问博主的网站:http://www.108js.com ... -
HTML5 Canvas贝塞尔曲线动画
2014-05-22 08:35 1460点击这里可以查看动画效果: http://www.108js. ... -
javascript for语句最佳实践
2014-05-22 08:22 597当执行冗长的for语句时,要保持语句块的尽量简洁,例如: 糟 ...
相关推荐
随着HTML5技术的发展,H5版本的推箱子小游戏应运而生,使得这款游戏可以在网页上直接游玩,无需安装任何软件或插件。本文将深入探讨H5版本推箱子小游戏的源码结构、实现原理以及相关的技术知识点。 首先,源码中的`...
在这个"经典网页版HTML5推箱子小游戏"中,开发者利用HTML5的Canvas元素创建了一个互动游戏。Canvas是一个基于矢量图形的画布,允许开发者通过JavaScript来绘制动态图像。 Canvas API提供了丰富的绘图功能,包括画线...
在这个“HTML5_box 推箱子游戏.zip”压缩包中,包含了一个使用HTML5技术开发的推箱子小游戏。推箱子游戏源于经典的逻辑益智游戏,玩家需要在一个有障碍物的网格环境中,通过推动箱子到达指定位置,同时要确保自己...
"HTML5 推箱子小游戏源码.zip" 是一个包含推箱子游戏完整源代码的压缩包,适用于学习HTML5游戏开发或者想要自定义一款推箱子游戏的开发者。 推箱子游戏是一款经典的逻辑益智游戏,玩家需要通过移动箱子到达指定位置...
推箱子游戏,作为一种经典的逻辑益智游戏,深受玩家喜爱,其设计原理和图像素材对于游戏开发者来说至关重要。在这个压缩包中,包含了制作推箱子游戏所需的各类图像资源,包括箱子图、背景图和人物图,这些都是构成...
在这个“html 推箱子.rar”压缩包中,可能包含的是用HTML编写的推箱子游戏的源代码。 首先,我们来探讨HTML在构建推箱子游戏中的应用。HTML通过不同的标签定义了网页的基本元素,如`<div>`用于创建容器,`<img>`...
在这个"HTML5实现的推箱子小游戏源代码"中,我们可以深入理解HTML5如何与JavaScript结合,创建一个具有挑战性的益智游戏。 首先,我们来看标题中的关键词"推箱子"。推箱子是一款经典的逻辑游戏,玩家需要操作主角...
推箱子游戏是一款经典的逻辑益智游戏,源自日本的“ Sokoban ”,玩家需要操作一个角色在二维网格中推动箱子到指定位置。本项目是使用C#编程语言实现的推箱子游戏,对于初学者来说,这是一个很好的学习实例,能够...
在这个项目中,FPGA被用来创建一个硬件级别的游戏引擎,执行推箱子游戏的逻辑运算,这可能包括游戏规则的检查、玩家动作的处理以及游戏状态的更新。 推箱子游戏,又称“ Sokoban”,是一个二维平面的益智游戏,玩家...
《HTML5结合JavaScript开发推箱子游戏》 在现代网页游戏中,HTML5与JavaScript的结合已经成为了主流技术栈,它们能够创造出丰富的交互体验和引人入胜的视觉效果。本项目中,我们将深入探讨如何利用这两种技术开发一...
HTML5版推箱子游戏源码,这款游戏主要是基于HTML5中的Canvas来实现,界面做的同样很优秀,玩法和PC版的推箱子一样。属于过关游戏,可自动跳关,或重过关,游戏玩法:用键盘上的上、下、左、右键移动小人,把箱子全部...
推箱子小游戏的开发原理ppt, 推箱子游戏功能如下: ...让玩家通过按上下左右键控制工人 推箱子,当箱子们都推到了目的地后出现过关信息,并显示下一关。推错了玩家按空格键重新玩过这关。直到过完全部关卡。
5. **关卡设计**:推箱子游戏通常包含多个关卡,每个关卡都有不同的地图布局。关卡设计可能通过读取外部文件来实现,每个文件对应一个关卡的配置。 6. **状态管理**:保存和加载游戏进度的功能,方便玩家在不同时间...
5. **回溯算法**:推箱子游戏可能存在多个解,甚至无解的情况。为了确保玩家可以完成关卡,可能需要实现一种回溯算法,如深度优先搜索(DFS),当发现无法达到目标时,撤销上一步操作,尝试其他路径。 6. **游戏...
本文详细介绍了基于FPGA技术实现推箱子游戏的设计与开发流程,通过该案例,阐述了FPGA在游戏设计中的具体应用,并展示了硬件设计与软件编程相结合的开发模式。以下为详细知识点: 1. FPGA与推箱子游戏设计 FPGA...
推箱子游戏,也被称为“ Sokoban ”,是一款经典的逻辑益智游戏,源自20世纪80年代。在这个游戏中,玩家需要操作一个角色(通常是一个小人)在二维网格环境中移动,将箱子推到特定的目标位置。游戏的核心在于,箱子...
推箱子游戏源码资源是一个包含了全面开发信息的压缩包,主要针对的是iOS平台。这个资源提供了游戏"推箱子"的完整源代码,旨在帮助开发者学习和理解游戏开发过程,特别是对于移动平台的游戏开发。推箱子游戏,又称为 ...
推箱子游戏是一款经典的逻辑益智游戏,源自日本的“ Sokoban ”,在全球范围内广受欢迎。基于Visual Studio 2010(VS2010)开发推箱子游戏,可以帮助初学者了解游戏开发的基本流程和相关技术。在这个项目中,我们将...
在这个"html5推箱子源码"中,我们可以看到开发者利用HTML5的特性创建了一个经典的逻辑游戏——推箱子。推箱子游戏是一个单人益智游戏,玩家需要操纵一个角色在网格布局的迷宫中推动箱子到指定位置,同时避免被困。 ...
总的来说,HTML5 Canvas推箱子小游戏展示了Canvas的强大功能以及游戏开发的基本原理,包括图形绘制、事件处理、物理规则模拟、数据结构应用和动画制作等,是学习和实践HTML5游戏开发的一个良好起点。