pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

使用html5 canvas創建太空游戲的示例_html5教程技巧

使用html5 canvas創建太空游戲的示例_html5教程技巧HTML5中文學習網,是中國最大的HTML5中文門戶,為廣大HTML5愛好者提供各種HTML5資料,包括HTML5網站、HTML5資訊、HTML5應用、HTML5游戲、HTML5教
點評:這篇文章主要介紹了使用html5 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");</p><p>// Paint it black.
ctx.fillStyle = "black";
ctx.rect(0, 0, 300, 300);
ctx.fill();</p><p>// Paint the starfield.
stars();</p><p>// Draw space ship.
makeShip();
}
}</p><p>// Paint a random starfield.</p><p>
function stars() {</p><p>// 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)</p><p>// Make the stars white
ctx.fillStyle = "white";</p><p>// Give the ship some room.
if (x < 30 || y < 30) ctx.fillStyle = "black";</p><p>// Draw an individual star.
ctx.beginPath();
ctx.arc(x, y, 3, 0, Math.PI * 2, true);
ctx.closePath();
ctx.fill();
}
}</p><p>function makeShip() {</p><p>// 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();</p><p>// 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 代碼已復制并粘貼到此示例的代碼中。


【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

主站蜘蛛池模板: 橡胶接头_橡胶软接头_套管伸缩器_管道伸缩器厂家-巩义市远大供水材料有限公司 | 南京精锋制刀有限公司-纵剪机刀片_滚剪机刀片_合金刀片厂家 | 在线浊度仪_悬浮物污泥浓度计_超声波泥位计_污泥界面仪_泥水界面仪-无锡蓝拓仪表科技有限公司 | 广州中央空调回收,二手中央空调回收,旧空调回收,制冷设备回收,冷气机组回收公司-广州益夫制冷设备回收公司 | 北京开业庆典策划-年会活动策划公司-舞龙舞狮团大鼓表演-北京盛乾龙狮鼓乐礼仪庆典策划公司 | 直读光谱仪,光谱分析仪,手持式光谱仪,碳硫分析仪,创想仪器官网 | 江苏远邦专注皮带秤,高精度皮带秤,电子皮带秤研发生产 | 周易算网-八字测算网 - 周易算网-宝宝起名取名测名字周易八字测算网 | 袋式过滤器,自清洗过滤器,保安过滤器,篮式过滤器,气体过滤器,全自动过滤器,反冲洗过滤器,管道过滤器,无锡驰业环保科技有限公司 | 太阳能发电系统-太阳能逆变器,控制器-河北沐天太阳能科技首页 | 广州/东莞小字符喷码机-热转印打码机-喷码机厂家-广州瑞润科技 | 【灵硕展览集团】展台展会设计_展览会展台搭建_展览展示设计一站式服务公司 | 北京京云律师事务所| 好杂志网-首页| 不锈钢反应釜,不锈钢反应釜厂家-价格-威海鑫泰化工机械有限公司 不干胶标签-不干胶贴纸-不干胶标签定制-不干胶标签印刷厂-弗雷曼纸业(苏州)有限公司 | 工业废水处理|污水处理厂|废水治理设备工程技术公司-苏州瑞美迪 今日娱乐圈——影视剧集_八卦娱乐_明星八卦_最新娱乐八卦新闻 | ZHZ8耐压测试仪-上海胜绪电气有限公司| 液压油缸-液压缸厂家价格,液压站系统-山东国立液压制造有限公司 液压油缸生产厂家-山东液压站-济南捷兴液压机电设备有限公司 | 超声波焊接机_超音波熔接机_超声波塑焊机十大品牌_塑料超声波焊接设备厂家 | 粉丝机械,粉丝烘干机,粉丝生产线-招远市远东粉丝机械有限公司 | 焊缝跟踪系统_激光位移传感器_激光焊缝跟踪传感器-创想智控 | 皮带机-带式输送机价格-固定式胶带机生产厂家-河南坤威机械 | 河南空气能热水器-洛阳空气能采暖-洛阳太阳能热水工程-洛阳润达高科空气能商行 | 加气混凝土砌块设备,轻质砖设备,蒸养砖设备,新型墙体设备-河南省杜甫机械制造有限公司 | 上海皓越真空设备有限公司官网-真空炉-真空热压烧结炉-sps放电等离子烧结炉 | 净化板-洁净板-净化板价格-净化板生产厂家-山东鸿星新材料科技股份有限公司 | 硅PU球场、篮球场地面施工「水性、环保、弹性」硅PU材料生产厂家-广东中星体育公司 | 药品仓库用除湿机-变电站用防爆空调-油漆房用防爆空调-杭州特奥环保科技有限公司 | 高清视频编码器,4K音视频编解码器,直播编码器,流媒体服务器,深圳海威视讯技术有限公司 | 京港视通报道-质量走进大江南北-京港视通传媒[北京]有限公司 | Safety light curtain|Belt Sway Switches|Pull Rope Switch|ultrasonic flaw detector-Shandong Zhuoxin Machinery Co., Ltd | 玻璃钢型材-玻璃钢风管-玻璃钢管道,生产厂家-[江苏欧升玻璃钢制造有限公司] | 水厂自动化-水厂控制系统-泵站自动化|控制系统-闸门自动化控制-济南华通中控科技有限公司 | 微型气泵-真空-蠕动-水泵-厂家-深圳市品亚科技有限公司 | 自动螺旋上料机厂家价格-斗式提升机定制-螺杆绞龙输送机-杰凯上料机 | 消泡剂_水处理消泡剂_切削液消泡剂_涂料消泡剂_有机硅消泡剂_广州中万新材料生产厂家 | 济南网站建设_济南网站制作_济南网站设计_济南网站建设公司_富库网络旗下模易宝_模板建站 | 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 - 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 | 媒介云-全网整合营销_成都新闻媒体发稿_软文发布平台 | 智能风向风速仪,风速告警仪,数字温湿仪,综合气象仪(气象五要素)-上海风云气象仪器有限公司 | 电加热导热油炉-空气加热器-导热油加热器-翅片电加热管-科安达机械 |