婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識(shí)庫 > HTML5實(shí)現(xiàn)經(jīng)典坦克大戰(zhàn)坦克亂走還能發(fā)出一個(gè)子彈

HTML5實(shí)現(xiàn)經(jīng)典坦克大戰(zhàn)坦克亂走還能發(fā)出一個(gè)子彈

熱門標(biāo)簽:400開頭的電話好申請不 智能芯電話機(jī)器人 咸陽穩(wěn)定外呼系統(tǒng)軟件 小朱地圖標(biāo)注 地圖標(biāo)注柱狀圖 四川移動(dòng)電銷外呼客戶管理系統(tǒng) 百度地圖標(biāo)注為什么總是封號 怎么做百度地圖標(biāo)注 臨海地圖標(biāo)注app

復(fù)制代碼
代碼如下:

<pre name="code" class="html">tank.html</pre><pre name="code" class="html"><!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
</head>
<body onkeydown="getCommand();">
<h1>hmtl5-經(jīng)典的坦克大戰(zhàn)</h1>
<!--坦克大戰(zhàn)的戰(zhàn)場-->
<canvas id="tankMap" width="400px" height="300px" style="background-color:black"></canvas>
<span id="aa">數(shù)據(jù)</span>
<!--把tankGames.js引入到本頁面-->
<script type="text/javascript" src="tank.js"></script>
<script type="text/javascript">
//得到畫布
var canvas1=document.getElementById("tankMap");
//得到繪圖上下文(你可以理解是畫筆)
var cxt=canvas1.getContext("2d");
//我的坦克 hero
//方向
var hero=new Hero(140,140,0,heroColor);
//定義一顆空子彈
var heroBullet=null;
//定義敵人的坦克(敵人的坦克有多少? 思路 : 是單個(gè)單個(gè)的定義,還是放在數(shù)組中?)
var enemyTanks=new Array();
//先死后活 ,定3個(gè),后面我們把敵人坦克的數(shù)量,作出變量
//0->上, 1->右, 2->下 3->左
for(var i=0;i<3;i++){
//創(chuàng)建一個(gè)坦克
var enemyTank=new EnemyTank((i+1)*50,0,2,enmeyColor);
//把這個(gè)坦克放入數(shù)組
enemyTanks[i]=enemyTank;
}
//先調(diào)用一次
flashTankMap();
//專門寫一個(gè)函數(shù),用于定時(shí)刷新我們的作戰(zhàn)區(qū),把要在作戰(zhàn)區(qū)出現(xiàn)的元素(自己坦克,敵人坦克,子彈,炸彈,
//障礙物...)->游戲思想
function flashTankMap(){
//把畫布清理
cxt.clearRect(0,0,400,300);
//我的坦克
drawTank(hero);
//畫出自己的子彈
//子彈飛效果是怎么出現(xiàn)的?[答 : 首先我們應(yīng)該每隔一定時(shí)間(setInterval)就去刷新作戰(zhàn)區(qū),如果在刷新的時(shí)候,子彈坐標(biāo)變換了,給人的感覺就是子彈在飛!]
drawHeroBullet();
//敵人的坦克
//畫出所有敵人坦克
for(var i=0;i<3;i++){
drawTank(enemyTanks[i]);
}
}
//這是一個(gè)接受用戶按鍵函數(shù)
function getCommand(){
//我怎么知道,玩家按下的是什么鍵
//說明當(dāng)按下鍵后 事件--->event對象----->事件處理函數(shù)()
var code=event.keyCode;//對應(yīng)字母的ascii碼->我們看碼表
switch(code){
case 87://上
hero.moveUp();
break;
case 68:
hero.moveRight();
break;
case 83:
hero.moveDown();
break;
case 65:
hero.moveLeft();
break;
case 74:
hero.shotEnemy();
break;
}
//觸發(fā)這個(gè)函數(shù) flashTankMap();
flashTankMap();
//重新繪制所有的敵人的坦克.你可以在這里寫代碼(思想,我們干脆些一個(gè)函數(shù),專門用于定時(shí)刷新我們的畫布[作戰(zhàn)區(qū)])
}
//每隔100毫秒去刷新一次作戰(zhàn)區(qū)
window.setInterval("flashTankMap()",100);
</script>
</body>
</html></pre>


tank.js

復(fù)制代碼
代碼如下:

