飞机大战(canvas小练习)

本文通过HTML5的canvas元素,逐步讲解如何创建一个飞机大战的小游戏。内容包括画布初始化、背景循环播放、飞机大战logo绘制、游戏入口、我方飞机与分数显示、子弹与敌机的绘制,以及游戏结束状态的处理。通过定时器实现连续的游戏效果。
摘要由CSDN通过智能技术生成

1、创建一个画布,然后初始化对象

  // 初始化
        var canvas = document.getElementsByTagName("canvas")[0]
        var ctx = canvas.getContext("2d")
        var ready = 0;
        var loading = 1;
        var running = 2;
        var pause = 3;
        var over = 4;
        // 当前游戏阶段判断
        var state = ready;
        // 生命值
        var life = 3;
        // 游戏分数
        var score = 0;

        // 画布宽高
        var width = 480;
        var height = 800;


        // 准备阶段 ready
        var bg = new Image();
        bg.src = "img/background.png";

        // 背景数据
        var bgParam = { 
            bg:bg,
            x: 0,
            y: 0,
            width: 480,
            height: 800

        }

2、绘制背景,利用一张背景图实现循环播放的效果

// 背景
        function Bg(param){
            this.bg = param.bg;
            this.x = param.x;
            this.y = param.y;
            this.width = param.width;
            this.height = param.height;

            this.y1 = -this.height
            // 绘制
            this.paint = function(){
                ctx.drawImage(this.bg,this.x,this.y,this.width,this.height)
                ctx.drawImage(this.bg,this.x,this.y1,this.width,this.height)
            }

            // 运动
            this.sport = function(){
                this.y +=1;
                this.y1 +=1;
                
                if(this.y >= this.height){
                    this.y = -this.height;
                }
                if(this.y1 >= this.height){
                    this.y1 = -this.height;
                }

            }
        }

        var bgObj = new Bg(bgParam)

3、绘制飞机大战的logo

 // logo
        var logo = new Image()
        logo.src = "img/start.png"

        var logoParam = {
            logo: logo, 
            x: 0,
            y: 0,
            width: 460,
            height: 850,
        }

        function Logo(param){
            this.logo = param.logo;
            this.x = param.x;
            this.y = param.y;
            this.width = param.width;
            this.height = param.height;

            this.paint = function(){
                ctx.drawImage(this.logo, this.x, this.y, this.width,this.height)
            }
        }
        var logoObj = new Logo(logoParam)

4、点击界面进入游戏准备状态

// 点击画布进入下一阶段 loading

        var imgArr = ["img/game_loading1.png","img/game_loading2.png","img/game_loading3.png","img/game_loading4.png"]
        var imgLoading = []
        for(var i = 0; i< imgArr.length; i++){
            imgLoading[i] = new Image();
            imgLoading[i].src = imgArr[i]
        }
        // console.log(imgLoading)

        var loadingParam = {
            imgLoading: imgLoading,
            width: 186,
            height: 38
        }
        function Loading(param){
            this.imgLoading = param.imgLoading;
            this.width = param.width;
            this.height = param.height;
            this.x = 0;
            this.y = height - param.height

            // 下标
            this.inde
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值