JavaScript游戏 : 搬运工

javascript

<!--
http://futurecom.vze.com
http://dewin.vze.com
http://dewin.126.com
http://dewin.tk

Copyright(c) 1998-2003 dewin all rights reserved

Start   2002-10-02 17:50
Finish  2002-10-15 22:41
Last Edit 2003-06-11 18:55
-->
<body>
<style>
.Ground{}
.Floor{}
.Wall{border:2px outset #ADFF2F;background-color:#888888;z-index:0}
.Aim{background-color:#FF69B4;filter:Alpha(opacity=100,FinishOpacity=0,Style=3);z-index:0}
.Box{background-color:#87CEFA;filter:Alpha(opacity=0,FinishOpacity=100,Style=3);z-index:1}
.Man{background-color:red;z-index:1;filter:filpv}
</style>
<textarea id=Info rows=20>rddlllllluurrrDulllddrrRRRRuulDLrrdLulDDDldRuuurururrddLLLulDDDlddrrULuuuurrur
DrdLLLulDDDDrddlluRuuuulllluurrrDulllddrrRurDDDDDldRuuuuuulullDldRRRurDDDDuuuululD
ldRRurDDDlDR</textarea><br>
<input type=button value='copy' onclick='Info.select();document.execCommand("Copy")'>
<input type=button value='paste' onclick='Info.focus();if(!/[^(l|r|u|d|L|R|U|D)]/g.exec(window.clipboardData.getData("Text")))document.execCommand("Paste")'>
<input type=button value='Auto Run' );
  else{
   //if(MainMap[y][x]=="|"){iHtml(x,y,'Floor');MainMap[y][x]=' '}
   //else iHtml(x,y,'Ground');
   iHtml(x,y,'Ground');
   switch(MainMap[y][x]){
    case '0':iBox(x,y,0);break;
    case '.':iHtml(x,y,'Aim');break;
    case '@':iHtml(x,y,'Aim');iBox(x,y,1);BoxCompletes++;break;
    case '*':iMan(x,y,0);break;
    case '#':iHtml(x,y,'Aim');iMan(x,y,1);break;
    }
   }
  }
 }
}

function iHtml(x,y,k){
Base.insertAdjacentHTML("beforeEnd","<span style='position:absolute;left:"+x*MapW+";top:"+y*MapH+";width:"+MapW+";height:"+MapH+"' class='"+k+"' x="+x+" y="+y+">");
}

function iBox(x,y,k){
MainMap[y][x] = Base.appendChild(document.createElement("<span style='position:absolute;left:"+x*MapW+";top:"+y*MapH+";width:"+MapW+";height:"+MapH+"' class='Box' complete='"+k+"'>"));
TotalBox++;
}

function iMan(x,y,k){
Man = Base.appendChild(document.createElement("<img alt='Man' src='BOXMAN.GIF' style='position:absolute;left:"+x*MapW+";top:"+y*MapH+";width:"+MapW+";height:"+MapH+";' class='Man'>"));
Man.x = x
Man.y = y
MainMap[y][x] = (k==0)?' ':'.';
}

function Dir(x,y,k){
if(!canMove) return
var ManFront = MainMap[y+parseInt(Man.y)][x+parseInt(Man.x)];
if(ManFront==' ' || ManFront=='.')if(k!=null)Move1(x,y,k.toLowerCase());else Move1(x,y);
else{
 if(typeof(ManFront)=='object'){
  var ManFrontFront = MainMap[2*y+parseInt(Man.y)][2*x+parseInt(Man.x)];
  if(ManFrontFront == ' '){if(k!=null)Move1(x,y,k.toUpperCase());else Move1(x,y);Move2(ManFront,x,y);}
  else if(ManFrontFront == '.'){if(k!=null)Move1(x,y,k.toUpperCase());else Move1(x,y);Move3(ManFront,x,y);}
  BoxMoves++
  }
 }
}

function Move1(x,y,k){
if(k != null){
 BackRecord[++Count] = k
 BackRecord.length = Count+1
 }
Man.x = x+parseInt(Man.x);
Man.y = y+parseInt(Man.y);
Man.style.left = Man.x*MapW;
Man.style.top = Man.y*MapH;
}

function Move2(obj,x,y){
obj.style.left = (x+Man.x)*MapW;
obj.style.top = (y+Man.y)*MapH;
MainMap[y+parseInt(Man.y)][x+parseInt(Man.x)] = obj;
if(obj.complete == 0) MainMap[Man.y][Man.x]=' ';
else{
 MainMap[Man.y][Man.x] = '.';
 BoxCompletes --;
 }
obj.complete = 0;
}

function Move3(obj,x,y){
obj.style.left = (x+Man.x)*MapW;
obj.style.top = (y+Man.y)*MapH;
MainMap[y+parseInt(Man.y)][x+parseInt(Man.x)] = obj;
if(obj.complete == 1) MainMap[Man.y][Man.x]='.';
else{
 MainMap[Man.y][Man.x] = ' ';
 if(++BoxCompletes == TotalBox) oWin();
 }
obj.complete = 1;
}

