JS推箱子游戏
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<canvas id=dt width="560" height="560"></canvas>
<script>
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0],
[0,0,0,0,0,0,1,2,1,0,0,0,0,0,0,0],
[0,0,0,0,0,0,1,0,1,1,1,1,0,0,0,0],
[0,0,0,0,1,1,1,3,0,3,2,1,0,0,0,0],
[0,0,0,0,1,2,0,3,4,1,1,1,0,0,0,0],
[0,0,0,0,1,1,1,1,3,1,0,0,0,0,0,0],
[0,0,0,0,0,0,0,1,2,1,0,0,0,0,0,0],
[0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]];
dt=document.getElementById('dt')
dt.width="560";
dt.height="560";
ctx = dt.getContext('2d')
var curMan;
var curarry= [];
curarry=level1
//定义小人位置
function point(x,y)
{
this.x=x;
this.y=y;
}
var manPosition = new point(5,5);//初始化小人位置
block=new Image()
block.src="data:image/block.gif"
wall=new Image()
wall.src="data:image/wall.png"
ball=new Image()
ball.src="data:image/ball.png"
box=new Image()
box.src="data:image/box.png"
up=new Image()
up.src="data:image/up.png"
left=new Image()
left.src="data:image/left.png"
right=new Image()
right.src="data:image/right.png"
down=new Image()
down.src="data:image/down.png"
{
curMan=down;
initMap();
initMap(curarry);
}
function initMap() {
for (m=0;m<level1.length;m++)
{
for (n=0;n<16;n++)
{ pic = block;
ctx.drawImage(pic,w*m-(pic.width-w)/2,h*n-(pic.height-h),pic.width,pic.height);
switch (level1[m][n])
{
case 1:
pic = wall;
break;
case 2:
pic = ball;
break;
case 3:
pic = box;
break;
case 4:
pic = curMan;
manPosition.x=m
manPosition.y=n;
break;
}
ctx.drawImage(pic,w*m-(pic.width-w)/2,h*n-(pic.height-h),pic.width,pic.height);
}
}
}
document.onkeydown=function(ev)
{
var p1;
var p2;
var keyCode = ev.keyCode;
switch(keyCode)
{
case 37:
curMan=left;
p1=new point(manPosition.x-1,manPosition.y);
p2=new point(manPosition.x-2,manPosition.y);
break;
case 65:
curMan=left;
p1=new point(manPosition.x-1,manPosition.y);
p2=new point(manPosition.x-2,manPosition.y);
break;
case 38:
curMan=up;
p1=new point(manPosition.x,manPosition.y-1);
p2=new point(manPosition.x,manPosition.y-2);
break;
case 87:
curMan=up;
p1=new point(manPosition.x,manPosition.y-1);
p2=new point(manPosition.x,manPosition.y-2);
break;
case 39:
curMan=right;
p1=new point(manPosition.x+1,manPosition.y);
p2=new point(manPosition.x+2,manPosition.y);
break;
case 68:
curMan=right;
p1=new point(manPosition.x+1,manPosition.y);
p2=new point(manPosition.x+2,manPosition.y);
break;
case 40:
curMan=down;
p1=new point(manPosition.x,manPosition.y+1);
p2=new point(manPosition.x,manPosition.y+2);
break;
case 83:
curMan=down;
p1=new point(manPosition.x,manPosition.y+1);
p2=new point(manPosition.x,manPosition.y+2);
break;
}
if(curarry[p1.x][p1.y]==1)return;//如果p1位置是墙,则不能移动
if(curarry[p1.x][p1.y]==3)//如果p1位置是箱子,则需要考虑p2位置
{
if(curarry[p2.x][p2.y]==1 || curarry[p2.x][p2.y]==3)return;//如果p2位置是箱子或墙,则不能移动
else{
curarry[p1.x][p1.y]=4;
curarry[p2.x][p2.y]=3;
if(curarry[manPosition.x][manPosition.y]==2) //如果小人所处的位置是球
curarry[manPosition.x][manPosition.y]=2; //则把小人所处的位置显示为球
else
curarry[manPosition.x][manPosition.y]=0; //否则则把小人所处的位置显示为草地
initMap();
initMap(curarry);
}
}
else
{
curarry[p1.x][p1.y]=4; //否则p1显示为小人
if(curarry[manPosition.x][manPosition.y]==2)
curarry[manPosition.x][manPosition.y]=2;
else
curarry[manPosition.x][manPosition.y]=0;
initMap();
initMap(curarry);
}
}
init()
</script>
</body>
</html>

