發基于 WebGL 的網頁游戲涉及多個步驟,包括游戲概念的設計、圖形資源的創建、編碼和調試等。以下是一個一般性的步驟指南,希望對大家有所幫助。北京木奇移動技術有限公司,專業的軟件外包開發公司,歡迎交流合作。
請注意,這只是一個一般性的開發流程,具體的步驟可能因項目的規模和復雜性而有所不同。在整個過程中,文檔、版本控制和團隊協作也是關鍵的因素,尤其是在大型項目中。
對于初學編程的朋友來說,這篇文章有點長,而且會有點難懂。但是請不要放棄,我盡量以通俗的語言解釋相關的編程概念,這里只講解編寫一個游戲需要的相關編程概念(如需要會在后面的文章中隨時補充相關概念),對其余未涉及的編程概念大家可以自行搜索學習。本文都是簡單的編程概念,請耐心看完,如有疑問歡迎與我交流。本人水平有限,如有錯誤歡迎指正。
正如有人的地方就有江湖,有瀏覽器的地方就有JavaScript。那么什么是JavaScript呢?JavaScript 是世界上最流行的腳本語言,它適用于PC、筆記本電腦、平板電腦和手機。JavaScript 是一種輕量級的編程語言,JavaScript 是可插入HTML 頁面的代碼,JavaScript 插入 HTML 頁面后,可由所有的現代瀏覽器執行,JavaScript 很容易學習,沒有想象中的那么復雜。
一、如何在網頁中添加JavaScript代碼
HTML 中的腳本必須位于<script>與</script>標簽之間,有兩種方式,第一種方式,在<script>與</script>標簽之間直接添加JavaScript代碼,例如:<script type="text/javascript">alert("Hello World!");</script>,打開含有上述代碼的網頁將顯示一個對話框(alert是一個函數,作用是彈出一個含有信息的對話框),如下圖所示:
第二種方式是把JavaScript腳本保存到外部文件中,這樣代碼可以被多個網頁使用。外部 JavaScript 文件的文件擴展名是js。如以外部文件方式引用JavaScript,需要在<script>標簽的 "src" 屬性中設置該.js文件位置及名稱, 例如:
<html>
<body onload="main()">
<script src="first.js"></script>
</body>
</html>
first.js文件代碼如下:
function main(){
alert("Hello World!");
}
打開這個網頁,顯示的結果與上圖一致。其中<body>標簽中的onload="main()"表示網頁加載完畢后調用main()函數(后面會介紹什么是函數)。
二、JavaScript變量
變量用來存儲值或計算結果,JavaScript使用關鍵字var來定義變量,使用等號來為變量賦值,例如:
var x, length;
x=5;
length=6;
執行以上語句后,變量x的值為5,變量length的值為6。(提示:為保持代碼可讀性建議每行以;結尾,每行開頭適當添加空格縮進)
變量名約定:JavaScript變量名必須以字母、下劃線_或美元符$開頭,后續的字符可以是字母、數字、下劃線或美元符(數字是不允許作為首字符出現的,以便 JavaScript 可以輕易區分開標識符和數字),注意:變量名區分大小寫。
注意:JavaScript變量名不能是保留字(詳細的保留字請自行搜索),否則會出現語法錯誤提示,如下圖:
三、注釋
為了增強代碼的可讀性,可以對相應代碼進行注釋,有兩種方式,第一種:多行注釋,以"/*"開頭,然后增加注釋文字,最后以"*/"結尾,例如:
第二種:單行注釋,以"//"開頭,只能添加一行注釋文字,例如:
四、數據類型
JavaScript 有多種數據類型:數字,字符串,數組,對象等等,例如:
其中數字、字符串類型較簡單,數組、對象類型較復雜,下面再簡單說說數組和對象類型。
1、數組
JavaScript 數組(Array)是有序數據的集合,數組中的每個成員被稱為元素(Element),每個元素的名稱(鍵)被稱為數組下標(Index),注意:下標從0開始。JavaScript 常用的定義(創建或者聲明)數組方法有兩種:構造數組和數組直接量。
a4[2]表示訪問a4數組的第三個元素(下標從0開始),即3。
數組的元素可以為數字、字符串、對象,還可以是數組,元素為數組的數組稱為多維數組,下面是一個二維數組(可以把它想像成一個9行8列的表格)
如何定義這個數組呢?分兩步來定義,首先定義一個數組(有9個元素):
var a=new Array(9);
然后將這個數組的元素依次定義成一個數組
a[0]=new Array(8);
a[1]=new Array(8);
……
a[8]=new Array(8);
即,先將數組的行定義出來,再定義每一行中的元素。現在要訪問數組a的元素的話需要兩個坐標——行、列坐標,例如:訪問第5行第4列的元素,a[4][3]
2、對象
對象可以存儲復雜的數據,那么什么是對象呢?計算機程序設計教材上關于對象的定義比較抽象,用我自己的話來說,就是將客觀世界中的事物特征和行為用計算機語言來描述并保存至一個變量中,這個變量就叫對象。以人為例,每個人的特征都不一樣(性別、身高、體重……),但都有相同的行為(說話、行走、睡覺……)。常用的對象定義方式有兩種:構造對象和直接定義對象,先看看構造對象的方法
上面是構造對象的一般方法,即先構造一個Object對象,然后再定義對象的屬性(特征),接著定義對象的方法(行為),為遵循面向對象的程序設計方法,一般需要提供訪問屬性的方法,例如:獲取年齡的方法getAge和修改年齡的方法setAge,注意這兩個方法中的this表示的是當前對象。將以上代碼復制到HTML文件<script></script>標簽之間,保存并在瀏覽器里打開,控制臺(chrome瀏覽器按F12鍵顯示控制臺)顯示結果如下:
下面看看直接定義對象
將以上代碼復制到HTML文件<script></script>標簽之間,保存并在瀏覽器里打開,顯示結果如下:
五、運算符
JavaScript常用的運算符有算術運算符、比較運算符和邏輯運算符
注意自增和自減運算符,如果運算符在變量前面則先執行自增(自減)運算,再將結果賦給x
注意:TRUE、FALSE表示真、假,用于條件判斷,例如:if語句(見本文后面部分)。運算符的優先級為:算術運算符最高,比較運算符其次,邏輯運算符最低,可以通過小括號改變運算優先級。
六、函數
為了讓代碼能重復使用,把實現某一功能的代碼寫在一段代碼塊內(以{開頭,}結尾),這段代碼就叫函數,函數的定義如下:
function 函數名(參數1,參數2,……){
實現函數功能的代碼
……
}
舉個例子,編寫一個實現兩個數相加的函數,代碼塊如下:
將以上代碼復制到HTML頁面中的<script></script>之間,保存并在瀏覽器中打開,顯示結果如下:
函數的定義以function開頭,后面跟一個空格,然后是函數名,函數名遵循變量的命名方式,函數名后面是括號,括號內是函數的參數,可以沒有參數,也可以有多個參數(多個參數之間用逗號隔開),如果需要返回計算結果,使用return語句返回(無需返回結果的話就不需要使用return語句)。
七、控制語句
1、條件判斷
顧名思義,條件判斷就是判斷某一條件是否成立,然后再根據條件結果執行相應代碼。常用的條件判斷語句為if語句,有三種常用形式:if、if else、if else if else,如下所示:
以上代碼運行結果如下:
2、循環
循環就是讓一段代碼反復執行,直到不滿足循環條件而退出,常用的循環結構有三種for循環、while循環和do while循環,先看看for循環
for(語句1;語句2;語句3){
反復執行的代碼
}
舉個例子:
for (var i=0; i<5; i++){
console.log(i);
}
上面的例子在瀏覽器控制臺顯示如下:
0
1
2
3
4
上面的for循環語句1為var i=0;定義循環初始變量i并賦值0;循環語句2為i<5;是循環運行判斷語句,判斷當前循環變量i是否小于5;語句3是循環內的代碼塊執行完后執行的語句,即循環內代碼塊執行完后i的值加1,循環執行完5次后i的值為5(第1次,i=0),判斷i<5時不成立,所以循環不會執行第6次。循環內的代碼還可以是另一個循環,從而構成多重循環,以前面那個二維數組為例,看看二重循環的簡單應用
運行結果如下:依次在控制臺輸出a[0][0]至a[8][7]的值
可不可以跳過循環?答案是可以,你可以使用break語句或continue語句來跳過循環,看下面的例子:
上面的continue語句表示不執行continue語句后面的語句,直接執行循環中的語句3,即i++,運行結果如下:
八、簡單的類
類是面向對象程序設計語言最重要的一個功能,但是,很遺憾,JavaScript對類的支持不是很友好,我們需要自己實現類的相關功能。下面以一個簡單的動物類為例簡單介紹一下JavaScript的類實現(限于篇幅不能詳細講解),繼承關系如下圖所示:
假設動物有腿、翅膀、尾巴、喜歡的食物等屬性,有行走、飛翔,顯示喜歡食物等方法,先看看動物類的定義
很簡單,注意fly和walk方法,它們又調用了子類的方法,下面看看如何實現子類繼承父類的功能
是通過原型來實現繼承,這種方法不是很好,但很簡單,下面再看看子類的定義
定義了兩個子類Cat和Bird,通過ExtendObj()函數實現繼承,將上述代碼復制到HTML頁面內的<script></ script >標簽之間并保存,打開網頁將在控制臺顯示如下結果:
好了,終于將JavaScript基礎知識介紹完了,接下來的文章將給大家介紹HTML5標準的Canvas基礎知識,感謝你能堅持到最后,下次再見。
上有很多有助于學習CSS的游戲,本文收集了一些非常實用的免費CSS游戲,希望這些游戲可以幫助你再次體驗CSS的樂趣!
作者 | Andreas Müller
譯者 | 彎月,責編 | 郭芮
出品 | CSDN(ID:CSDNnews)
以下為譯文:
我必須承認,我的記性不是很好。特別是我記不住CSS,例如Flexbox布局等。flex容器的屬性justify-content可以有12種以上的不同值,其中許多可以與關鍵字safe或unsafe組合。詳細說明可以參照這篇文章《CSS技巧:flexbox的完整指南》(https://css-tricks.com/snippets/css/a-guide-to-flexbox/),這個頁面只有兩列,高度卻超過了2萬像素,雖然文章題目表明這是一篇完整的指南,但實際上文中并沒有覆蓋到所有內容。
最近,我在偶然間發現了一款塔防式的flexbox教學游戲,這款游戲真的是……
等等,你說什么?
你沒聽錯,事實證明,網上的確有很多有助于學習CSS的游戲。我收集了一些非常實用的免費CSS游戲,希望這些游戲也可以幫助你再次體驗CSS的樂趣!
Flexbox Defense
上述我提到的就是這款游戲。它涵蓋了flex的屬性align-items、justify-content、flex-direction、align-self和order,游戲本身總共有12關。特別是最后4關非常有趣,而且難度也很高。
游戲地址:http://www.flexboxdefense.com
代碼庫:https://github.com/channingallen/tower-defense
作者:Channing Allen
Flexbox Froggy
這也是一款涉及Flexbox的游戲,它涵蓋的flex屬性更多:align-items、justify-content、align-content、flex-direction、align-self、flex-wrap和flex-flow,而且游戲總共有24關,如果你打通關了,別忘了告訴我啊。
游戲地址:https://flexboxfroggy.com
代碼庫:https://github.com/thomaspark/flexboxfroggy
作者:Codepip
Grid Garden
這款游戲總共有28關,你可以從中學習CSS網格布局。它涵蓋了以下網格屬性:grid-column-start、grid-column-end、grid-column、grid-row-start、grid-row-end、grid-row、grid-area、order、grid-template-columns、grid-template-rows以及grid-template。
游戲地址:https://cssgridgarden.com
代碼庫:https://github.com/thomaspark/gridgarden
作者:Codepip
CSS Diner
這是一款有關各種CSS選擇器的小游戲,總共有32關,打通關后你就可以自詡為CSS選擇器專家了,而且你會越玩越餓。
游戲地址:http://flukeout.github.io
代碼庫:https://github.com/flukeout/css-diner
作者:Luke Pacholski
Unfold
這不完全是一款游戲,更像是一個有關CSS 3D變換的交互式演示。你可能會覺得無聊,但請相信我,游戲里面的動畫非常燃,而且你肯定會覺得純CSS不可能做出這樣的效果。
游戲地址:https://rupl.github.io/unfold
代碼庫:https://github.com/rupl/unfold
作者:Chris Ruppel
Roadmap
你需要一定的技巧和速度才能打通關這款游戲,但游戲本身是只用CSS和HTML制作的。它并非直接地講解了CSS,而且通過研究源代碼學習了很多有關clip-path、transform和帶有@keyframes的動畫知識!請在下方留言,告訴我們你總共嘗試了幾次才通關,我試了8次!
游戲地址:http://victordarras.fr/cssgame
作者:Victor Darras
Carnival
你需要在8秒內擊中所有目標!這是一款很不錯的CSS小游戲,使用了復選框和CSS動畫。
游戲地址:https://codepen.io/una/pen/NxZaNr
作者:Una Kravets
Tic-Tac-Toe (井字棋游戲)
這是一款經典的小游戲。這款純CSS的井字棋游戲只有2關,也使用了復選框和CSS動畫。
游戲地址:https://codepen.io/alvaromontoro/pen/BexWOw
作者:Alvaro Montoro
Flexbox Zombies
這款游戲帶有故事情節,你可以從中學習如何使用Flexbox和弩來打僵尸。這款游戲需要注冊。
游戲地址:https://mastery.games/p/flexbox-zombies
價格:179美元
作者:Dave Geddes
Service Workies
在這款冒險游戲中,你可以學習如何避免PWA的陷阱。你可以提高自己的技術力,并與游戲中的角色一起成長。也許你可以試著殺死在可憐的村子里肆虐了幾個世紀的兇猛野獸!這款游戲需要注冊。
游戲地址:https://serviceworkies.com
價格:179美元
作者:Dave Geddes
Grid Critters
在這款游戲中,你掌握CSS Grid的旅程始于這位神秘的Grid勇士。你的任務是使用強大的Grid工具來拯救外星生物,使其免于滅絕。這款游戲需要注冊。
游戲地址:https://gridcritters.com
價格:179美元
作者:Dave Geddes
總結
不論你是初學者還是專家,我都希望你能夠在玩游戲的同時又能學習一些有關CSS的知識!另外,你可以在Codepen上找到很多只用HTML和CSS創建的非常很棒的游戲。
你還知道哪些非常有趣的學習CSS的游戲?請在下方留言。
原文:https://dev.to/devmount/8-games-to-learn-css-the-fun-way-4e0f
本文為 CSDN 翻譯,轉載請注明來源出處。
【END】
*請認真填寫需求信息,我們會在24小時內與您取得聯系。