HTML坦克大战学习02---坦克动起来

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>

</head>
<body onkeydown="getCommand()">
    <canvas id="tankMap" width="400px" height="300px" style="background-color: black"></canvas>
    <script type="text/javascript">

        //得到画布
        var canvas1 = document.getElementById("tankMap");
        //取得画布画笔对象
        var cxt = canvas1.getContext("2d");
        //定义一个Hero类
        //x表示横坐标,主表示纵坐标
        function Hero(x, y, direct, speed) {
            this.x = x;
            this.y = y;
            this.speed = speed;
            this.direct = direct;

            //向上
            this.moveUp = function () {
                this.y -= this.speed;
            }
            //向右
            this.moveRight = function () {
                this.x += this.speed;
            }
            //向下
            this.moveDown = function () {
                this.y += this.speed;
            }
            //向左移
            this.moveLeft = function () {
                this.x -= this.speed;
            }

        }
        //我的坦克 w表示向上,d表示向右 s表示向下 a表示向左

        var hero = new Hero(140, 140, 0, 10);
        //先画出坦克
        darwTank(hero);

        //绘制坦克对象
        function darwTank(hero) {
            //画出坦克
            cxt.fillStyle = "#DED284";
            //画出左面
            cxt.fillRect(hero.x, hero.y, 5, 30);
            //画出右边
            cxt.fillRect(hero.x + 15, hero.y, 5, 30);
            //中间矩形
            cxt.fillRect(hero.x + 6, hero.y + 5, 8, 20);
            //画出坦克的盖子
            cxt.fillStyle = "#FFD972";
            cxt.arc(hero.x + 10, hero.y + 15, 4, 0, 360, true);
            cxt.fill();
            //车出炮线
            cxt.strokeStyle = "#FFD972";
            cxt.lineWidth = 1.5;
            cxt.beginPath();

            cxt.moveTo(hero.x + 10, hero.y + 15);
            cxt.lineTo(hero.x + 10, hero.y);
            cxt.closePath();
            cxt.stroke();
        }

        //接收键盘命令
        function getCommand() {

            var code = event.keyCode;
            //alert(code);
            switch (code) {
                case 87:
                    hero.moveUp();
                    break;
                case 68:
                    hero.moveRight();
                    break;
                case 83:
                    hero.moveDown();
                    break;
                case 65:
                    hero.moveLeft();
                    break;
            }
            cxt.clearRect(0, 0, 400, 300);
            darwTank(hero);
        }
    </script>
</body>
</html>


HTML坦克大战学习02---坦克动起来,布布扣,bubuko.com

时间: 2024-08-25 09:15:42

HTML坦克大战学习02---坦克动起来的相关文章

HTML坦克大战学习01

<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> </head> <body> <canvas id="tankMap" width="400px" height="300px" style="background

坦克大战中的坦克

临近期末考试,给大家整一个轻松一些的代码 做个坦克大战中的坦克 当然要想做成小游戏还是要努努力呀~ 祝大家考个好成绩 import java.awt.Color;import java.awt.Font;import java.awt.Frame;import java.awt.Graphics;import java.awt.event.KeyEvent;import java.awt.event.KeyListener; import javax.swing.JFrame;import ja

小白学习Unity 3D做经典游戏坦克大战日常

老师 | Trigger 学习者 |小白 出品 | Siki 学院 Hello,小伙伴们.接下来小白跟Trigger老师做一款2D游戏坦克大战.从素材.代码到场景和UI的游戏开发.小白把日常遇到的问题做一个记录贴,让各位小伙伴充分了解Untiy 3D基本游戏开发和一些小白容易疏忽的问题.Unity 3D有着非常便利的管理和编码功能.现在非常热门的MOBA游戏王者荣耀,也是用Unity 3D 开发的呢!用其他编程语言例如: java / kotlin 和 Object-C / swift 原生游戏

Egret学习-坦克大战开发

