html5游戏 坦克大战,HTML5坦克大战

html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">

Insert title here

#container{

position:absolute;

top:10px;

left:300px;

}

#canvas{

position:absolute;

top:0px;

left:px;

}

#d{

height:20px;

width:20px;

background-color:#F7FCF7;

border-style:groove;

border-width:15px;

border-color:#667560;

}

varctx;

varx;

vary;

varscreenHeight;

varscreenWidth;

varwoodImg=newImage();

varhardImg=newImage();

vargrassImg=newImage();

varmyTankImg=newImage();

vareagleImg=newImage();

varTankData={speed:10,direction:"up"};

vartime=8;

//坦克

varGameObject=function(){this.x=0;this.y=0;this.p_w_picpath=null;};

varTank=function(){};Tank.prototype=newGameObject();

varmyTank=newTank();

//×××

varbulletFun=function(){

this.x=0;

this.y=0;

this.direction="";

this.speed=2;

this.strong=1;

}

varbulletArr=newArray(0);

$(window).ready(function(){

ctx=document.getElementById("canvas").getContext("2d");

screenWidth=parseInt($("#canvas").attr("width"));

screenHeight=parseInt($("#canvas").attr("height"));

keyDownEven();

mouseClick();

LoadData();

GameStart();

});

//初始化相关数据

varLoadData=function(){

myTank.x=200;

myTank.y=560;

mapArrayVal();

}

//游戏开始加载所有图形

varGameStart=function(){

ctx.clearRect(0,0,screenWidth,screenHeight);

ctx.save();

loadImg();

drawMap();

drawMyTank();

ctx.restore();

}

//加载图片

varloadImg=function(){

woodImg.src="p_w_picpaths/wood.jpg";

hardImg.src="p_w_picpaths/hard.jpg";

grassImg.src="p_w_picpaths/grass.jpg";

myTankImg.src="p_w_picpaths/tank.png";

eagleImg.src="p_w_picpaths/eagle.jpg";

myTank.p_w_picpath=myTankImg;

}

//地图用二维数组表示,0表示空,1表示红砖,2表示铁砖,3表示草皮,4未定(暂用草皮)

varmapArray=newArray(30);

varmapArrayVal=function(){

for(vari=0;i

mapArray[i]=newArray(30);

for(varj=0;j

mapArray[i][j]=parseInt(10*Math.random());

}

}

//地图有些地方时不能有红砖,草皮等东西的

mapArray[0][0]=0;mapArray[1][0]=0;mapArray[13][0]=0;mapArray[14][0]=0;mapArray[28][0]=0;mapArray[29][0]=0;

mapArray[0][1]=0;mapArray[1][1]=0;mapArray[13][1]=0;mapArray[14][1]=0;mapArray[28][1]=0;mapArray[29][1]=0;

mapArray[12][27]=1;mapArray[13][27]=1;mapArray[14][27]=1;mapArray[15][27]=1;mapArray[16][27]=1;mapArray[17][27]=1;

mapArray[10][28]=0;mapArray[11][28]=0;mapArray[12][28]=1;mapArray[13][28]=1;mapArray[14][28]=0;mapArray[15][28]=0;mapArray[16][28]=1;mapArray[17][28]=1;mapArray[18][28]=0;mapArray[19][27]=0;

mapArray[10][29]=0;mapArray[11][29]=0;mapArray[12][29]=1;mapArray[13][29]=1;mapArray[14][29]=0;mapArray[15][29]=0;mapArray[16][29]=1;mapArray[17][29]=1;mapArray[18][29]=0;mapArray[19][29]=0;

}

//绘制地图

vardrawMap=function(){

for(vari=0;i

for(varj=0;j

x=i*20;

y=j*20;

if(mapArray[i][j]==1){

ctx.drawImage(woodImg,x,y);

}elseif(mapArray[i][j]==2){

ctx.drawImage(hardImg,x,y);

}elseif(mapArray[i][j]==3){

ctx.drawImage(grassImg,x,y);

}

}

}

ctx.drawImage(eagleImg,280,560);

};

//绘制我的坦克

vardrawMyTank=function(){

ctx.translate(myTank.x+myTank.p_w_picpath.width/2,myTank.y+myTank.p_w_picpath.height/2);

ctx.rotate(turnToAngle(TankData.direction) * Math.PI/180);

ctx.drawImage(myTank.p_w_picpath,-myTank.p_w_picpath.width/2,-myTank.p_w_picpath.height/2);

}

//绘制×××

