请教一下,这个游戏用什么语言写的,C++?

tankGame2.html

<!DOCTYPE html>
< html>
< head>
< meta charset='utf-8'/>
< script src='tankGame2.js'></script>
< /head>
< body οnkeydοwn="changeDirect()">
< canvas id='tankMap' width='500px' height='300px' style='border:1px solid #cccfff'>
你的浏览器不支持canvas标签</canvas>
< /body>
< script>
    //开始画出我们的tanke
    var canvas = document.getElementById('tankMap');
    //相当于获得画笔
    var ctx = canvas.getContext('2d');
    //自定义的标准:
    // 0-->向上  1-->向右  2-->向下  3--> 向左
    var hero = new Hero(40,40,3,0,heroColor);
    drawTank(hero);
    //定义一个数组,画出敌人的坦克,画一个向数组添加一个
    var enemyTanks = new Array(); 
    //定义一个子弹的数组
    var heroBullets = new Array();
    //根据方向生成的具体的某个子弹对象
    var heroBullet = null;

    for(var i=0;i<3;i++){
        var enemyTank = new EnemyTank((i+1)*50,0,3,2,enemyColor);
         enemyTanks[i] = enemyTank;
         drawTank(enemyTanks[i]);
    }
    //刷新作战区,显示战场上最新的元素()
    function flashMap(){
        ctx.clearRect(0,0,500,300);
        drawTank(hero);
        //画出英雄坦克的子弹
        drawHeroBullet();
        for(var i=0;i<3;i++){
            drawTank(enemyTanks[i]);
        }
    }

    function changeDirect(){
        //触发事件后,传递参数 event
        var keycode = event.keyCode;
        switch(keycode){
            case 38:
            hero.moveUp();
            break;
            case 39:
            hero.moveRight();
            break;
            case 40:
            hero.moveBottom();
            break;
            case 37:
            hero.moveLeft();
            break;
            case 32:
            hero.shotEnemy();
            break;
            
        }
        flashMap();
    }
< /script>
< /html>