学习了几天Egret,基本的语法和用法了解的差不多了,现在开始写一个坦克大战练习下,实践是最好的学习方式 首先确定下开发内容,概要设计 1.加载一个TiledMap,作为游戏地图 2.坦克分为两个阵营,玩家和敌方 3.有砖块和石头作为障碍物,坦克不能穿过 4.通过鼠标控制玩家坦克移动,坦克移动到鼠标点击的位置,简单的寻路,先左右移,后上下移动,遇到障碍物则停止 5.鼠标点击坦克,坦克发射子弹, 1)子弹遇到敌方,敌方坦克消失,子弹消失, 2)子弹遇到砖块,砖块消失,子弹消失 3)子弹遇到石头,石

java学习之坦克大战游戏

总结:由于这几天快过年比较忙然后没怎么写,写代码途中一些经验总结现在给忘记了.这次的小项目感觉比上次写的思路清楚了点.没有之前第一次写那么逻辑混乱,结构也搞的比之前的要好,添加功能比较容易.学习了之前的经验,操作对象的方法由对象本身提供.不过这次小项目还有不足和不完善之处,有些可以做的功能没有实现,比如游戏存档,这里应该可以用下对象的序列化,还有游戏难度的设置也可以写个文件弄出来.要过年了,到处走亲戚没什么心思写了,这里只能留个尾巴了. 前言:之前的及时通信项目完成后感觉线程方面和对java的运

DS课设【坦克大战最短路】(MummyDing)

DS课设[坦克大战最短路] 还是决定写点东西简单记录下这次编码. 一.想法 还没放假的时候只想着用C#实现,算法图论方面觉得图论方向会靠谱些,但一直没有什么好点子.C#以前也没学过,自信来源于MFC的学习经历(以前也是用它做了C语言课设).C#应该是没有MFC那么复杂的,心想看几天应该就可以上手一些小东西了,事实证明也如此. 寒假时间相对以前更长,也并不着急做课设.开始一段是刷题+学习Kinect+顺带了解Kinect,后来在刷题过程中遇到这题,还蛮有意思的,当即就写了个"坦克大战最短路简单设计

Java坦克大战(三)

关于这个坦克大战的项目是在学习Java基础的时候,拿来练习的最近看到这些代码,感觉很亲切,就把他们都复制下来,编辑成博客.回首看去,Java基础的学习确实应该建立在找项目练习上,这样才能将学到的基础知识用到实际当中,不然你知道什么是面向对象编程,什么是线程,什么是死锁,概念都了解了一大堆,等到实际应用的时候,还是力不从心.初学者千万不要灰心,真心是敲着敲着就有感觉了.下面还是循序渐进的介绍这个项目的几个版本,注释我写的很详细,新功能添加后部分代码有改动,如果感兴趣,可以看前几篇博客. 坦克大战(

Java坦克大战(四)

这是我的坦克游戏大战的最后一版,里面添加很多新的功能.这个坦克大战的有很多不足之处,但是对于初学者来说依然是一个很好的练习项目,从中我们可以学习Java基础知识,将知识与项目结合,学习面向对象编程思想,最主要的是编程的逻辑练习,代码往往不像是写文章从上到下一气呵成完成,中间很可能为增加一个功能来添加一个类一个方法等,中间有很多细节需要我们考虑.文章最后会附加该坦克大战涉及的相关素材. 功能: 1.防止坦克重叠 2.可以分关(闪烁效果) 3.记录成绩(小型游戏都是写在文件中) 4.存盘退出,可以记

黑马2018年最新kotlin项目实战视频 (手机影音、即时通讯、黑马外卖、坦克大战等)

├─1.kotlin简介和学习方法│ 01_kotlin课程简介_01.mp4│ 02_kotlin学习方法_01.mp4│ 03_kotlin选好教练车_01.mp4│ 03_kotlin选好教练车_02.mp4│ 04_kotlin你好世界_01.mp4│ 05_kotlin变量与输出_01.mp4│ 05_kotlin变量与输出_02.mp4│ ├─10.类,对象和接口(三)│ 38_kotlin面向对象-抽象类和接口_01.mp4│ 38_kotlin面向对象-抽象类和接口_02.mp4