• js 飞机大战


    完整文件及代码可以在网盘下载,下载链接为:https://pan.baidu.com/s/1hs7sBUs 密码: d83x

    飞机大战css定义:

    <style>
    #container{  
    width:320px;
    height:568px;
    background: url(images/start.png);
    margin:20px auto;
    position: relative;
    overflow: hidden;  
    }
    #container input{
    width:120px;
    height: 38px;
    background: #ff6600;
    border:0;
    color:#fff;
    font-size:14px;
    font-family: 微软雅黑;
    position: absolute;
    left: 100px;
    bottom:50px;
    }
    #enddiv{
    position: absolute;
    top: 210px;
    left: 75px;
    border: 1px solid gray;
    border-radius: 5px;
    text-align: center;
    background-color:#d7ddde;
    display: none;
    z-index: 2;
    }
    .plantext{
    width: 160px;
    height: 30px;
    line-height: 30px;
    font-size: 16px;
    font-weight: bold;
    }
    #enddiv div{
    width: 160px;
    height: 50px;
    }
    #enddiv div button{
    margin-top:10px ;
    width: 90px;
    height: 30px;
    border: 1px solid gray;
    border-radius: 30px;
    }
    #scoretext{
    margin: 0;
    font-family: arial;
    font-size:12px;
    font-weight: bold;
    color:#ff6600;
    position: absolute;
    left: 4px;
    top: 4px;
    z-index: 100;
    }
    </style>

    飞机大战: HTML代码如下:

      <div id="container">
            <p id="scoretext"></p>
            <div id="enddiv">
                <p class="plantext">游戏结束</p>
                <div><button onclick="restartGame()" id="restart">继续</button></div>
            </div>
            <input type="button" value="开始游戏" id="startBtn">
        </div>

    飞机大战 : 调用js

    //中大型飞机射击次数未实现,gameover未实现
            function startGame(container){
    
                var startBtn = document.getElementById("startBtn");
                startBtn.onclick = function(){
                    container.style.background = "url(images/background_1.png)";
                    this.style.display = "none";
                    bgMove(container);
                    var score = 0;
                    var myplan = new MyPlan(120,480,container);
                    var middleEnemy = new MiddleEnemy(container,myplan.bullets,myplan,score); //中型飞机对象实例
                    var maxEnemy = new MaxEnemy(container,myplan.bullets,myplan,score);//大型飞机对象实例
                    var enemy = new Enemy(container,myplan.bullets,myplan,middleEnemy,maxEnemy,score);
                    enemy.init();                        
                }
            }
            var speed = 0;
            function bgMove(container){
                setInterval(function(){
                    speed++;
                    container.style.backgroundPosition = "0 " + speed + "px";
                    if(speed > 568){
                        speed = 0;
                    }
                },15);
                
            }
            function gameOver(){
                var enddiv = document.getElementById("enddiv");
                var restart = document.getElementById("restart");
    
                enddiv.style.display = "block";
                restart.onclick = function(){
                    location.reload();
                }
    
            }
            var score = 0;
            function getScore(num){
                var scoretext = document.getElementById("scoretext");
                score += num;
                scoretext.innerHTML = score + "分";
    
            }
            onload = function(){
                var container = document.getElementById("container");
                
                startGame(container);
    
            }

    飞机大战: 我方飞机创建:

    Array.prototype.remove = function(value){
        for(var i = 0; i < this.length; i++){
            if(this[i] == value){
                this.splice(i,1);
            }
        }
    }
    function MyPlan(x , y , container){
        this.x = x;
        this.y = y;
        this.img = "images/my.gif";
        this.container = container;
        this.bullets = [];
        this.createTimer;
        this.init();
    }
    MyPlan.prototype = {
        init:function(){
            this.create();
            this.planMove();
            this.bullets.push(this.plan);
            var that = this;
            this.createTimer = setInterval(function(){
                that.createBullets();
            },200);
            this.createBullets();
        },
        planMove:function(){
            var that = this;
            this.container.onmousemove = function(e){
                e = e || event;
                var maxLeft = that.container.offsetWidth - that.plan.offsetWidth;
                var maxTop = that.container.offsetHeight - that.plan.offsetHeight;
                var planX = Math.max(Math.min(e.clientX - that.container.offsetLeft - that.plan.offsetWidth / 2,maxLeft),0);
                var planY = Math.max(Math.min(e.clientY - that.container.offsetTop - that.plan.offsetHeight / 2,maxTop),0);
                that.plan.style.left = planX + "px";
                that.plan.style.top = planY + "px";
            }
        },
        create:function(){
            this.plan = document.createElement("img");
            this.plan.src = this.img;
            this.plan.style.cssText = "position:absolute; top:" + this.y + "px; left:" + this.x + "px;";
            this.container.appendChild(this.plan);
        },
        createBullets:function(){
            this.bull = document.createElement("img");
            this.bull.src = "images/bullet1.png";
            var bullX = this.plan.offsetLeft + this.plan.offsetWidth / 2 - 6 / 2;
            var bullY = this.plan.offsetTop - 14;
    
            this.bull.style.cssText = "position:absolute; top:" + bullY + "px; left:" + bullX + "px;";
            this.container.appendChild(this.bull);
            this.bullets.push(this.bull);
            var bull = this.bull; //不能用that = this 对象冒充 闭包问题
            var container = this.container;
            var bullets = this.bullets;
            this.bull.timer = setInterval(function(){
                bull.style.top = bull.offsetTop - 3 + "px";
                if(bull.offsetTop <= -14){
                    bullets.remove(bull);
                    container.removeChild(bull);
                    clearInterval(bull.timer);
                }
            },8);
        }
    }

    飞机大战: 敌方基本飞机创建:

    function Enemy(container,bullets,myplan,middleEnemy,maxEnemy,score){
        this.container = container;
        this.img = "images/enemy1_fly_1.png";
        this.createTime = 600; //创建敌机的间隔时间
        this.bullets = bullets;
        this.dieImg = "images/enemy1_fly_3.gif";
        this.width = 34; //敌机的宽度
        this.height = 24;    //敌机的高度
        this.myplan = myplan;
        this.count = 1; //小型敌机创建个数
        this.dieCount = 1; //敌机消灭需子弹打击次数
        this.middleEnemy = middleEnemy;
        this.maxEnemy = maxEnemy;
        this.score = score;
        
    }
    Enemy.prototype = {
        init:function(){
            var that = this;
            var middleEnemy = this.middleEnemy;
            var maxEnemy = this.maxEnemy;
            var count = 0;
            setInterval(function(){
                that.create();
                count++;
                if(count % 5 == 0){
                    middleEnemy.create();
                }
                if(count % 30 == 0){
                    maxEnemy.create();
                    count = 1;
                }
            },this.createTime);
            
        },
        create:function(){
            this.enemy = document.createElement("img");
            this.enemy.src = this.img;
            var enemyX = Math.random() * (this.container.offsetWidth - this.width);
            var enemyY = -1 * this.height;
            this.enemy.style.cssText = "position:absolute; left:" + enemyX + "px; top:" + enemyY + "px;";
            this.container.appendChild(this.enemy);
            var enemy = this.enemy;
            this.data_hitCount = 0;
            var container = this.container;
            var bullets = this.bullets;
            var dieImg = this.dieImg;
            var myplan = this.myplan;
            var plan = this.myplan.plan;
            var createBullets = this.myplan.createBullets;
            var dieCount = this.dieCount;
            var isremove = true; //是否可以移除敌机
            var score = this.score;
            var that = this;
            this.enemy.timer = setInterval(function(){
                enemy.style.top = enemy.offsetTop + 3 + "px";
                
                for(var i = 0; i < bullets.length; i++){
                    
                    if(bullets[i].offsetLeft + bullets[i].offsetWidth > enemy.offsetLeft && bullets[i].offsetLeft < enemy.offsetLeft + enemy.offsetWidth){
                        if(bullets[i].offsetTop + bullets[i].offsetHeight > enemy.offsetTop && bullets[i].offsetTop < enemy.offsetTop + enemy.offsetHeight && isremove){
                            if(i == 0){
                                plan.src = "images/myover.gif";
                                container.onmousemove = null;
                                clearInterval(myplan.createTimer);
                                gameOver();
                            }
                            else{
                                container.removeChild(bullets[i]);
                                bullets.remove(bullets[i]);    
                                that.data_hitCount++;
                                if(that.data_hitCount == dieCount){
                                    isremove = false;
                                    enemy.src = dieImg;
                                    getScore(dieCount);
                                    setTimeout(function(){
                                        container.removeChild(enemy);
                                    },300);
                                }        
                            }                
                        }
                    }
                }
                if(enemy.offsetTop >= container.offsetHeight){
                    container.removeChild(enemy);
                    clearInterval(enemy.timer);
                }
            },30);
        }
    }

    飞机大战: 其他敌机创建:

    function MiddleEnemy(container,bullets,myplan,score){
    
        Enemy.call(this,container,bullets,myplan,score);
        this.img = "images/enemy2_fly_1.png";
        this.dieImg = "images/enemy2_fly_3.gif";
        this.width = 46;  //敌机的宽度
        this.height = 60; //敌机的高度
        this.dieCount = 5;
    }
    
    MiddleEnemy.prototype = Enemy.prototype;
    
    function MaxEnemy(container,bullets,myplan,score){
    
        Enemy.call(this,container,bullets,myplan,score);
        this.img = "images/enemy3_fly_1.png";
        this.dieImg = "images/enemy3_fly_3.gif";
        this.width = 110; //敌机的宽度
        this.height = 164; //敌机的高度
        this.dieCount = 10;
    }
    MaxEnemy.prototype = Enemy.prototype;

    效果图如图所示:

      

  • 相关阅读:
    开发进度01
    eclipse 调用cmd运行DataX
    kettle 新建DB连接双击打不开
    用户体验评价
    找水王课堂练习
    人月神话阅读笔记01
    用户模板和用户场景
    大道至简阅读笔记03
    第九周
    第八周总结
  • 原文地址:https://www.cnblogs.com/CooLLYP/p/7610299.html
Copyright © 2020-2023  润新知