vardrawBullet=function(x,y,direction){

ctx.fillStyle="#339900";

ctx.beginPath();

ctx.arc(x,y,4,0,Math.PI*2,true);

ctx.closePath();

ctx.fill();

}

/*

*以下是相关事件

*/

//按键事件坦克移动转向

varkeyDownEven=function(){

$("html").keydown(function(e){

varkey=e.which;

if(key==37)key="left";

elseif(key==38)key="up";

elseif(key==39)key="right";

elseif(key==40)key="down";

elsekey="no";

turnDirection(key,e);

})

}

//坦克转向移动以及边界检测

varturnDirection=function(key,e){

if(key!="no"){

e.preventDefault();

//物体边界检测

if(checkObject(key)==true){

//边界检测

if(key=="left"){

myTank.x=myTank.x<=0?0:myTank.x-TankData.speed;

}elseif(key=="up"){

myTank.y=myTank.y<=0?0:myTank.y-TankData.speed;

}elseif(key=="right"){

myTank.x=myTank.x>=screenWidth-myTank.p_w_picpath.width?myTank.x:myTank.x+TankData.speed;

}elseif(key=="down"){

myTank.y=myTank.y>=screenHeight-myTank.p_w_picpath.height?myTank.y:myTank.y+TankData.speed;

}

}

ctx.clearRect(0, 0, screenWidth, screenHeight);

ctx.save();

drawMap();

TankData.direction=key;

drawMyTank();

ctx.restore();

}

}//将方向转成角度

varturnToAngle=function(direction){

if(direction=="right")return90;

if(direction=="down")return180;

if(direction=="left")return270;

if(direction=="up")return360;

}

//鼠标点击事件(发射×××)

varresult;

varmouseClick=function(){

$("html").mousedown(function(){

clearInterval(result);

createBullet(myTank.x+myTank.p_w_picpath.width/2,myTank.y+myTank.p_w_picpath.height/2,TankData.direction);

result=setInterval(drawBulletLoop,time);

})

};

//射击,创建×××

varcreateBullet=function(_x,_y,_d){

varbullet=newbulletFun();

bullet.x=_x;

bullet.y=_y;

bullet.direction=_d;

bulletArr.push(bullet);

};

//循环绘画×××

vardrawBulletLoop=function(){

ctx.clearRect(0, 0, screenWidth, screenHeight);

ctx.save();

drawMap();

varobj_x;

varobj_y;

for(vari=0;i

drawBullet(bulletArr[i].x,bulletArr[i].y,bulletArr[i].direction);

if(bulletArr[i].direction=="left"){

obj_x=parseInt(bulletArr[i].x/20)-1<0?0:parseInt(bulletArr[i].x/20)-1;

obj_y=parseInt(bulletArr[i].y/20);

bulletArr[i].x-=bulletArr[i].speed;

if(bulletArr[i].x>0){

if(obj_x*20+20>=bulletArr[i].x){

if(bulletArr[i].y%20==0){

if(mapArray[obj_x][obj_y]==1||mapArray[obj_x][obj_y]==2){

mapArray[obj_x][obj_y]=0;

bulletArr.splice(i,1);

}

if(mapArray[obj_x][obj_y-1]==1||mapArray[obj_x][obj_y-1]==2){

mapArray[obj_x][obj_y-1]=0;

bulletArr.splice(i,1);

}

}else{

if(mapArray[obj_x][obj_y]==1||mapArray[obj_x][obj_y]==2){

mapArray[obj_x][obj_y]=0;

bulletArr.splice(i,1);

}

}

}

}elseif(bulletArr[i].x<=0){

bulletArr.splice(i,1);

}

}elseif(bulletArr[i].direction=="up"){

obj_x=parseInt(bulletArr[i].x/20);

obj_y=parseInt(bulletArr[i].y/20)-1<0?0:parseInt(bulletArr[i].y/20)-1;

bulletArr[i].y-=bulletArr[i].speed;

if(bulletArr[i].y>0){

if(obj_y*20+20>=bulletArr[i].y){

if(bulletArr[i].x%20==0){

if(mapArray[obj_x][obj_y]==1||mapArray[obj_x][obj_y]==2){

mapArray[obj_x][obj_y]=0;

bulletArr.splice(i,1);

}

if(mapArray[obj_x-1][obj_y]==1||mapArray[obj_x-1][obj_y]==2){

mapArray[obj_x-1][obj_y]=0;

bulletArr.splice(i,1);

}

}else{

if(mapArray[obj_x][obj_y]==1||mapArray[obj_x][obj_y]==2){

mapArray[obj_x][obj_y]=0;

bulletArr.splice(i,1);

}

}

}

}elseif(bulletArr[i].y<=0){

bulletArr.splice(i,1);

}

}elseif(bulletArr[i].direction=="right"){

obj_x=parseInt(bulletArr[i].x/20)>29?29:parseInt(bulletArr[i].x/20);

obj_y=parseInt(bulletArr[i].y/20);

bulletArr[i].x+=bulletArr[i].speed;

if(bulletArr[i].x

if(obj_x*20<=bulletArr[i].x){

if(bulletArr[i].y%20==0){

if(mapArray[obj_x][obj_y]==1||mapArray[obj_x][obj_y]==2){

mapArray[obj_x][obj_y]=0;

bulletArr.splice(i,1);

}

if(mapArray[obj_x][obj_y-1]==1||mapArray[obj_x][obj_y-1]==2){

mapArray[obj_x][obj_y-1]=0;

bulletArr.splice(i,1);

}

}else{

if(mapArray[obj_x][obj_y]==1||mapArray[obj_x][obj_y]==2){

mapArray[obj_x][obj_y]=0;

bulletArr.splice(i,1);

}

}

}

}elseif(bulletArr[i].x>=screenWidth){

bulletArr.splice(i,1);

}

}elseif(bulletArr[i].direction=="down"){

obj_x=parseInt(bulletArr[i].x/20);

obj_y=parseInt(bulletArr[i].y/20)<0?0:parseInt(bulletArr[i].y/20);

bulletArr[i].y+=bulletArr[i].speed;

if(bulletArr[i].y

if(obj_y*20<=bulletArr[i].y){

if(bulletArr[i].x%20==0){

if(mapArray[obj_x][obj_y]==1||mapArray[obj_x][obj_y]==2){

mapArray[obj_x][obj_y]=0;

bulletArr.splice(i,1);

}

if(mapArray[obj_x-1][obj_y]==1||mapArray[obj_x-1][obj_y]==2){

mapArray[obj_x-1][obj_y]=0;

bulletArr.splice(i,1);

}

}else{

if(mapArray[obj_x][obj_y]==1||mapArray[obj_x][obj_y]==2){

mapArray[obj_x][obj_y]=0;

bulletArr.splice(i,1);

}

}

}

}elseif(bulletArr[i].x>=screenHeight){

bulletArr.splice(i,1);

}

}

}

drawMyTank();

ctx.restore();

}

//坦克和物体边界的检测

varcheckObject=function(direction){

varobject_x;

varobject_y;

varloop;

if(direction=="left"){

object_x=myTank.x%20==0?myTank.x-20:myTank.x-30;

if(object_x<0)object_x=0;

if(myTank.y%20==0){

object_y=myTank.y;

loop=2;

}else{

object_y=myTank.y-myTank.y%20;

loop=3;

}

for(vari=0;i

if((mapArray[object_x/20][object_y/20+i]==1||mapArray[object_x/20][object_y/20+i]==2)&&(object_x+20)>=myTank.x){

returnfalse;

}

}

}elseif(direction=="up"){

object_y=myTank.y%20==0?myTank.y-20:myTank.y-30;

if(myTank.x%20==0){

object_x=myTank.x;

loop=2;

}else{

object_x=myTank.x-myTank.x%20;

loop=3;

}

for(vari=0;i

if((mapArray[object_x/20+i][object_y/20]==1||mapArray[object_x/20+i][object_y/20]==2)&&(object_y+20)>=myTank.y){

returnfalse;

}

}

}elseif(direction=="right"){

object_x=myTank.x%20==0?myTank.x+myTank.p_w_picpath.width:myTank.x+myTank.p_w_picpath.width+10;

if(object_x>=600)object_x=580;

if(myTank.y%20==0){

object_y=myTank.y;

loop=2;

}else{

object_y=myTank.y-myTank.y%20;

loop=3;

}

for(vari=0;i

if((mapArray[object_x/20][object_y/20+i]==1||mapArray[object_x/20][object_y/20+i]==2)&&object_x<=(myTank.x+myTank.p_w_picpath.width)){

returnfalse;

}

}

}elseif(direction=="down"){

object_y=myTank.y%20==0?myTank.y+40:myTank.y+50;

if(myTank.x%20==0){

object_x=myTank.x;

loop=2;

}else{

object_x=myTank.x-myTank.x%20;

loop=3;

}

for(vari=0;i

if((mapArray[object_x/20+i][object_y/20]==1||mapArray[object_x/20+i][object_y/20]==2)&&(object_y)<=(myTank.y+myTank.p_w_picpath.width)){

returnfalse;

}

}

}

returntrue;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值