<pre></pre>
<pre name="code" class="html"><pre name="code" class="javascript">//為了編程方便,我們定義兩個(gè)顏色數(shù)組
var heroColor=new Array("#BA9658","#FEF26E");
var enmeyColor=new Array("#00A2B5","#00FEFE");
//其它的敵人坦克,這里的擴(kuò)展性,還是不錯(cuò)的.
//子彈類
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類
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類
//x 表示坦克的 橫坐標(biāo), y 表示縱坐標(biāo), direct 方向
function Hero(x,y,direct,color){
//下面兩句話的作用是通過對象冒充,達(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),這里我們簡單的處理(細(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 是老師多次測試得到的一個(gè)結(jié)論.
var timer=window.setInterval("heroBullet.run()",50);
//把這個(gè)timer賦給這個(gè)子彈(js對象是引用傳遞!)
heroBullet.timer=timer;
}
}
//定義一個(gè)EnemyTank類
function EnemyTank (x,y,direct,color){
//也通過對象冒充,來繼承Tank
this.tank=Tank;
this.tank(x,y,direct,color);
}
//畫出自己的子彈,多說一句,你也可以把該函數(shù)封裝到Hero類中
function drawHeroBullet(){
//這里,我們加入了一句話,但是要知道這里加,是需要對整個(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:// 下
//畫出自己的坦克,使用前面的繪圖技術(shù)
//設(shè)置顏色
cxt.fillStyle=tank.color[0];
//韓老師使用 先死--->后活 (初學(xué)者最好用這個(gè)方法)
//先畫出左面的矩形
cxt.fillRect(tank.x,tank.y,5,30);
//畫出右邊的矩形(這時(shí)請大家思路->一定要一個(gè)參照點(diǎn))
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];
//設(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:
//畫出自己的坦克,使用前面的繪圖技術(shù)
//設(shè)置顏色
cxt.fillStyle=tank.color[0];
//韓老師使用 先死--->后活 (初學(xué)者最好用這個(gè)方法)
//先畫出左面的矩形
cxt.fillRect(tank.x,tank.y,30,5);
//畫出右邊的矩形(這時(shí)請大家思路->一定要一個(gè)參照點(diǎn))
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];
//設(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;
}
}
</pre>


<pre></pre>
</pre>