tankGame.js

    //先给坦克定义颜色
    var enemyColor = new Array('gray','pink');
    var heroColor = new Array('blue','orange');
    
    
    function Tank(x,y,speed,direct,color){
        this.x = x;
        this.y = y;
        this.speed = speed;
        this.direct = direct;
        this.moveUp = function(){
            hero.y -= hero.speed;
            hero.direct = 0;
        }
        this.moveRight = function(){
            hero.x += hero.speed;
            hero.direct = 1;
        }
        this.moveBottom = function(){
            hero.y += hero.speed;
            hero.direct = 2;
        }
        this.moveLeft = function(){
            hero.x -= hero.speed;
            hero.direct = 3;
        }
    }
    
    //先定义一个坦克类,包括坦克的坐标,方向,坦克的速度
    function Hero(x,y,speed,direct,color){
        this.hero = Tank;
        this.color = color;
        this.hero(x,y,speed,direct);
        this.shotEnemy = function(){
            //drawHeroBullet(hero);
            //heroBullet = new HeroBullet();
            switch(this.direct){
                case 0:
                //实例化一个子弹对象
                heroBullet = new HeroBullet(this.x+10,this.y,this.speed);
                break;
                case 1:
                heroBullet = new HeroBullet(this.x+30,this.y+9,this.speed);
                break;
                case 2:
                heroBullet = new HeroBullet(this.x+9,this.y+30,this.speed);
                break;
                case 3:
                heroBullet = new HeroBullet(this.x,this.y+9,this.speed);
                break;
            }
             heroBullets.push(heroBullet);
        }
    }

    //定义 敌人的坦克
    function EnemyTank(x,y,speed,direct,color){
        this.enemyTank = Tank;
        this.color = color;
        this.enemyTank(x,y,speed,direct);
    }

    function HeroBullet(x,y,speed,direct){
        this.x = x;
        this.y = y;
        this.speed = speed;
        this.direct = direct;
        
    }
    
    function drawHeroBullet(){
        for(var j=0;j<heroBullets.length;j++){
            ctx.fillStyle = 'blue';
            var heroBullet = heroBullets[j];
            ctx.fillRect(heroBullet.x,heroBullet.y,2,2);
        }
    }
    
    //把生成坦克的代码封装到一个函数中
    function drawTank(hero){
        switch(hero.direct){
            case 0:
            case 2:
            ctx.fillStyle = hero.color[1];
            ctx.fillRect(hero.x,hero.y,5,30);
            ctx.fillRect(hero.x+15,hero.y,5,30);
            ctx.fillRect(hero.x+6,hero.y+5,8,20);
            //需要注意,画圆的时候需要重新开启路径
            ctx.fillStyle = hero.color[0];
            ctx.beginPath();
            ctx.arc(hero.x+10,hero.y+15,3,0,Math.PI*2,true);
            ctx.closePath();
            ctx.fill();
            //画出炮筒(直线)
            ctx.strokeStyle = hero.color[0];
            ctx.lineWidth = 2;
            ctx.moveTo(hero.x+10,hero.y+15);
            if(hero.direct ==0){
                ctx.lineTo(hero.x+10,hero.y);
            }else if(hero.direct ==2){
                ctx.lineTo(hero.x+10,hero.y+30);
            }
            ctx.stroke();
            break;
            case 1:
            case 3:
            ctx.fillStyle = hero.color[1];
            ctx.fillRect(hero.x,hero.y,30,5);
            ctx.fillRect(hero.x,hero.y+15,30,5);
            ctx.fillRect(hero.x+5,hero.y+6,20,8);
            //需要注意,画圆的时候需要重新开启路径
            ctx.fillStyle = hero.color[0];
            ctx.beginPath();
            ctx.arc(hero.x+15,hero.y+10,3,0,Math.PI*2,true);
            ctx.closePath();
            ctx.fill();
            //画出炮筒(直线)
            ctx.strokeStyle = hero.color[0];
            ctx.lineWidth = 2;
            ctx.moveTo(hero.x+15,hero.y+10);
            if(hero.direct ==1){
                ctx.lineTo(hero.x+30,hero.y+10);
            }else if(hero.direct ==3){
                ctx.lineTo(hero.x,hero.y+10);
            }
            ctx.stroke();
        }
    }

开头的<>里面的都是什么啊

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
一个完整的C++游戏程序是一个复杂的项目,涉及到多个方面的知识,包括图形界面、游戏逻辑、输入处理和可能的物理引擎或音频系统。这里我会提供一个简化的步骤和基本框架,让你有个大致的了解: 1. **选择游戏类型**:决定是制作2D平台游戏、策略游戏还是第一人称射击游戏等。这将影响所需的技术栈。 2. **学习库和框架**:对于C++,一些流行的游戏开发框架有Unity(C#)和Unreal Engine(C++),但也可以考虑轻量级的如SFML、Allegro或SDL。如果你是初学者,可能从这些库开始比较合适。 3. **设计游戏架构**:定义游戏对象、角色、场景和交互逻辑。这通常会使用面向对象编程(OOP)。 4. **图形渲染**:使用OpenGL或DirectX等API进行窗口设置和图形输出。对于2D游戏,可能使用像素操作或精灵图。 5. **输入处理**:监听键盘、鼠标和触摸事件,并将其映射到游戏中的动作。 6. **游戏循环**:创建一个主循环,不断更新游戏状态并绘制帧。 7. **游戏逻辑**:编控制角色移动、碰撞检测、得分计算等核心功能的代码。 8. **资源管理**:加载、解压和管理游戏所需的纹理、音效和模型文件。 9. **测试和调试**:确保游戏在各种平台上运行良好,并修复可能出现的错误。 10. **优化性能**:可能的话,优化算法、减少内存消耗和提高帧率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值