function UnDo(){
if(Count >= 0){
 canMove = true
 switch(BackRecord[Count]){
  //not object
  case 'l':Move1(1,0);break;//left -> right
  case 'u':Move1(0,1);break;//up -> down
  case 'r':Move1(-1,0);break;//right -> left
  case 'd':Move1(0,-1);break;//down -> up
  //object
  case 'L':UnGo(1,0);break;//left -> right
  case 'U':UnGo(0,1);break;//up -> down
  case 'R':UnGo(-1,0);break;//right -> left
  case 'D':UnGo(0,-1);break;//down -> up
  }
 iSelects(--Count)
 }
}

function UnGo(x,y){
BoxMoves--;
var obj = MainMap[-y+parseInt(Man.y)][-x+parseInt(Man.x)];
if(MainMap[Man.y][Man.x]==' '){
 if(obj.complete == 0)MainMap[-y+parseInt(Man.y)][-x+parseInt(Man.x)]=' ';
 else{
  MainMap[-y+parseInt(Man.y)][-x+parseInt(Man.x)]='.';
  BoxCompletes --;
  }
 obj.complete=0
 }
else{
 if(obj.complete == 0){
  MainMap[-y+parseInt(Man.y)][-x+parseInt(Man.x)]=' ';
  if(++BoxCompletes == TotalBox) oWin();
  }
 else MainMap[-y+parseInt(Man.y)][-x+parseInt(Man.x)]='.';
 obj.complete=1
 }
obj.style.left = Man.x*MapW;
obj.style.top = Man.y*MapH;
MainMap[Man.y][Man.x] = obj;
Move1(x,y);
}

function ReDo(){
if(Count+1<BackRecord.length){
 switch(BackRecord[++Count]){
  case 'l': case 'L': Dir(-1,0);break;//left
  case 'u': case 'U': Dir(0,-1);break;//up
  case 'r': case 'R': Dir(1,0);break;//right
  case 'd': case 'D': Dir(0,1);break;//down
  }
 iSelects(Count)
 }
else clearInterval(Timer);
}

function oWin(){
canMove = false
alert('Congratulation! You have pass.')
}

function window.onload(){
ReadMap(0);
document.body.scroll='no'

function document.onkeydown(){
if(event.ctrlKey){
 switch(event.keyCode){
  case 37:document.body.scrollLeft-=PushScrollNo;break;//left
  case 38:document.body.scrollTop-=PushScrollNo;break;//up
  case 39:document.body.scrollLeft+=PushScrollNo;break;//right
  case 40:document.body.scrollTop+=PushScrollNo;break;//down
  }
 }
else{
 switch(event.keyCode){
  case 37:Dir(-1,0,'l');break;//left
  case 38:Dir(0,-1,'u');break;//up
  case 39:Dir(1,0,'r');break;//right
  case 40:Dir(0,1,'d');break;//down
  }
 event.returnValue = false;
 Info.value = BackRecord.join("")
 iSelects(Count)
 }
}

function document.onclick(){ReDo()}
function document.oncontextmenu(){UnDo();event.returnValue = false;}

window.focus();
Base.focus();
}

function Run(){
var temp = Info.value;
if(temp == '')return;
ReadMap(0);
BackRecord=temp.split("")
Timer = setInterval(ReDo,RePlayTime)
}

function iSelects(x){
var iRange = Info.createTextRange()
iRange.collapse(true)
iRange.moveStart("character",x)
iRange.moveEnd("character",1)
iRange.select()
BoxMoveInfo.value = BoxMoves;
ManMoveInfo.value = x+1;
}
</script>

 

时间: 2024-08-04 04:03:52

JavaScript游戏 : 搬运工的相关文章

整理 25个超好的 HTML5+JavaScript 游戏引擎库

对于一个游戏开发者,寻找一个可以与 JavaScript 和 HTML5 无缝工作的游戏引擎是一个不错的解决方案.市面上有很多免费和付费的游戏引擎,让专业的游戏开发者满意的游戏引擎肯定需要包含独特的东西.游戏开发者对完美游戏引擎的追求永远不会停止. 下面我们整理出地球上使用最好的html5和javascript游戏引擎列表,每个游戏引擎有每个人想要的特性.每个游戏引擎有他自己的优缺点,这样你可以根据你自己的需求做选择,我确定这个列表中有你在寻找的游戏引擎 1) Canvas Engine Can

javascript游戏开发之《三国志曹操传》零部件开发(一)让静态人物动起来_javascript技巧

