千家信息网

HTML5怎么实现经典坦克大战

发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,这篇文章主要介绍"HTML5怎么实现经典坦克大战"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"HTML5怎么实现经典坦克大战"文章能帮助大家解决问题。代码如下
千家信息网最后更新 2025年11月13日HTML5怎么实现经典坦克大战

这篇文章主要介绍"HTML5怎么实现经典坦克大战"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"HTML5怎么实现经典坦克大战"文章能帮助大家解决问题。

代码如下:

tank.html

hmtl5-经典的坦克大战

数据

tank.js

复制代码

代码如下:

//为了编程方便,我们定义两个颜色数组

var heroColor=new Array("#BA9658","#FEF26E");

var enmeyColor=new Array("#00A2B5","#00FEFE");

//其它的敌人坦克,这里的扩展性,还是不错的.

//子弹类

function Bullet(x,y,direct,speed){

this.x=x;

this.y=y;

this.direct=direct;

this.speed=speed;

this.timer=null;

this.isLive=true;

this.run=function run(){

//在该表这个子弹的坐标时,我们先判断子弹是否已经到边界

if(this.x<=0||this.x>=400||this.y<=0||this.y>=300){

//子弹要停止.

window.clearInterval(this.timer);

//子弹死亡

this.isLive=false;

}else{

//这个可以去修改坐标

switch(this.direct){

case 0:

this.y-=this.speed;

break;

case 1:

this.x+=this.speed;

break;

case 2:

this.y+=this.speed;

break;

case 3:

this.x-=this.speed;

break;

}

}

document.getElementById("aa").innerText="子弹x="+this.x+" 子弹y="+this.y;

}

}

//这是一个Tank类

function Tank(x,y,direct,color){

this.x=x;

this.y=y;

this.speed=1;

this.direct=direct;

//一个坦克,需要两个颜色.

this.color=color;

//上移

this.moveUp=function(){

this.y-=this.speed;

this.direct=0;

}

//向右

this.moveRight=function(){

this.x+=this.speed;

this.direct=1;

}

//下移

this.moveDown=function(){

this.y+=this.speed;

this.direct=2;

}

//左

this.moveLeft=function(){

this.x-=this.speed;

this.direct=3;

}

}

//定义一个Hero类

//x 表示坦克的 横坐标, y 表示纵坐标, direct 方向

function Hero(x,y,direct,color){

//下面两句话的作用是通过对象冒充,达到继承的效果

this.tank=Tank;

this.tank(x,y,direct,color);

//增加一个函数,射击敌人坦克.

this.shotEnemy=function(){

//创建子弹, 子弹的位置应该和hero有关系,并且和hero的方向有关.!!!

//this.x 就是当前hero的横坐标,这里我们简单的处理(细化)

switch(this.direct){

case 0:

heroBullet=new Bullet(this.x+9,this.y,this.direct,1);

break;

case 1:

heroBullet=new Bullet(this.x+30,this.y+9,this.direct,1);

break;

case 2:

heroBullet=new Bullet(this.x+9,this.y+30,this.direct,1);

break;

case 3: //右

heroBullet=new Bullet(this.x,this.y+9,this.direct,1);

break;

}

//调用我们的子弹run, 50 是老师多次测试得到的一个结论.

var timer=window.setInterval("heroBullet.run()",50);

//把这个timer赋给这个子弹(js对象是引用传递!)

heroBullet.timer=timer;

}

}

//定义一个EnemyTank类

function EnemyTank (x,y,direct,color){

//也通过对象冒充,来继承Tank

this.tank=Tank;

this.tank(x,y,direct,color);

}

//画出自己的子弹,多说一句,你也可以把该函数封装到Hero类中

function drawHeroBullet(){

//这里,我们加入了一句话,但是要知道这里加,是需要对整个程序有把握

if(heroBullet!=null&&heroBullet.isLive){

cxt.fillStyle="#FEF26E";

cxt.fillRect(heroBullet.x,heroBullet.y,2,2);

}

}

//绘制坦克

function drawTank(tank){

//考虑方向

switch(tank.direct){

case 0: //上

case 2:// 下

//画出自己的坦克,使用前面的绘图技术

//设置颜色

cxt.fillStyle=tank.color[0];

//韩老师使用 先死--->后活 (初学者最好用这个方法)

//先画出左面的矩形

cxt.fillRect(tank.x,tank.y,5,30);

//画出右边的矩形(这时请大家思路->一定要一个参照点)

cxt.fillRect(tank.x+15,tank.y,5,30);

//画出中间矩形

cxt.fillRect(tank.x+6,tank.y+5,8,20);

//画出坦克的盖子

cxt.fillStyle=tank.color[1];

cxt.arc(tank.x+10,tank.y+15,4,0,360,true);

cxt.fill();

//画出炮筒(直线)

cxt.strokeStyle=tank.color[1];

//设置线条的宽度

cxt.lineWidth=1.5;

cxt.beginPath();

cxt.moveTo(tank.x+10,tank.y+15);

if(tank.direct==0){

cxt.lineTo(tank.x+10,tank.y);

}else if(tank.direct==2){

cxt.lineTo(tank.x+10,tank.y+30);

}

cxt.closePath();

cxt.stroke();

break;

case 1: //右和左

case 3:

//画出自己的坦克,使用前面的绘图技术

//设置颜色

cxt.fillStyle=tank.color[0];

//韩老师使用 先死--->后活 (初学者最好用这个方法)

//先画出左面的矩形

cxt.fillRect(tank.x,tank.y,30,5);

//画出右边的矩形(这时请大家思路->一定要一个参照点)

cxt.fillRect(tank.x,tank.y+15,30,5);

//画出中间矩形

cxt.fillRect(tank.x+5,tank.y+6,20,8);

//画出坦克的盖子

cxt.fillStyle=tank.color[1];

cxt.arc(tank.x+15,tank.y+10,4,0,360,true);

cxt.fill();

//画出炮筒(直线)

cxt.strokeStyle=tank.color[1];

//设置线条的宽度

cxt.lineWidth=1.5;

cxt.beginPath();

cxt.moveTo(tank.x+15,tank.y+10);

//向右

if(tank.direct==1){

cxt.lineTo(tank.x+30,tank.y+10);

}else if(tank.direct==3){ //向左

cxt.lineTo(tank.x,tank.y+10);

}

cxt.closePath();

cxt.stroke();

break;

}

}

关于"HTML5怎么实现经典坦克大战"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。

坦克 子弹 敌人 函数 矩形 作战区 作战 大战 经典 代码 对象 方向 颜色 坐标 思路 数组 方法 画布 知识 老师 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络监控需要什么网络技术 订单支持数据库设计 思科服务器管理地址 物联网工程和计算机网络技术 微信小程序数据库发生改变后刷新页面 软件开发发票几个点 新建空数据库的快捷键 网络安全整改过程说明 电子政务网络安全案例分析 贵州语音网络技术分类五星服务 数据库中性别缺省值为女 数据库用命令建立多个主键 服务器怎么将硬盘拔出 买物理服务器需要多少钱 网络技术基础实验教程 海南万稷网络技术 html表格怎么导入数据库 job数据库怎么设置时间 云服务器多久打折 苏州欧菲光软件开发怎么样 服务器管理的原则 开封市火狐网络技术有限公司 数据库技术的教科书 徐汇区项目数据库服务成本 焦作金蝶医疗软件开发 软件开发专业转软件实施可以吗 如何基于某个软件开发新软件 nfs服务器配置文档 开展网络安全宣传周活动心得 魔域 数据库
0