輕輕鬆鬆開發HTML5遊戲

由David發表在天碼營

HTML5提供了很多新的語義標籤,以及更加豐富的瀏覽器API。與此同時,移動設備優先的Web框架也大量湧現。甚至出現了很多的HTML5遊戲引擎,並且可以獲得相當好的性能。微信的流行,使得HTML5的應用越來越火爆。於是小編也來湊湊熱鬧,出品一個牛刀小試的HTML5遊戲:「你能戳幾下」。本文便來記述整個開發流程,非常簡單!先點擊右上角的「參考代碼」,並下載源碼,跟著小編十分鐘便能開發自己的遊戲!

可以來體驗一把這個遊戲:你能戳幾下?

頁面框架

打開後首頁是這樣的:

點擊開始後,用戶開始狂戳屏幕正中間的按鈕,直到5秒的倒計時結束。最後給出提示:

首先,我們新建一個HTML文件,比如就叫index.html。在裡面添加一個基本的空HTML文檔:

<html>n<head lang="en">n <meta charset="UTF-8">n <meta name="viewport" content="initial-scale=1.0, user-scalable=no"/>n <link rel="stylesheet" href="main.css">n <script src="main.js"></script>n</head>n<body>n</body>n</html>n

計時器

然後在<body></body>之間加入我們的頁面主體部分,先來一個計時器:

<div class="timer">n <span id="time"></span>n</div>n

其中<div class="timer">是整個計時器,裡面的<span id="time">用來顯示倒計時的數字。給它們添加樣式吧:

body{n background: #f7565b;n}n.timer{n text-align: center;n color: white;n}n.timer #time{n color: lightgreen;n background: #5a5a5a;n padding: 3px 20px;n border: 10px solid #111;n border-radius: 15px;n}n

把上述文件存為main.css,放在index.html同一目錄下就可以了~

先來把body的背景設為紅色,然後讓.timer中的文字居中,並顯示為白色。顯示時間的數字#timer則要顯示成淺綠色,背景5a5a5a是一個接近黑色的顏色。padding給它來點內邊距,上下是3px,左右是20px。然後邊框要有10像素寬,#111是比5a5a5a還要黑的一個顏色~border-radius則設置了它的邊框圓角。現在計時器的樣式便做好了!

按鈕

然後來做一個綠色的大按鈕。首先我們需要在<head>中添加一行:

<link rel="stylesheet" href="lib/buttons.css">n

這一行引入了一個有用的樣式庫buttons.css,它提供了豐富的按鈕樣式。你可以從參考代碼中下載到這個文件!

同樣地,先在<body>裡面添加對應的HTML,緊接著計時器的代碼就可以~

<div class="clickarea">n <span class="button-wrap">n <a href="#" id="btn">Ready?</a>n </span>nn <p>你能戳幾下?</p>n</div>n

其中的button-wrap便是buttons.css提供的樣式。

.clickarea只是用來包裹.button-wrap和p的,設置它的text-align可以讓按鈕和文字都居中:

.clickarea{n text-align: center;n}n

綠色的大按鈕就這樣做好了!

頁面腳本

頁面腳本便是我們說的javascript文件。在開始寫腳本之前,我們還是要引入一個叫做jQuery的庫,只需要在<head>中添加一行:

<script src="lib/jquery-2.1.4.min.js"></script>n

文件jquery-2.1.4.min.js也可以在參考代碼中找到~ 然後在index.html同一目錄下創建一個main.js,在裡面就可以寫腳本了:

$(function () {n var $time = $(#time), // 獲得顯示時間的<span>n $btn = $(#btn), // 獲得顯示按鈕的<a>n status = init, // 初始狀態為initn time = 5000, // 計時5秒!5000毫秒n count = 0; // 戳了多少下!初始值為0nn // 添加按鈕被觸摸、或者被點擊的事件處理函數n $btn.on(touchstart click, function () {n switch (status) {n case init:n start();n break;n case started:n $btn.html(++count);n break;n }n });n});n

如果當前狀態是init(遊戲尚未開始),就開始遊戲;如果已經開始了,就把點擊次數加一,並把它設置為按鈕的文字。start方法是這樣實現的:

function start() {n status = started; // 設置狀態為遊戲已經開始n var counter = setInterval(timer, 7), // 7毫秒執行一次timer函數n curTime;nn function timer() {n time -= 7; // 倒計時減7毫秒n if (time <= 0) { n time = 0; // 時間到n clearInterval(counter);n }nn curTime = (time / 1000).toFixed(3); // 獲取三位小數的倒計時n if (curTime == 0.000)n $time.html(時間到); // 設置<span id="time">的內容為「時間到」n elsen $time.html(curTime + 秒); // 設置<span id="time">的內容為剩餘時間n }n}n

至此,「你能戳幾下」已經完成啦!點擊右上角的「參考代碼」,可以獲取完整的源碼!

歡迎關注天碼營微信公眾號: TMY-EDU

小編重點推薦:

Spring MVC實戰入門訓練

Spring Data JPA實戰入門訓練

Java Web實戰訓練

Node.js全棧開發

更多精彩內容請訪問天碼營網站
推薦閱讀:

請問有什麼可以代替texturepacker的?
在H5+App領域,白鷺、Layabox、Cocos Creator各自的優劣是什麼?
想嘗試開發些HTML5小遊戲,請大大們推薦款JS遊戲引擎,輕量的,簡單的有么?
白鷺引擎(egret)如何盈利?
我想做html5遊戲,該如何上手?

TAG:HTML5 | HTML5游戏 | HTMLCSS |