首先来说,让一个游戏赋有可玩性必须要动静结合.(哈哈,大家以为我要讲作文了...但其实我今天要讲的是Javascript)静态的东西谁不会做呢?因为东西一生下来就是静态的(除非你是用的gif动画),所以不需要任何处理就能完成静态.那么我将要在下面告诉大家如何运用Javascript将静态图片变为动态图片. 一.图片准备     fight01.pngfight02.pngfight03.pngfight04.png03.png02.png01.png首先,我找了一些出自经典游戏<三国志曹操传>

JavaScript游戏中使用OOP和设计模式让代码变得更智能

学习如何在 http://www.aliyun.com/zixun/aggregation/33906.html">JavaScript 中使用基于经典继承的库从 OOP 中获得更多的好处.本文还将介绍架构式设计模式,来展示了如何使用游戏循环.状态机和事件冒泡 (event bubbling) 示例来编写更整洁的代码. 在本文中,您将了解 JavaScript 中的 OOP,来探索原型继承模型和经典继承模型.举例说明游戏中能够从 OOP 设计的结构和可维护性中获得极大利益的模式.我们的最终

精心打造的全球唯一一款javascript游戏引擎

当前市面上的网页游戏基本都是采用国外成熟的flash游戏引擎开发出大同小异的网页游戏或者自己开发的flash游戏,通过一些吸引人的.刺眼的"老婆不在家"式的甚至病毒式的广告宣传,让网页浏览者不可忍受.去又拿他们没办法,人家有的是钱,烧的就是钱,损伤的用户的眼睛,损害小孩子的心灵,浪费咱的时间. 目前由睿德网络花费巨资,历时3年之久自主研发成功了一款(JavaScript HTML5)网络图形互动游戏产品,全球首创最大的WEB3.0网页虚拟社区--<奇幻世界>,采用图形虚拟社

javascript游戏开发之《三国志曹操传》零部件开发(三)情景对话中仿打字机输出文字_javascript技巧

前两讲我告诉了大家如何使人物移动,那么今天我们就来看看如何实现仿<三国志曹操传>人物情景对话.具体的链接我写在下方. 一.前言 相信大家都还记得吧,在某些新闻里会有一些惨不忍睹的结果是用像打字机一样的方式把文字弄出来.那么今天的主要目的就是要办到这个. 就在9月5日的时候,我在办公室里起了个做这种程序的念头,并且有了点思路.我首先想用调margin的方法,按理说是作出来了,但很不让人满意,毕竟很麻烦,并且技术也差.所以我打算用上数组和循环.9月13日我抽空写出来了,但由于这几天很忙,基本上在工

javascript游戏开发之《三国志曹操传》零部件开发(四)用地图块拼成大地图_javascript技巧

小时候我们玩过拼图游戏,是用自己的手去拼的.今天我们来研究研究用javascript来拼图.同样是拼图,但用js拼图要比用手拼图麻烦多了,因此以后我要把它优化成引擎. 一.前言 以上是一段导语,话不扯远,对<三国志曹操传>熟悉的玩家知道,<三国志曹操传>的地图是由小地图块拼成的,那要实现它就和导语说得一样:很麻烦.不过即使麻烦也是一门技术,因此在此分享给大家,希望大家喜欢. 二.代码讲解 今天我要换换讲解方式,先不给代码,我们先来想想原理.现在,假如你有一幅图片,把它裁开成若干份,

JavaScript游戏引擎列表

这里有一个网址收集了关于JS游戏引擎开发库的一个列表,转过来. 游戏引擎 Name Latest Release License Type Notes The Render Engine 1.5.3 MIT 跨浏览器; 大规模 API; 开源.2 gameQuery 0.5.1 CC BY-SA 2.5 和 jQuery 一起使用 gTile 0.0.1 Tile based Akihabara 1.3 GPL2/MIT Classic Repro 基于JS+HTML5的街机风格的游戏3 The

JavaScript 游戏 : 贪吃蛇

javascript 好像是最快的速度了... 说一说原理:是利用DOM的.<span>一条蛇,由蛇头到蛇尾</span>这样想到了什么?蛇尾就是这个span的第一个元素,蛇头就是最后一个元素啦.当然,调换前后也一样可以的. 然后建一个二维数组,当是地图的 x,y 坐标.然后,每节蛇也有它的 x,y 坐标,分别和上面的二维数组关连起来.这样就会得到蛇每一节的位置了,看看有没有超出数组上限或下限,GameOver.不过我这里为了体验一下速度,没这个GameOver条件,只有蛇头和蛇身

JavaScript 游戏 : 俄罗斯方块

javascript 应该看得懂吧? 没时间写注释...:( 这个差不多美的啦!只要向Block里面添加或修改就能改变方块的形状.:)     <!-- http://futurecom.vze.comhttp://dewin.vze.comhttp://dewin.126.comhttp://dewin.tk Copyright(c) 1998-2003 dewin all rights reserved Start 2002-09-20 14:45Finish  2002-10-31 23: