如何使用HTML 5 Canvas创建太空游戏

    HTML5 Canvas 可以快速创建出有助于游戏开发的轻型图片。 本部分说明如何使用 Canvas 创建将在网页中运行的怀旧风格外太空飞行游戏。 此游戏的设计主要是为了展示使用 Canvas 功能开发 Web 游戏的基本原则。 此太空游戏的目标是,使您的宇宙飞船穿过分布着爆炸小行星的星域,安全返回基地。

  本教程包含运行游戏的完整代码。代码是使用 HTML5 Canvas 和 JavaScript 编写的,包含四个独立的有注释代码示例。 每个示例都涉及一项关键的编程任务,这些任务是开发游戏的不同方面所必需的。 第四个代码示例将所有任务组合在一起,创建了一个完整有效的游戏,您可以使用箭头键移动飞船,穿越分布着爆炸红色小行星的星域迷宫。 如果您的飞船撞到行星,则将被毁坏。 为了安全返回基地,您必须避开小行星,或在您撞上小行星之前将其炸毁。 将根据您移动飞船的次数和您发射的炸弹数来进行计分。

  本主题包括一个独立的有注释代码示例,为您演示如何使用 HTML5 Canvas 和 JavaScript 创建包含白色星星的随机区域,以及绘制外形像飞盘一样的橙绿相间的宇宙飞船。 此游戏图像是使用像素创建的。 通过使用即时模式,Canvas 具有将像素直接放在屏幕上的能力。 此功能您能够轻松地在需要的位置,以选择的颜色绘制点、线和形状。 此代码示例将为您演示如何通过在形状中组合数学贝塞尔曲线和颜色来创建宇宙飞船。 然后,它将说明如何使用由弧形组成的小圆圈来绘制星星。

  此代码示例包含以下任务来演示使用Canvas 绘制这些游戏元素的基本原则:

  1.向网页添加 Canvas 元素

  2.创建黑色背景

  3.在背景上绘制随机星星

  4.向背景添加宇宙飞船

  代码示例的末尾是讨论材料,说明有关这些任务的设计和结构以及工作方式的详细信息。

 Canvas 代码示例:

<!DOCTYPE html>
<html>
  
  <head>
    <script type="text/javascript">
      // This function is called on page load.

      function canvasSpaceGame() {

        // Get the canvas element.
        canvas = document.getElementById("myCanvas");

        // Make sure you got it.
        if (canvas.getContext)

        // If you have it, create a canvas user inteface element.
        {
          // Specify 2d canvas type.
          ctx = canvas.getContext("2d");

          // Paint it black.
          ctx.fillStyle = "black";
          ctx.rect(0, 0, 300, 300);
          ctx.fill();

          // Paint the starfield.
          stars();

          // Draw space ship.
          makeShip();
        }
      }

      // Paint a random starfield.

      function stars() {

        // Draw 50 stars.
        for (i = 0; i <= 50; i++) {
          // Get random positions for stars.
          var x = Math.floor(Math.random() * 299)
          var y = Math.floor(Math.random() * 299)

          // Make the stars white
          ctx.fillStyle = "white";

          // Give the ship some room.
          if (x < 30 || y < 30) ctx.fillStyle = "black";

// Draw an individual star.
          ctx.beginPath();
          ctx.arc(x, y, 3, 0, Math.PI * 2, true);
          ctx.closePath();
          ctx.fill();
        }
      }

      function makeShip() {

        // Draw saucer bottom.
        ctx.beginPath();
        ctx.moveTo(28.4, 16.9);
        ctx.bezierCurveTo(28.4, 19.7, 22.9, 22.0, 16.0, 22.0);
        ctx.bezierCurveTo(9.1, 22.0, 3.6, 19.7, 3.6, 16.9);
        ctx.bezierCurveTo(3.6, 14.1, 9.1, 11.8, 16.0, 11.8);
        ctx.bezierCurveTo(22.9, 11.8, 28.4, 14.1, 28.4, 16.9);
        ctx.closePath();
        ctx.fillStyle = "rgb(222, 103, 0)";
        ctx.fill();

        // Draw saucer top.
        ctx.beginPath();
        ctx.moveTo(22.3, 12.0);
        ctx.bezierCurveTo(22.3, 13.3, 19.4, 14.3, 15.9, 14.3);
        ctx.bezierCurveTo(12.4, 14.3, 9.6, 13.3, 9.6, 12.0);
        ctx.bezierCurveTo(9.6, 10.8, 12.4, 9.7, 15.9, 9.7);
        ctx.bezierCurveTo(19.4, 9.7, 22.3, 10.8, 22.3, 12.0);
        ctx.closePath();
        ctx.fillStyle = "rgb(51, 190, 0)";
        ctx.fill();
      }
    </script>
  </head>
  
  <body onload="canvasSpaceGame()">
    <h1>
      Canvas Space Game
    </h1>
    <canvas id="myCanvas" width="300" height="300">
    </canvas>
  </body>

</html>

Canvas 代码示例讨论

  本节说明本代码示例的设计和结构。 它为您讲解代码的不同部分,以及整合它们的方式。 Canvas 示例使用标准 HTML5 标头 ,以便浏览器可以将它作为 HTML5 规格的一部分加以区别。

  代码分成两个主要部分:

  1.主体代码

  2.脚本代码

  主体代码

  在页面加载时,主体标记使用 onload 函数调用 canvasSpaceGame 函数。 Canvas 标记是主体的一部分。 指定了 Canvas 初始宽度和高度,还指定了 ID 属性。 必须使用 ID,才能将 canvas 元素添加到页面的对象模型中。

  脚本代码

  脚本代码包括三个函数: canvasSpaceGame、stars 和 makeShip。 加载页面时将调用 canvasSpaceGame 函数。 stars 和 makeShip 都是从 canvasSpaceGame 调用的。

  canvasSpaceGame 函数

  加载页面时将调用此函数。 它通过在主体代码中使用 Canvas 元素 ID 来获取画布, 然后获取画布的上下文,并准备好接受绘图。 将上下文初始化为 2D 画布后,使用 fillStyle、rect 和 fill 方法将画布绘制为黑色。

  stars 函数

  此函数是从 canvasSpaceGame 调用的。 它使用 for loop 在二维平面上生成 50 个潜在的星星位置,然后使用 fillStyle 创建白色。 随后,会进行一项检查,确认 x,y 坐标是否与左上角过于靠近。 如果星星绘制得与左上角过于靠近,则会将 fillStyle 更改为黑色,使其不会妨碍宇宙飞船。 随后,使用 arc 方法绘制每个星星并使用相应的填充颜色。

  makeShip

  此函数是从 canvasSpaceGame 调用的。 使用一系列的 beginPath、moveTo、bezierCurveTo、closePath、fillStyle 和 fill 方法,绘制一个简单的宇宙飞船。

  飞船是通过绘制两个椭圆来创建的,一个椭圆在另一个的上面。 它首先在 Adobe Illustrator CS5 中绘制,然后使用 的 Ai2Canvas 插件将图像导出到 Canvas。 生成的 Canvas 代码已复制并粘贴到此示例的代码中。

时间: 2024-10-30 19:00:00

如何使用HTML 5 Canvas创建太空游戏的相关文章

创建Eclipse游戏插件,第4部分: 打包、测试和发布

虽然大多数用户都把 Eclipse 当成构建 Java 应用程序的集成开发环境,但实际上它是更基本的东西.Eclipse 是一个用于构建插件的框架,允许扩展其功能去解决几乎任何问题 -- 只要利用一套 API 和现成可用的库.在这份四个部分的 "创建 Eclipse 游戏插件" 教程系列中,将解决大多数程序员每天都会遇到的一个迫切问题:如何不用切换应用程序就抽出时间玩一个迅速的视频游戏,还能让它不太明显.教程中将开发一个简单的游戏,读取进入视图的虫子,并把它们打爆.游戏将在 Eclip

创建Eclipse游戏插件,第3部分: 启动游戏

虽然多数用户都把 Eclipse 当成构建 Java 应用程序的集成开发环境,实际上它是更基本的东西.Eclipse 是构建插件的框架,允许扩展其功能去解决几乎任何问题 -- 只要利用一套 API 和现成可用的库.在这份四个部分的 "创建 Eclipse 游戏插件" 教程系列中,将解决多数程序员每天都会遇到的一个迫切问题:如何不用切换应用程序就抽出时间玩一个迅速的视频游戏,还能让它不太明显.教程中将开发一个简单的程序,读取进入视图的虫子,并把它们打爆.游戏将在 Eclipse 中作为插

创建Eclipse游戏插件,第2部分: 构建和发射BB枪

虽然多数用户都把 Eclipse 当成构建 Java 应用程序的集成开发环境,实际上它是更基本的东西.Eclipse 是用于构建插件的框架,允许扩展其功能来解决几乎任何问题 -- 只要利用一套 API 和现成可用的库.在这份四个部分的 "创建 Eclipse 游戏插件" 教程系列中,将解决多数程序员每天都会遇到的一个迫切问题:如何不用切换应用程序就抽出时间玩一个迅速的视频游戏,还能让它不太明显.教程中将开发一个简单的程序,读取进入视图的虫子,并把它们击碎.游戏将在 Eclipse 中作

创建Eclipse游戏插件,第1部分: 入门

虽然大多数用户把 Eclipse 当成构建 Java 应用程序的集成开发环境,但它实际上更加基础.Eclipse 是个构建插件的框架,允许任何开发人员扩展它的功能来解决几乎任何问题,只要利用一套 API 和可用的库即可.在这个分四个部分的 "创建 Eclipse 游戏插件" 教程系列中,将解决大多数程序员每天编程都会遇到的一个迫切的问题:如何不用切换应用程序就抽身玩一个快速的视频游戏,同时还不会很明显.还将学习 Eclipse 的插件架构,学习如何定义自己的插件.用 SWT 开发界面,

js H5 canvas投篮小游戏_javascript技巧

本文实例为大家分享了H5 canvas投篮小游戏实现代码,供大家参考,具体内容如下 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body onload="init(19,'mylegend',820,500,main,LEvent.INIT)"> <div

使用CoffeeScript和HTML5 canvas元素创建小游戏

小游戏是学习新技术的一种有趣方式.本文将引导您使用 CoffeeScript 和http://www.aliyun.com/zixun/aggregation/79228.html"> HTML5 canvas元素亲自实现Conway 的 Game of Life .尽管Conway 的 Game of Life 可能算不上一个游戏,但它是一个非常容易管理的出色的小任务. 在技术方面,您将需要: 一个可处理 HTML5 canvas元素的最 新的 Web 浏览器. CoffeeScript

HTML5 Canvas开发迷宫游戏例子

本文介绍如何使用Canvas画布制作一个简单的迷宫游戏:用户按下方向键时,笑脸图标会沿相应的方向移动(移动时有动画效果),遇到墙壁时(碰撞检测)就会停下来. 1,在线样例加载困难迷宫 加载简单迷宫 开发迷宫游戏例子-html5 canvas绘图例子"> 2,实现原理(1)迷宫的生成:我们这里是使用一幅迷宫图片,然后把整幅图绘制到画布上. (2)通过设置 window.onkeydown 的响应函数 processKey(),当用户按下方向键的时候,根据键码调整笑脸各方向上的速度. (3)d

HTML5 Canvas捕获用于游戏开发的键盘、鼠标和触摸事件

学习如何处理键盘和鼠标事件,如何阻止 Web 浏览器的默认事件行为,以及如何向游戏对象的某种逻辑表示传播事件.此外,还将学习如何处理 iPhone 和 iPad 等移动设备上与设备无关的(device-agnostic)输入. 令拥有 Flash 或 Silverlight 背景的开发人员感到惊讶的是,为 HTML5 Canvas 编写的应用程序在处理用户输入方面并没有什么特立独行之处.实质上,从启用了 JavaScript 的 Web 浏览器诞生之初开始,HTML 用户输入就涉及到使用内置于浏

yy游戏直播间如何创建 yy游戏直播开启方法

yy主播游戏直播申请流程: 1.首先,保证所在频道频道OW.VP启用游戏直播频道模板 2:进入游戏直播频道,点击模板上方的添加主播按键 3:输入要添加的主播YY号,点击添加 4.添加成功后会在下方有主播YY号显示 另外提醒大家注意: 1.主播需通过OW成功添加"普通主播"权限后方可开启直播游戏 2.主播在直播过程中,需要开启摄像头或遇到无法直播的游戏,需要申请成为签约主播 3.签约主播开启桌面捕捉功能,直播游戏列表内无法直播的游戏 下面介绍一下周免捕捉的方法 1.进入频道上麦,点击绿色