作者:kerwin-chyl
文章链接:https:////www.cnblogs.com/kerwin-chyl
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
JS推箱子游戏的更多相关文章
- 用HTML5+原生js实现的推箱子游戏
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- three.js 制作一个三维的推箱子游戏
今天郭先生发现大家更喜欢看我发的three.js小作品,今天我就发一个3d版本推箱子的游戏,其实webGL有很多框架,three.js并不合适做游戏引擎,但是可以尝试一些小游戏.在线案例请点击博客原文 ...
- JavaScript写一个小乌龟推箱子游戏
推箱子游戏是老游戏了, 网上有各种各样的版本, 说下推箱子游戏的简单实现,以及我找到的一些参考视频和实例: 推箱子游戏的在线DEMO : 打开 如下是效果图: 这个拖箱子游戏做了移动端的适配, 我使用 ...
- JavaScript 推箱子游戏
推箱子游戏的 逻辑非常简单,但是如果不动手的话,还是不太清楚.我在这里讲一下自己的思路. 制作推箱子,首先要有自己的设计素材.如下我也是网上找的素材 第二步,理清游戏的规则. 游戏规则: 1.小人将箱 ...
- C# 推箱子游戏&对战游戏
推箱子游戏提纲,只有向右向上的操作,向左向下同理,后期需完善. namespace 推箱子 { class Program { static void Main(string[] args) { // ...
- 【CCpp程序设计2017】推箱子游戏
我的还……支持撤销!用链表实现! 题目:推箱子小游戏(基于console) 功能要求: 将p09迷宫游戏改造为“推箱子”游戏: 在地图中增加箱子.箱子目标位置等图形: 当玩家将所有箱子归位,则显示玩家 ...
- 用C写一个简单的推箱子游戏(二)
下面接着上一篇随笔<用C写一个简单的推箱子游戏(一)>来写 tuidong()函数是用来判断游戏人物前方情况的函数,是推箱子游戏中非常重要的一个函数,下面从它开始继续介绍推箱子的小程序怎么 ...
- 用C写一个简单的推箱子游戏(一)
我现在在读大二,我们有一门课程叫<操作系统>,课程考查要求我们可以写一段程序或者写Windows.iOS.Mac的发展历程.后面我结合网上的资料参考,就想用自己之前简单学过的C写一关的推箱 ...
- C语言实现推箱子游戏完整代码
C语言实现推箱子游戏完整代码 前言 自己做的,可能有些代码不够工整,或者有些小问题,但游戏的基本操作是可以实现的 代码效果 代码一共分为8个部分,4个控制上下左右移动,2个判断输赢,1个统计归为的个数 ...
随机推荐
- JS 头像显示
HTML <div class="form-group"> <label class="col-sm-3 control-label"> ...
- 如何修改win7文件夹的显示方式为详细信息
1.首先对着空白处,鼠标右键单击,然后点击“排列方式” 选一个 还有 你还可以点击“查看” 选择图标大小.详细信息.平铺.列表 等2.点击我的电脑左上角的 组织 按钮 随后选择“文件夹和搜索选项” 再 ...
- 最近面试 有人问 sqlite 用过么 sqlite 不是 嵌入式的 开发 么 难道最近还 web开发 了?
找了一个 sqlite expert 安装了一下
- python中[-1]、[:-1]、[::-1]、[n::-1]使用方法
import numpy as np a=np.random.rand(5) print(a) [ 0.64061262 0.8451399 0.965673 0.89256687 0.4851874 ...
- Day10-Python3基础-协程、异步IO、redis缓存、rabbitMQ队列
内容目录: Gevent协程 Select\Poll\Epoll异步IO与事件驱动 Python连接Mysql数据库操作 RabbitMQ队列 Redis\Memcached缓存 Paramiko S ...
- PYTHON经典算法-完美平方
问题描述: 给定一个正整数n,找到若干个完全平方数(例如:1,4,9),使得 它们的和等于n,完全平方数的个数最少. 问题示例: 给出n=12,返回3,因为12=4+4+4:给出n=13,返回2,因为 ...
- 【WPF学习】第二十六章 Application类——应用程序的生命周期
在WPF中,应用程序会经历简单的生命周期.在应用程序启动后,将立即创建应用程序对象,在应用程序运行时触发各种应用程序事件,你可以选择监视其中的某些事件.最后,当释放应用程序对象时,应用程序将结束. 一 ...
- Hyper-V虚拟机设置外部网络访问
在Hyper-V管理器中新建一个虚拟交换机,类型为 内部 ,修改名称为 nat 在虚拟机的设置页面中,将网络适配器设置为新建的虚拟交换机 nat 打开win10->控制面板->网络和共享中 ...
- Android Studio中Gradle sync failed
问题:Android Studio中更新同步Gradle 失败 Gradle sync failed: Could not find com.android.tools.build:gradle:3. ...
- Oracle 11g 单实例静默安装实战记录(linux)
oracle 11g 单实例静默安装 AUTHOR:Oracle_Ran 环境规划: OS Version : Red Hat Enterprise Linux Server release 6.7 ...