真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

HTML5如何實(shí)現(xiàn)經(jīng)典坦克大戰(zhàn)-創(chuàng)新互聯(lián)

這篇文章主要為大家展示了“HTML5如何實(shí)現(xiàn)經(jīng)典坦克大戰(zhàn)”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“HTML5如何實(shí)現(xiàn)經(jīng)典坦克大戰(zhàn)”這篇文章吧。

成都創(chuàng)新互聯(lián)主要業(yè)務(wù)有網(wǎng)站營(yíng)銷(xiāo)策劃、網(wǎng)站建設(shè)、網(wǎng)站制作、微信公眾號(hào)開(kāi)發(fā)、小程序設(shè)計(jì)H5開(kāi)發(fā)、程序開(kāi)發(fā)等業(yè)務(wù)。一次合作終身朋友,是我們奉行的宗旨;我們不僅僅把客戶當(dāng)客戶,還把客戶視為我們的合作伙伴,在開(kāi)展業(yè)務(wù)的過(guò)程中,公司還積累了豐富的行業(yè)經(jīng)驗(yàn)、全網(wǎng)營(yíng)銷(xiāo)推廣資源和合作伙伴關(guān)系資源,并逐漸建立起規(guī)范的客戶服務(wù)和保障體系。 


代碼如下:


tank.html






hmtl5-經(jīng)典的坦克大戰(zhàn)




數(shù)據(jù)







tank.js



代碼如下:



//為了編程方便,我們定義兩個(gè)顏色數(shù)組
var heroColor=new Array("#BA9658","#FEF26E");
var enmeyColor=new Array("#00A2B5","#00FEFE");
//其它的敵人坦克,這里的擴(kuò)展性,還是不錯(cuò)的.
//子彈類(lèi)
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(){
//在該表這個(gè)子彈的坐標(biāo)時(shí),我們先判斷子彈是否已經(jīng)到邊界
if(this.x<=0||this.x>=400||this.y<=0||this.y>=300){
//子彈要停止.
window.clearInterval(this.timer);
//子彈死亡
this.isLive=false;
}else{
//這個(gè)可以去修改坐標(biāo)
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;
}
}
//這是一個(gè)Tank類(lèi)
function Tank(x,y,direct,color){
this.x=x;
this.y=y;
this.speed=1;
this.direct=direct;
//一個(gè)坦克,需要兩個(gè)顏色.
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;
}
}
//定義一個(gè)Hero類(lèi)
//x 表示坦克的 橫坐標(biāo), y 表示縱坐標(biāo), direct 方向
function Hero(x,y,direct,color){
//下面兩句話的作用是通過(guò)對(duì)象冒充,達(dá)到繼承的效果
this.tank=Tank;
this.tank(x,y,direct,color);
//增加一個(gè)函數(shù),射擊敵人坦克.
this.shotEnemy=function(){
//創(chuàng)建子彈, 子彈的位置應(yīng)該和hero有關(guān)系,并且和hero的方向有關(guān).!!!
//this.x 就是當(dāng)前hero的橫坐標(biāo),這里我們簡(jiǎn)單的處理(細(xì)化)
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;
}
//調(diào)用我們的子彈run, 50 是老師多次測(cè)試得到的一個(gè)結(jié)論.
var timer=window.setInterval("heroBullet.run()",50);
//把這個(gè)timer賦給這個(gè)子彈(js對(duì)象是引用傳遞!)
heroBullet.timer=timer;
}
}
//定義一個(gè)EnemyTank類(lèi)
function EnemyTank (x,y,direct,color){
//也通過(guò)對(duì)象冒充,來(lái)繼承Tank
this.tank=Tank;
this.tank(x,y,direct,color);
}
//畫(huà)出自己的子彈,多說(shuō)一句,你也可以把該函數(shù)封裝到Hero類(lèi)中
function drawHeroBullet(){
//這里,我們加入了一句話,但是要知道這里加,是需要對(duì)整個(gè)程序有把握
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:// 下
//畫(huà)出自己的坦克,使用前面的繪圖技術(shù)
//設(shè)置顏色
cxt.fillStyle=tank.color[0];
//韓老師使用 先死--->后活 (初學(xué)者好用這個(gè)方法)
//先畫(huà)出左面的矩形
cxt.fillRect(tank.x,tank.y,5,30);
//畫(huà)出右邊的矩形(這時(shí)請(qǐng)大家思路->一定要一個(gè)參照點(diǎn))
cxt.fillRect(tank.x+15,tank.y,5,30);
//畫(huà)出中間矩形
cxt.fillRect(tank.x+6,tank.y+5,8,20);
//畫(huà)出坦克的蓋子
cxt.fillStyle=tank.color[1];
cxt.arc(tank.x+10,tank.y+15,4,0,360,true);
cxt.fill();
//畫(huà)出炮筒(直線)
cxt.strokeStyle=tank.color[1];
//設(shè)置線條的寬度
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:
//畫(huà)出自己的坦克,使用前面的繪圖技術(shù)
//設(shè)置顏色
cxt.fillStyle=tank.color[0];
//韓老師使用 先死--->后活 (初學(xué)者好用這個(gè)方法)
//先畫(huà)出左面的矩形
cxt.fillRect(tank.x,tank.y,30,5);
//畫(huà)出右邊的矩形(這時(shí)請(qǐng)大家思路->一定要一個(gè)參照點(diǎn))
cxt.fillRect(tank.x,tank.y+15,30,5);
//畫(huà)出中間矩形
cxt.fillRect(tank.x+5,tank.y+6,20,8);
//畫(huà)出坦克的蓋子
cxt.fillStyle=tank.color[1];
cxt.arc(tank.x+15,tank.y+10,4,0,360,true);
cxt.fill();
//畫(huà)出炮筒(直線)
cxt.strokeStyle=tank.color[1];
//設(shè)置線條的寬度
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如何實(shí)現(xiàn)經(jīng)典坦克大戰(zhàn)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


名稱(chēng)欄目:HTML5如何實(shí)現(xiàn)經(jīng)典坦克大戰(zhàn)-創(chuàng)新互聯(lián)
網(wǎng)站網(wǎng)址:http://weahome.cn/article/gcijc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部