<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        HTML5實現經典坦克大戰坦克亂走還能發出一個子彈_html5教程技巧

        來源:懂視網 責編:小采 時間:2020-11-27 15:18:33
        文檔

        HTML5實現經典坦克大戰坦克亂走還能發出一個子彈_html5教程技巧

        HTML5實現經典坦克大戰坦克亂走還能發出一個子彈_html5教程技巧:代碼如下: tank.html hmtl5-經典的坦克大戰 數據 //得到畫布 var canvas1=document.getElementById(tankMap); //得到繪圖上下文(你可以理解是畫筆) var cxt=canvas1.getContext(2d); //我的坦克 hero
        推薦度:
        導讀HTML5實現經典坦克大戰坦克亂走還能發出一個子彈_html5教程技巧:代碼如下: tank.html hmtl5-經典的坦克大戰 數據 //得到畫布 var canvas1=document.getElementById(tankMap); //得到繪圖上下文(你可以理解是畫筆) var cxt=canvas1.getContext(2d); //我的坦克 hero

        代碼如下:
        tank.html
         





        hmtl5-經典的坦克大戰




        數據


        //為了編程方便,我們定義兩個顏色數組 
        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;
        }
        }





        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        HTML5實現經典坦克大戰坦克亂走還能發出一個子彈_html5教程技巧

        HTML5實現經典坦克大戰坦克亂走還能發出一個子彈_html5教程技巧:代碼如下: tank.html hmtl5-經典的坦克大戰 數據 //得到畫布 var canvas1=document.getElementById(tankMap); //得到繪圖上下文(你可以理解是畫筆) var cxt=canvas1.getContext(2d); //我的坦克 hero
        推薦度:
        標簽: 坦克 html5 html
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 国产精品亚洲专区一区| 2020久久精品亚洲热综合一本| 国产午夜亚洲精品不卡| 最近免费中文字幕大全视频| 亚洲手机中文字幕| 免费观看AV片在线播放| 国产成人亚洲精品| 毛片免费在线播放| 亚洲AV无码AV日韩AV网站| 高清国语自产拍免费视频国产 | 亚洲黄色免费网站| 亚洲国产美女视频| 亚洲三级高清免费| 亚洲熟女综合色一区二区三区| 免费毛片在线播放| 免费无码又爽又黄又刺激网站| 亚洲国产精品无码久久青草 | 国产h视频在线观看免费| 亚洲欧洲国产成人精品| 免费AA片少妇人AA片直播| 亚洲另类无码一区二区三区| 免费国产真实迷j在线观看| 一级做a毛片免费视频| 亚洲色欲久久久综合网东京热| 美女被cao网站免费看在线看| 亚洲婷婷天堂在线综合| 成年人免费观看视频网站| 色费女人18女人毛片免费视频 | 91av在线免费视频| 亚洲综合色7777情网站777| 免费一级特黄特色大片在线| 国产一级a毛一级a看免费视频| 久久久久亚洲AV无码永不| 成人免费无码大片a毛片| 久久久久国色AV免费观看| 91久久亚洲国产成人精品性色| 成人一a毛片免费视频| 九九99热免费最新版| 亚洲性猛交xx乱| 亚洲裸男gv网站| av免费不卡国产观看|