|
-- 會員 / 註冊 --
|
|
|
|
3D少兒游戲編程(原書第2版) ( 簡體 字) |
作者:〔美〕 克里斯·斯特羅姆(Chris Strom) 著 | 類別:1. -> 程式設計 -> 網路編程 -> Javascript 2. -> 遊戲 -> 遊戲程式 |
譯者: |
出版社:機械工業出版社 | 3dWoo書號: 52091 詢問書籍請說出此書號!【有庫存】 NT售價: 395 元 |
出版日:11/1/2019 |
頁數:345 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787111637691 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:歡迎來到計算機編程的王國!
我不騙你,編寫計算機程序有時候確實令人沮喪。幾乎每個禮拜我都要被各種難題逼得哭一次鼻子。但是最終你會發現,這些痛苦都是值得的!因為你可以在這個王國中做任何你想做的事情、可以在別人面前展示你驚人的成果,并且也確實可以通過編程去改變世界。
現在,捧在你手里的這本書就是一條通向計算機編程王國的絕佳之路。為什么呢?因為我相信學習編程的最佳途徑就是一個字:玩!哦當然了,書中也會有一些講述基礎知識的章節。但我向你保證:本書一定先讓你玩得開心,然后再去看兩眼基礎知識。所以我們還等什么?趕緊去看看第1章吧。里面有一些很酷的3D動畫哦!
真的很酷哦!
我是如何學習編程的(為何它對你也很重要)
我小的時候經常從計算機游戲編程的書籍中抄寫程序,這是很多年以前的事了。我買過一些除了程序代碼之外幾乎什么都沒有的書,并把里面的程序抄到我的計算機中。這往往要花費很多時間,更糟的是,最開始我甚至不知道自己在抄些什么。
不過最終我開始理解了一些東西,我開始在抄寫的程序里改來改去。先是改一些小地方,看看會帶來什么不同,然后漸漸地越改越多。最后精通了計算機程序,并開始寫一些自己的程序。
我真心希望這本書可以帶給你類似的感受。不過有一點不同:我會向你解釋清楚所做的每件事將會帶來什么結果,你不必像我小時候一樣瞎猜。
你該如何學習編程
每個人都不一樣,所以每個人的學習方法也不必相同。
我可以列舉至少三種適合跟隨本書學習的途徑:
1)從書里找出好玩的東西來玩,偶爾看兩眼基礎知識。
2)先學基礎知識,然后根據自己的理解自創好玩的東西。
3)只照抄書中的代碼(就像我小時候那樣)。
你可以選擇其中任何一種最適合你的方式。
如果你愿意以玩為主(第一種途徑),那么就從第1章開始按順序閱讀。所有標題中有“項目”兩個字的章節都是我在帶著你“玩”。在這里你的主要任務是跟我一起編寫游戲程序,或者模擬程序。基礎知識章節穿插于“項目”章節之間。如果你不確定哪一種途徑最適合自己,那就別猶豫了:以玩為主一定最適合你。我多希望自己當年就是這樣學過來的啊!
如果你認為自己是那種喜歡先打基礎,然后再一口氣搞個大工程的人(第二種途徑),那么可以先把所有標題中不含“項目”兩個字的基礎知識章節挑出來看完再說。基礎知識章節里也有很多程序可以編寫,并且有些也包含了很酷的3D圖形編程。與其他編程語言相比,JavaScript很簡單,看完本書的基礎知識章節你就可以學會八九成。不過搞懂一種編程語言,與能夠用它來做事情之間還有一道鴻溝。如何才能跨過這條溝呢?“項目”章節就是用來幫你解決這個問題的:從搞懂到會用,需要動手去實踐。
最后,如果你只想在計算機上寫代碼(第三種途徑),那就直接翻到書后附錄A。本書中所有游戲的代碼都在那里。當你偶然被問題卡住時,翻到代碼對應的“項目”章節去看一眼更深入的解釋就可以得到幫助。不用擔心,既然我小時候可以這樣學過來,你也沒問題!
無論你選擇哪種方式來學習編程,有一點必須牢記在心:要動手敲鍵盤,一行一行輸入代碼。雖然這樣做往往速度很慢,并且在敲代碼的過程中,你很可能會犯各種錯誤,但是學習本來就是一個緩慢且不斷犯錯和改正的過程。
動手敲代碼會驅使你思考正在輸入的東西有什么含義。可能你覺得先讀懂書中原理,然后再把代碼復制粘貼到電腦中試一試也同樣能學會編程。但請你相信我,這樣做百分之百會失敗。那些已經在工作中編寫了50年程序的人,也不會通過復制粘貼代碼來學習新知識。在敲代碼的過程中花時間去思考,遠比早早把事情做完更重要。
而且,你知道嗎?不斷犯錯、不斷改正出錯的代碼本就是編程的一部分。所以大膽犯錯吧!盡管有時你會因此而苦惱、不開心,但是一切都是值得的。
你看下面這是什么?我們找到了這本書中的第一個“重要提示”!在這本書里,特別重要的內容都會以這種形式出現。建議你不要忽略它們,因為在探索本書的過程中,這些重要提示可以幫你渡過難關。
堅持動手敲代碼
那些編程很棒的人永遠自己敲代碼,他們從不復制粘貼。最重要的不是編得快,而是編得好。一邊敲代碼一邊思考,理解你正在做什么最重要。所以動手敲代碼吧!
還有一件事,當你卡在了什么地方時,別擔心,你總能獲得幫助!
獲得幫助
每一名程序員都需要幫助。如果你剛開始編程序,那你一定需要幫助。但即便你已經編了50年程序,你仍然會需要幫助。尋求幫助的兩個基本原則是:
1)先開動腦筋自己想,盡量自己找到問題的答案;
2)實在需要別人幫忙時,勇敢地說出自己的疑問。
對于程序員來說,精通一種編程語言并不是最重要的技能,解決問題的能力才是。因為即便你知道一種編程語言里的每一個細節,也不能保證編寫出來的程序百分之百沒問題。你總會遇到問題,遇到很多很多的問題,所以盡量試著先依靠自己來解決。即便最終沒能自己將問題搞定,但你解決問題的能力一定會有所提高。
說到解決問題,我將在第2章專門教你一些技巧,幫助你更好地解決問題。這里包括人們通常都容易犯的一些錯誤,以及如何借助代碼編輯器和瀏覽器來排查錯誤。我甚至會告訴你,當一切都亂套時,如何將程序恢復到出錯之前的樣子。
千萬別跳過第2章!
解決問題的能力是如此重要,所以一定不要跳過第2章。不管你打算采用哪一種順序來學習編程,都要盡早掌握第2章的內容。如果你跳過第2章,可能在剛開始時一切都還好。但是這就像滑雪不踩滑板,開車不系安全帶一樣,當問題來臨時你才會發現它們的重要性。
如果你沒能自己解決問題,完全沒有關系,我很樂意幫忙。本書有自己的網站以及自己的論壇。你可以在網站上找到書中的全部代碼,也可以在論壇里提出你的問題,我將在24小時之內回答問題。提問時,一定告訴我你已經嘗試了用哪些方法來解決問題,不然這將是我第一個要問你的事情。
總之,我希望你一切順利。遇到任何問題時,到我們的論壇上去提問就好。
閱讀本書時,你需要些什么
只需要一臺不太舊的電腦,以及谷歌Chrome瀏覽器。
我并不能保證所有瀏覽器都能顯示本書中那些炫酷的3D物體,但至少能保證谷歌Chrome瀏覽器可以。此外,書中的個別練習程序會依賴谷歌Chrome瀏覽器的一些功能。所以請在你的電腦上安裝谷歌Chrome瀏覽器。
至于電腦,只要是最近5年內購買的就可以勝任書中的所有程序。萬一還不放心,可以訪問Get WebGL網站。如果網站說你的計算機不行,那你就只好再去找一臺更新一點的了。
JavaScript是什么
世界上有數不清的編程語言,很多人總愛為了哪一種才是最好的而爭吵不休。但事實上,每種語言都有自己的必殺技,誰也不能完全戰勝誰。
本書中將使用JavaScript編程語言,主要因為可以方便地在瀏覽器中直接運行它的程序。JavaScript是唯一一種所有瀏覽器都支持的編程語言,這意味著你不僅可以用它來編寫在本書中學到的游戲程序,而且還能編寫出你平時看到的那些網站。
第2版中的新東西
其實上一版已經很棒了,但是有人說那本書的內容安排有些不均衡。說實話,我并沒感覺到,我覺得第1版已經接近完美了。
好吧,得了吧Chris,若真那么完美,你為何還要寫第2版?
嗯,這么說吧,首先自從本書上一版出版之后,很多技術都發生了變化。編程的世界從未停止過前進的步伐。雖然大多數新東西對你學習編程并沒有幫助,但是在眾多新技術當中,總有一些東西確實無法忽視。在本書上一版出版的三年之后,我發現已經有足夠的技術革新能夠讓第2版書變得更好。
除了新技術之外,促使我編寫第2版的另一個原因是我自身的巨大改變。編程人員永遠不能停止學習。雖然我已經編了15年程序,但仍然在盡自己所能學習各種新知識。我不停地努力學習,是為了讓自己成為更好的編程人員、更好的老師以及更好的圖書作者。
本書這一版與第1版有很大不同。刪除了一些章節,補充了一些全新的內容。所有保留的章節和代碼基本上都重新編寫了。新添加的內容還帶來了不少很炫酷的新特性。例如第5章中的飛行控制器,以及火焰特效等。不過,追加新特性并不是重寫上一版書的主要目的。
主要目的還是使讀者感到更有趣、更容易,最終幫助讀者成為真正的編程人員。
所以到底有些什么新東西呢?可以這么說,除了極個別已經接近完美的內容之外,第2版幾乎處處都是新的。
有什么是這本書做不到的
你以為我會說:只有想不到,沒有做不到?不對,讓我來澄清一下:
我們并不打算通過這本書成為JavaScript專家。
此外,我們也不打算通過這本書成為3D游戲編程專家。
這本書將教給你很多新知識,但距離編寫新一代臉書(Facebook)還有一段距離。當然,也不足以編寫一個新的馬里奧賽車游戲。因為像這樣的大型作品需要幾百名編程人員花費幾百小時通力合作才能完成,并且還需要用到很多本書無法涉及的高級秘技。
不過通過這本書,你還是可以學到JavaScript最核心的一部分知識,以及許多3D圖形知識。利用它們,我們已經可以做很多很酷的事情。更重要的是,我們會為將來參與編寫更大型更炫酷的項目做好準備。
讓我們開始吧
介紹就到這里,讓我們趕緊開始編程吧! |
內容簡介:你知道什么比玩游戲更好嗎?自己編程!制作自己的在線游戲,即使你完全是一個初學者,只要你了解了一些JavaScript編程技巧,就可以做出炫酷的3D游戲。本書利用新的編程特性和新的效果,使游戲編程更容易,游戲更炫酷。當你完成時,你會驚訝你所創造的東西。
學習的最佳方式是玩得開心,本書將帶你去玩,玩游戲,玩代碼,玩編程!豐富的游戲編程實例和新穎的3D效果,使你的游戲更有趣。想要一個紅色甜甜圈嗎?你可以做出幾百個,像瘋了一樣旋轉。想要創建一個星域嗎?造成百上千顆星星,把它們做成紅色、綠色或藍色。爆炸?煙花?行星?這取決于你。
作者專門為本書創建了一個代碼編輯器,使用它你可以直接在Web瀏覽器中進行編程,你會立馬看到你的工作和想象結果——就在你剛剛鍵入的代碼旁邊!在此過程中,你將獲得大量的編程知識,快速進入狀態,輕松入門3D游戲編程。
無論你想做什么,這本書都會支持你。最棒的是,你可以創造出很棒的游戲并說:“這是我做的!” |
目錄:贊譽 譯者序 前言 致謝 第1章 項目:創建簡單形體 / 1 1.1 使用3DE代碼編輯器來編程 / 2 1.2 在JavaScript中創建形體 / 5 1.3 創建Sphere / 5 1.3.1 大小:SphereGeometry(100) / 6 1.3.2 光滑度:SphereGeometry(100, 20, 15) / 6 1.4 用Cube形體來創建立體方塊 / 8 1.5 使用Cylinder創建多種形體 / 11 1.5.1 大小:CylinderGeometry(20, 20, 100) / 11 1.5.2 金字塔:CylinderGeometry(1, 100, 100, 4) / 13 1.6 用Plane創建平面 / 14 1.7 用Torus創建甜甜圈 / 15 1.7.1 大小:TorusGeometry(100, 25) / 16 1.7.2 光滑度:TorusGeometry(100, 25, 8, 25) / 16 1.7.3 吃掉甜甜圈:TorusGeometry(100, 25, 8, 25, 3.14) / 17 1.8 讓形體們動起來 / 17 1.9 完整代碼 / 18 1.10 下一步我們做什么 / 19 第2章 調試:出錯時如何修復代碼 / 20 2.1 讓我們開始吧 / 21 2.2 利用3DE來調試:紅色的叉 / 22 2.3 被3DE懷疑的代碼:黃色的三角 / 23 2.4 打開和關閉JavaScript控制臺 / 24 2.5 利用JavaScript控制臺來調試 / 24 2.6 3D程序中的常見錯誤 / 27 2.6.1 可能會遇到的錯誤1:Not a Constructor / 28 2.6.2 可能會遇到的錯誤2:Three Is Not Defined / 28 2.6.3 可能會遇到的錯誤3:Not a Function / 29 2.7 當3DE代碼編輯器卡住時該如何恢復 / 30 2.8 下一步我們做什么 / 31 第3章 項目:創建游戲角色 / 32 3.1 讓我們開始吧 / 33 3.2 形體的光滑度 / 33 3.3 把零件拼成整體 / 35 3.4 把整體拆成零件 / 36 3.5 添加能走路的腳 / 38 3.6 挑戰一下:設計自己的游戲角色 / 40 3.7 讓角色翻跟頭 / 40 3.8 完整代碼 / 43 3.9 下一步我們做什么 / 43 第4章 項目:移動游戲角色 / 44 4.1 讓我們開始吧 / 45 4.2 利用鍵盤事件創建交互系統 / 46 4.3 根據鍵盤事件控制游戲角色移動 / 48 4.4 挑戰一下:開始和停止動畫 / 49 4.5 添加樹木的函數 / 51 4.6 讓攝像機跟隨游戲角色 / 53 4.7 完整代碼 / 57 4.8 下一步我們做什么 / 57 第5章 函數:一遍又一遍地執行 / 58 5.1 讓我們開始吧 / 59 5.2 基本函數 / 60 5.3 返回數值的函數 / 62 5.4 使用函數 / 65 5.5 搞壞函數 / 67 5.6 進階代碼1:隨機顏色 / 69 5.7 進階代碼2:飛行控制 / 71 5.8 完整代碼 / 73 5.9 下一步我們做什么 / 73 第6章 項目:擺臂和邁步 / 74 6.1 讓我們開始吧 / 75 6.2 移動手臂 / 75 6.3 讓雙手和雙腳一起擺動 / 79 6.4 邊走邊動作 / 80 6.5 完整代碼 / 84 6.6 下一步我們做什么 / 84 第7章 深入理解JavaScript基礎知識 / 85 7.1 讓我們開始吧 / 86 7.2 在JavaScript中描述事物 / 87 7.2.1 var關鍵字 / 88 7.2.2 JavaScript變量的值 / 89 7.2.3 代碼和注釋 / 89 7.3 JavaScript中的數字、文字以及其他東西 / 90 7.3.1 數字 / 90 7.3.2 幾何 / 93 7.3.3 字符串 / 94 7.3.4 布爾值 / 96 7.3.5 無 / 98 7.3.6 數據列表 / 98 7.3.7 映射表 / 100 7.4 控制結構 / 101 7.4.1 當某件事為真時才執行的代碼 / 101 7.4.2 循環 / 103 7.5 下一步我們做什么 / 105 第8章 項目:讓游戲角色轉身 / 106 8.1 讓我們開始吧 / 107 8.2 面向特定的方向 / 107 8.3 拆開看看 / 109 8.3.1 為什么是rotation.y / 109 8.3.2 別忘記avatar.rotation / 110 8.3.3 停止走動時該面對哪個方向 / 110 8.4 用動畫來轉身 / 111 8.5 完整代碼 / 112 8.6 下一步我們做什么 / 113 第9章 那些自動生成的代碼 / 114 9.1 讓我們開始吧 / 115 9.2 初識HTML / 115 9.3 設置3D場景 / 117 9.4 使用攝像機拍攝場景 / 118 9.5 使用渲染器繪制場景 / 119 9.6 探索不同類型的攝像機 / 120 9.7 下一步我們做什么 / 122 第10章 項目:碰撞 / 123 10.1 讓我們開始吧 / 124 10.2 射線和交點 / 125 10.3 完整代碼 / 129 10.4 下一步我們做什么 / 129 第11章 水果狩獵 / 130 11.1 讓我們開始吧 / 131 11.2 記分牌 / 132 11.3 讓樹有點擺動 / 133 11.4 跳躍得分 / 135 11.5 讓我們的游戲更好 / 138 11.5.1 添加動畫和聲音 / 138 11.5.2 我們還可以添加什么 / 140 11.6 完整代碼 / 141 11.7 下一步我們做什么 / 141 第12章 使用燈光和材質 / 142 12.1 讓我們開始吧 / 143 12.2 發光 / 145 12.3 環境光 / 146 12.4 點光源 / 146 12.5 陰影 / 148 12.6 聚光燈和陽光 / 150 12.7 紋理 / 152 12.8 進一步探索 / 153 12.8.1 獲得更好的視野 / 153 12.8.2 最后的調整 / 154 12.9 完整代碼 / 155 12.10 下一步我們做什么 / 155 第13章 項目:月相 / 156 13.1 讓我們開始吧 / 157 13.2 太陽在中心 / 158 13.3 游戲與模擬邏輯 / 159 13.4 本地坐標 / 162 13.5 多攝像機動作 / 165 13.6 進階代碼1:星星 / 167 13.7 進階代碼2:飛行控制 / 168 13.8 了解月相 / 169 13.9 不完美但偉大的模擬 / 172 13.10 完整代碼 / 173 13.11 下一步我們做什么 / 173 第14章 項目:紫色水果怪物游戲 / 174 14.1 讓我們開始吧 / 175 14.1.1 準備物理程序庫 / 175 14.1.2 準備2D場景 / 177 14.2 構思游戲 / 177 14.3 添加游戲場地 / 179 14.4 添加簡單角色 / 180 14.4.1 重置位置 / 181 14.4.2 主動物理模擬 / 183 14.4.3 運動控制 / 183 14.5 添加評分 / 184 14.6 游戲玩法 / 185 14.6.1 發射水果 / 185 14.6.2 吃水果和顯示分數 / 187 14.6.3 游戲結束 / 188 14.7 改進 / 191 14.8 完整代碼 / 191 14.9 下一步我們做什么 / 191 第15章 傾斜板子游戲 / 192 15.1 讓我們開始吧 / 193 15.1.1 重力和其他設置 / 193 15.1.2 燈光、相機、陰影 / 194 15.2 構思游戲 / 195 15.2.1 添加燈光 / 195 15.2.2 添加游戲球 / 196 15.2.3 添加游戲板 / 197 15.2.4 重置游戲 / 198 15.2.5 添加游戲控制 / 200 15.2.6 添加游戲目標 / 201 15.2.7 就這樣了 / 204 15.3 進階代碼1:添加背景 / 205 15.4 進階代碼2:制造火 / 205 15.5 挑戰 / 208 15.6 完整代碼 / 208 15.7 下一步我們做什么 / 208 第16章 了解JavaScript對象 / 209 16.1 讓我們開始吧 / 210 16.2 簡單的對象 / 211 16.3 屬性和方法 / 214 16.4 復制對象 / 214 16.5 構建新對象 / 216 16.6 JavaScript中最糟糕的事情:失去了這個 / 218 16.7 挑戰 / 220 16.8 完整代碼 / 220 16.9 下一步我們做什么 / 220 第17章 項目:預備,穩定,發射 / 221 17.1 讓我們開始吧 / 223 17.2 發射器 / 223 17.3 記分牌 / 228 17.4 籃子和目標 / 228 17.5 風 / 232 17.6 完整代碼 / 235 17.7 下一步我們做什么 / 235 第18章 項目:雙人游戲 / 236 18.1 讓我們開始吧 / 237 18.2 兩個發射器 / 238 18.3 兩個記分牌 / 243 18.4 讓籃子更新正確的記分牌 / 246 18.5 共享鍵盤 / 247 18.6 游戲重新開始 / 249 18.7 完整代碼 / 251 18.8 下一步我們做什么 / 251 第19章 項目:河道漂流 / 252 19.1 讓我們開始吧 / 253 19.2 推拉形狀 / 255 19.3 崎嶇的地形 / 259 19.4 挖一條河 / 261 19.5 記分牌 / 266 19.6 建造木筏 / 266 19.7 重置游戲 / 268 19.8 鍵盤控制 / 269 19.9 終點線 / 270 19.10 進階代碼:保持分數 / 272 19.10.1 基于時間的評分 / 273 19.10.2 蓄能點數 / 274 19.11 完整代碼 / 278 19.12 下一步我們做什么 / 278 第20章 將代碼放到網上 / 280 20.1 無所不能的瀏覽器 / 281 20.2 免費網站 / 284 20.3 將代碼放在另一個站點上 / 285 20.4 完整代碼 / 289 20.5 下一步我們做什么 / 289 附錄A 項目代碼 / 290 附錄B JavaScript程序庫 / 350 參考文獻 / 356 |
序: |
|