標(biāo)簽:南平 陜西 公主嶺 山南 黃石 黃石 平頂山

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《HTML5實(shí)現(xiàn)經(jīng)典坦克大戰(zhàn)坦克亂走還能發(fā)出一個(gè)子彈》,本文關(guān)鍵詞  HTML5,實(shí)現(xiàn),經(jīng)典,坦克,大戰(zhàn),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《HTML5實(shí)現(xiàn)經(jīng)典坦克大戰(zhàn)坦克亂走還能發(fā)出一個(gè)子彈》相關(guān)的同類信息!
  • 本頁收集關(guān)于HTML5實(shí)現(xiàn)經(jīng)典坦克大戰(zhàn)坦克亂走還能發(fā)出一個(gè)子彈的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美国产日产图区| 亚洲成人午夜影院| 一区二区成人在线| 国产精品中文有码| 欧美一卡二卡在线| 亚洲乱码中文字幕| av网站免费线看精品| 精品国产凹凸成av人网站| 亚洲午夜精品在线| 91极品视觉盛宴| 国产精品久久久久精k8| 国产精品123| www国产成人免费观看视频 深夜成人网| 夜夜爽夜夜爽精品视频| 91网页版在线| 日韩伦理电影网| 不卡视频在线观看| 国产精品久久久久久久久搜平片| 国产综合久久久久久鬼色 | 成人污视频在线观看| 日韩亚洲欧美高清| 热久久国产精品| 欧美日韩成人在线| 午夜精品久久久久影视| 欧美在线免费观看视频| 亚洲欧美区自拍先锋| 91色porny在线视频| 亚洲视频一区二区在线| 91在线观看视频| 亚洲美女少妇撒尿| 欧美视频在线观看一区| 成人综合在线视频| 国产人成一区二区三区影院| 国产高清不卡一区二区| 中文字幕中文字幕在线一区| www.欧美日韩国产在线| 亚洲麻豆国产自偷在线| 欧美亚州韩日在线看免费版国语版 | 2023国产一二三区日本精品2022| 青青国产91久久久久久| 日韩欧美成人一区二区| 精品亚洲国内自在自线福利| 久久精品男人的天堂| 91在线视频免费91| 亚洲欧美一区二区三区久本道91| 91高清在线观看| 日本不卡中文字幕| 久久久av毛片精品| 99久久亚洲一区二区三区青草 | 韩国中文字幕2020精品| 中文字幕欧美激情一区| 色综合视频在线观看| 日韩电影在线一区| 国产亚洲欧美日韩在线一区| 色美美综合视频| 免费成人av在线播放| 国产精品久久毛片av大全日韩| 在线一区二区视频| 久久爱www久久做| 中文字幕一区二区不卡| 在线播放欧美女士性生活| 国产精品一区二区在线播放| 亚洲欧美日韩国产一区二区三区| 在线播放中文一区| 成人影视亚洲图片在线| 蜜桃av一区二区在线观看| 中文字幕一区二区在线观看| 欧美一区二区三区性视频| 99久久婷婷国产| 美国精品在线观看| 一区二区三区精品视频在线| www国产精品av| 欧美色视频一区| 福利一区在线观看| 偷拍与自拍一区| 亚洲日本乱码在线观看| 久久综合久久综合久久| 制服视频三区第一页精品| 不卡免费追剧大全电视剧网站| 久久国产欧美日韩精品| 亚洲国产一区二区三区青草影视| 国产人成一区二区三区影院| 欧美一级在线观看| 欧洲精品中文字幕| www.日韩大片| 国产成人av电影在线| 久久国产夜色精品鲁鲁99| 亚洲www啪成人一区二区麻豆| 国产精品丝袜久久久久久app| 欧美电影免费观看高清完整版在线| 在线亚洲一区二区| 91亚洲永久精品| 成人免费视频免费观看| 狠狠色丁香婷婷综合| 久久不见久久见中文字幕免费| 婷婷中文字幕一区三区| 一区av在线播放| 一区二区三区欧美激情| 亚洲天堂精品在线观看| 亚洲欧美综合另类在线卡通| 国产精品日韩精品欧美在线| 国产日产欧美一区| 国产欧美精品国产国产专区| 精品免费日韩av| 亚洲精品一区二区三区四区高清| 日韩欧美一级在线播放| 在线综合亚洲欧美在线视频| 欧美日韩国产影片| 欧美精品视频www在线观看| 欧美性一二三区| 欧美日韩国产综合视频在线观看| 日本精品免费观看高清观看| 日本福利一区二区| 欧美日韩国产成人在线免费| 欧美日韩dvd在线观看| 欧美高清dvd| 欧美mv和日韩mv国产网站| 欧美精品一区二区三区视频| 国产日韩一级二级三级| 国产精品人成在线观看免费| 最新国产の精品合集bt伙计| 亚洲综合一二三区| 亚洲成人一区二区在线观看| 免费国产亚洲视频| 国产成人午夜视频| 91麻豆免费看片| 欧美性猛片aaaaaaa做受| 欧美一区二视频| 中文字幕av一区 二区| 亚洲精品少妇30p| 蜜臀av一区二区三区| 国产精品一线二线三线| 97精品视频在线观看自产线路二| 欧美综合亚洲图片综合区| 91精品欧美一区二区三区综合在| 久久蜜桃av一区二区天堂| 1000部国产精品成人观看| 亚洲福利视频一区| 国产乱子伦一区二区三区国色天香 | 中文字幕制服丝袜成人av| 亚洲愉拍自拍另类高清精品| 青青草91视频| 99精品国产视频| 91麻豆精品国产无毒不卡在线观看| 日韩欧美三级在线| 1区2区3区精品视频| 麻豆精品视频在线观看免费| 成人免费视频国产在线观看| 欧美日韩国产小视频| 中文字幕+乱码+中文字幕一区| 亚洲一卡二卡三卡四卡五卡| 国产成人精品免费看| 欧美精品乱人伦久久久久久| 国产色爱av资源综合区| 亚洲高清在线精品| av在线播放不卡| 精品国产免费人成电影在线观看四季| 亚洲黄色尤物视频| 国产高清不卡二三区| 欧美军同video69gay| |精品福利一区二区三区| 九九精品一区二区| 欧美高清性hdvideosex| 亚洲天堂福利av| 成人一区二区三区在线观看| 欧美一级一区二区| 一区二区三区在线免费播放 | 久久爱www久久做| 欧美三级电影网| 亚洲欧洲99久久| 精品亚洲成av人在线观看| 欧美挠脚心视频网站| 亚洲免费观看高清完整版在线观看 | 欧美精品一区二区不卡| 婷婷六月综合网| 欧美色欧美亚洲另类二区| 亚洲欧美一区二区在线观看| 国产美女一区二区三区| 精品三级av在线| 免费在线视频一区| 欧美狂野另类xxxxoooo| 亚洲成va人在线观看| 色狠狠av一区二区三区| **性色生活片久久毛片| 成人a免费在线看| 国产精品色呦呦| 成人一区在线观看| 国产精品美女一区二区| 成人久久视频在线观看| 国产精品天天摸av网| 高清av一区二区| 国产精品私人自拍| 不卡视频免费播放| 亚洲男人天堂一区| 欧美亚洲动漫制服丝袜| 亚洲6080在线| 7777精品伊人久久久大香线蕉| 视频一区二区三区中文字幕| 91精品在线一区二区| 免费高清视频精品|