|
-- 會員 / 註冊 --
|
|
|
|
Cocos2d-x游戲開發之旅 ( 簡體 字) |
作者:鐘迪龍 | 類別:1. -> 程式設計 -> 手機程式 -> Cocos2d |
譯者: |
出版社:電子工業出版社 | 3dWoo書號: 36432 詢問書籍請說出此書號!【缺書】 NT售價: 345 元 |
出版日:8/1/2013 |
頁數:488 |
光碟數:1 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787121211362 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:游戲引擎 我接觸的第一個“游戲引擎”是自己搭建的一套簡單的框架,并且在大半年的時間內用它來開發手機游戲,那時我還不知道世界上有游戲引擎這回事。在此之后,我研究的第一款游戲引擎是LGame,選擇它的唯一理由——它是中國人開發的。后來由于這款游戲引擎是個人開發的,并且既沒有完善的文檔也沒有后續的維護,同時公司項目處于忙碌期,所以放棄了學習。 Cocos2d-x的迅速發展 后來,Cocos2d-x引擎偷偷走進了我的生活,它入門簡單,實例豐富,就算不用于開發游戲,只是拿來學習,也是非常好的學習材料,因為它是開源的。 我剛接觸Cocos2d-x時,市場上還沒有關于Cocos2d-x的書籍,網絡上關于它的教程也很少。慢慢地,Cocos2d-x一個又一個的新版本發布,分享Cocos2d-x學習心得的人也越來越多。可以說,Cocos2d-x已經到了“家喻戶曉”的境界。學習Cocos2d-x的開發者數量迅速增長,專門針對Cocos2d-x的招聘職位也逐漸增多。雖然我沒能在Cocos2d-x的發布之初開始接觸研究,但我十分有幸能夠看到它逐漸發展壯大的過程。 無緣的相遇 當我還在研究LGame引擎時,在我的博客上寫了十幾篇的系列教程,那時出版社的編輯問我是否有意愿出版書籍。我當時十分驚訝,我以為我這輩子和寫書不會有任何關系,但是由于一些原因,出版的事擱淺了。 再續前緣 后來我開始研究Cocos2d-x引擎,依舊在博客上發表學習心得。陸陸續續地發表了30多篇文章。當時公司的開發任務開始減少。俗話說,人在閑的時候特別愛想事情。我就是在這樣的狀態下,經過好朋友的多次鼓勵,再也按耐不住對出版書籍的向往,決定寫一本凝結了這幾年心血的專業圖書。 發展高峰 在確定開始寫作本書時,市場上只有一本關于Cocos2d-x的書籍。而在本書剛編寫第1章內容時,李華明的Cocos2d-x書籍橫空出世。這無疑給我帶來了很大的挑戰,我忍不住買了一本回來,大致瀏覽了這本書。這是為了避免我所構思的內容和市面上的書籍有所雷同,我希望讀者買的每一本書籍都是獨一無二的。 相關圖書的出現,說明Cocos2d-x的發展達到了一個高峰,這得益于Cocos2d-x開發團隊的熱情和不懈的努力。作為Cocos2d-x的使用者之一,我也很希望它能越來越好。 本書主要內容 本書共17章,如果讀者沒有Cocos2d-x的使用經驗,建議從第1章開始閱讀。對于有Cocos2d-x的基礎的讀者,我為大家列出了各個章節的主要內容,供讀者參考。 第1章:簡單介紹本書寫作理念、Cocos2d-x環境搭建和推薦的一些學習資源。 第2∼3章:介紹Cocos2d-x的最基本知識、基本結構。 第4∼5章:詳細介紹部分控件、動作以及屏幕觸摸事件的使用,通過一個簡單的游戲實例將前面章節的內容串聯起來。 第6∼9章:對Cocos2d-x更高階的內容進行介紹,包括渲染效率的提高、動畫、TexturePacker圖片打包、Tiled地圖游戲實例、定時器、函數回調、內存管理、數據保存、Csv文件讀取。 第10∼11章:介紹Lua和C++通信的知識、有限狀態機的基礎知識和應用,同時介紹有限狀態機的輔助工具SMC的使用和游戲實例。 第13章:分享我自己開發的基于Cocos2d-x的自定義UI模塊,詳細介紹自定義UI模塊的設計思路和實現過程。 第14∼16章:詳細講解本書最后一個游戲實例《卡牌塔防》,該游戲使用了本書介紹的大部分知識。作為本書的最后一個實例,用3章的內容詳細地介紹了游戲的思路、框架搭建、功能實現的過程。 第17章:分享了我曾經遇到的錯誤和解決方案,同時給讀者帶來了一個驚喜,至于是什么驚喜,請大家仔細閱讀17章的內容。 致謝 我曾經在個人博客里說過,真希望哪一天我也能在自己書籍的前言里,寫上這么一句話:謹以此書獻給我可愛的家人、朋友。沒有想到,這一天真的來了。 在這里,我首先想感謝我的家人,家人給我的不僅僅是支持,而是一個完整的開心的家庭。 然后我不得不感謝的,就是本書的旁白丁小若,感謝她愿意授予我使用她名字的權限,感謝她給予我幽默的靈感。 最后但并非最不重要,感謝我的小師姐,在我鼓不起勇氣寫書時,是她“怒斥”了我,告訴我機不可失,時不再來。 謹以此書獻給我可愛的家人和朋友們。 由于水平有限,書中難免有錯誤之處,希望讀者朋友多指正。也歡迎大家到我的博客就書中的問題與我互動。
鐘迪龍 |
內容簡介:本書主要講解了Cocos2d-x游戲圖形引擎的使用方法,對常用的API使用方式以及重要的函數進行了深入的分析,并通過詳細的游戲實例來介紹Cocos2d-x在實際開發中的應用,書中還大量穿插了在實際的手機游戲開發過程中遇到的問題以及解決方案。 |
目錄:第1章 開學典禮 / 1 1.1 出場人物介紹 / 1 1.2 入學要求——本書適合人群 / 2 1.3 這內容有點糟糕——本書風格 / 2 1.4 你需要這些技能——學Cocos2d-x需要什么知識 / 3 1.5 我們為什么要學Cocos2d-x / 4 1.6 先給我們的代碼找個溫馨的家——環境搭建 / 4 1.6.1 紫色風暴之VS2010 / 4 1.6.2 我的Cocos2d-x版本 / 5 1.6.3 看看前輩們的畢業設計——運行官方Demo / 6 1.7 廣告時間——提供一些學習資源 / 8 第2章 不離不棄的HelloWorld / 10 2.1 簡單到無法想象——直接運行HelloCpp項目 / 10 2.2 新建Cocos2d-x項目遇到的麻煩——成功新建一個HelloWorld / 12 2.2.1 創建Cocos2d-x項目 / 12 2.2.2 解決編譯報錯的方案1——直接復制源文件 / 14 2.2.3 解決編譯報錯的方案2——修改項目配置 / 17 2.3 HelloWorld,沒有想象中的簡單——簡單解析HelloWorld / 19 2.3.1 HelloWorld是如何顯示到窗口的 / 19 2.3.2 場景其實不是真正的場景 / 20 2.4 實例來了 / 23 第3章 我們來學習怎么爬行 / 29 3.1 環游世界——場景 / 29 3.2 一切的主宰——導演 / 30 3.2.1 加載第一個場景 / 30 3.2.2 簡單的切換場景 / 30 3.2.3 包含特效的切換場景 / 32 3.2.4 贈送的——推進和彈出場景 / 34 3.3 你走你的,我走我的——層 / 36 3.4 比對象還要可愛的對象——精靈來了 / 37 3.5 我得下命令——菜單 / 38 3.6 當個背包客——節點 / 40 第4章 我們來學習怎么走路 / 43 4.1 吉他獨奏《天空之城》——播放聲音 / 43 4.2 控件篇1——我最愛的九妹和按鈕事件 / 44 4.2.1 你好,九妹——可拉伸圖片 / 44 4.2.2 解決使用extensions庫時編譯報錯的問題 / 46 4.2.3 九妹和按鈕搭配 / 48 4.2.4 豐富多彩的按鈕事件 / 49 4.2.5 ?嗦一下——CCControlButton特別的小功能 / 51 4.3 控件篇2——我不是DJ之圓形音量按鈕 / 51 4.3.1 圓形音量按鈕 / 51 4.4 控件篇3——我要戰斗之血量條 / 54 4.4.1 又是一個音量控制按鈕 / 54 4.4.2 我要的血量條 / 55 4.5 動作篇1——簡簡單單的運動 / 56 4.5.1 你想去哪,你想走多遠——CCMoveTo和CCMoveBy / 56 4.5.2 我要減肥——CCScaleTo和CCScaleBy / 58 4.5.3 卡牌翻轉特效——用CCScaleTo就可以實現 / 61 4.5.4 閃亮登場——CCBlink / 62 4.6 動作講解2——更復雜的運動 / 63 4.6.1 我要你按照我的路線走——CCBezierTo和CCBezierBy / 63 4.6.2 我沒讓你停,重復動作——CCRepeatForever / 66 4.6.3 動作一起做,一邊走一邊轉一邊跳——CCSequence / 67 4.7 動作講解3——動作監聽 / 69 4.7.1 小若,到家了告訴我一聲——動作結束監聽 / 69 4.7.2 動作家族族譜 / 70 4.8 屏幕觸摸事件 / 72 4.8.1 屏幕事件初探 / 72 4.8.2 復數形式的函數——每個CCLayer都能獲取屏幕事件 / 75 4.8.3 單數形式的函數——截斷事件,一個CCLayer的壟斷 / 77 第5章 是時候跑起來了——《LittleRunner》 / 80 5.1 這是一個什么游戲 / 80 5.2 找個主角回來——創建主角精靈 / 81 5.2.1 創建篩選器 / 81 5.2.2 創建實體基類 / 82 5.2.3 創建主角類 / 83 5.2.4 創建游戲場景 / 84 5.2.5 修改游戲窗口大小 / 87 5.3 其實她不想跑——創建無限滾動地圖 / 87 5.3.1 每一幀都可以操作——scheduleUpdate初探 / 87 5.3.2 翻滾吧,地圖——地圖無限滾動 / 89 5.4 開心的時候——讓主角跳起來 / 91 5.4.1 CCControlButton的應用——創建跳躍按鈕 / 91 5.4.2 CCJumpBy的應用——給主角添加跳躍動作 / 93 5.5 金錢誘惑——加入怪物 / 95 5.5.1 怪物誕生 / 95 5.5.2 怪物巢穴——創建怪物管理器 / 97 5.5.3 貪婪的主角——怪物碰撞檢測 / 99 5.5.4 疼了就退后——增加主角受傷時的動作 / 103 5.6 監控一切——創建分數標簽、血量條等屬性對象 / 105 第6章 精靈來了第二季 / 109 6.1 一大波精靈來襲——大量精靈單獨繪制的缺陷 / 109 6.2 把相同的精靈裝上車——使用CCSpriteBatchNode優化繪制 / 110 6.2.1 一次渲染——CCSpriteBatchNode的特別之處 / 110 6.2.2 什么是紋理——CCTexture簡單解說 / 112 6.3 遇到不同的精靈怎么辦——TexturePacker工具使用 / 114 6.3.1 同一張圖片,同一個紋理 / 114 6.3.2 將多張圖片打包到一起 / 115 6.3.3 加載打包后的圖片 / 117 6.4 是動畫,不是動作——CCAnimation / 118 6.4.1 用打包前的圖片創建動畫 / 118 6.4.2 用打包后的圖片創建動畫 / 121 6.4.3 額外贈送——動畫創建輔助類 / 123 第7章 游戲實例之《跑跑跑》 / 127 7.1 更豐富的世界——使用Tiled地圖 / 127 7.1.1 世界誕生——創建跑步場景 / 127 7.1.2 Tiled地圖來了——使用Tiled Map Editor創建地圖文件 / 129 7.1.3 你報錯了嗎——Tiled Editor常見路徑錯誤 / 130 7.2 嘿,培養新人——創建新的主角 / 131 7.2.1 主角誕生——創建實體類和主角類 / 131 7.2.2 固定主角出生點——對象層的使用 / 134 7.2.3 讓主角跑——添加主角動畫 / 136 7.3 更智能的主角——添加角色控制器 / 137 7.3.1 創建控制器基類 / 137 7.3.2 帶著它就能跑——主角移動控制器 / 138 7.3.3 焦點是主角——讓地圖隨著主角滾動 / 141 7.4 更多的內容 / 144 7.4.1 讓主角上下移動——三方移動控制器 / 144 7.4.2 添加障礙物——Tiled障礙層的使用 / 148 7.4.3 添加能吃的物品以及勝利條件 / 153 第8章 用多線程做定時器?你瘋了——schedule很強大 / 158 8.1 我愛單線程——schedule介紹 / 158 8.2 每一幀都有我——scheduleUpdate和update / 158 8.3 定時器可以這么做——schedule和回調函數 / 160 8.3.1 不調用update函數,調用自己的函數 / 160 8.3.2 真正的定時器 / 162 8.4 讓一切都停下來——unSchedule / 162 8.5 觸發器可以這么做——scheduleOnce和回調函數 / 164 8.6 額外贈送,我總是很關注我暗戀的女孩——觀察者模式 / 165 8.6.1 你喜歡誰?我幫你留意——觀察者模式掃盲 / 165 8.6.2 Cocos2d-x提供的觀察者模式工具類——CCNotificationCenter / 166 8.6.3 addObserver和postNotification函數傳遞數據的區別 / 170 8.6.4 額外贈送——自己實現簡單的觀察者 / 172 第9章 野外生存訓練 / 177 9.1 師父走了,你怎么辦——學會查看官方Demo / 177 9.2 遲早都要學會——學習查看Demo源代碼 / 178 9.3 別忘了開源——學習查看Cocos2d-x源代碼 / 179 9.3.1 為什么addObserver和postNotification不能同時傳遞數據 / 179 9.4 物競天擇,沒用的就要被淘汰——retain和release / 183 9.4.1 為什么會有retain / 183 9.4.2 真正的兇手autoRelease / 183 9.4.3 看代碼實際點 / 183 9.4.4 原理來了 / 186 9.4.5 實際情況 / 187 9.4.6 倒底什么時候要retain / 187 9.5 再傳授幾招 / 188 9.5.1 在調試項目時,跟蹤并進入Cocos2d-x的源碼 / 188 9.5.2 什么?你忘了保存記憶?我們一起十年了啊——保存數據 / 189 9.6 我能擺脫編譯的噩夢——讀取Csv配置文件 / 191 9.6.1 什么是Csv文件——Csv格式文件掃盲 / 191 9.6.2 如何創建一個Csv文件 / 192 9.6.3 預熱——編寫字符串工具類 / 193 9.6.4 輔助工具——編寫文本讀取工具類 / 196 9.6.5 進入主題——編寫Csv文件讀取工具類 / 197 第10章 睡覺的時候不要吃東西——有限狀態機 / 205 10.1 花5分鐘告訴你什么是有限狀態機 / 205 10.1.1 簡單認識 / 205 10.1.2 一個很“好玩”的游戲 / 205 10.1.3 實現簡單有限狀態機的類 / 206 10.2 狀態模式之我很胖但我很強 / 209 10.2.1 什么是狀態模式 / 209 10.2.2 用狀態模式實現有限狀態機 / 211 10.3 真正的狀態機來了 / 216 10.3.1 創建狀態機類 / 216 10.3.2 被釋放的木頭類 / 218 10.4 事件驅動,你想象不到的強大 / 221 10.4.1 徹底拋棄update函數——新的狀態機類 / 221 10.4.2 更智能的狀態類 / 224 10.4.3 見證新的運作情況 / 225 第11章 我比Csv更厲害——強大的Lua / 228 11.1 讓Lua和C++牽手 / 228 11.1.1 Lua的堆棧和全局表 / 228 11.1.2 Lua和C++的第一次通信 / 228 11.2 Demo講解之Lua和C++牽手 / 229 11.2.1 引入頭文件 / 230 11.2.2 開始使用 / 231 11.2.3 執行Lua腳本 / 232 11.2.4 重置棧頂索引,將全局變量放到堆棧中 / 233 11.2.5 最后一步,C++取得字符串 / 233 11.3 簡單解析Lua的堆棧 / 234 11.4 來點高難度的,獲取Lua表結構的數據 / 235 11.4.1 什么是table / 235 11.4.2 獲取table變量 / 236 11.4.3 lua_gettable函數 / 236 11.5 C++調用Lua函數 / 239 11.6 Lua調用C++的函數 / 240 第12章 額外奉獻,狀態機代碼生成工具——SMC / 244 12.1 加快狀態機開發速度——SMC是什么 / 244 12.2 永遠都從HelloWorld開始 / 245 12.2.1 這是令牌——sm配置文件 / 245 12.2.2 化令牌為力量——使用Smc.jar將配置文件轉換為代碼 / 246 12.2.3 一勞永逸——更方便的代碼轉換方式 / 247 12.2.4 整裝待發——導入所需文件到項目中 / 247 12.2.5 最后的最后——編寫主體類 / 248 12.2.6 簡單解析原理 / 249 12.3 實例之SMC版木頭寫代碼 / 252 12.3.1 木頭的邏輯 / 252 12.3.2 編寫劇本——sm配置文件 / 253 12.3.3 主角誕生——編寫Mutou主體類 / 255 12.3.4 導演開拍——編寫觸發狀態切換的功能 / 259 第13章 自力更生——自己寫一個UI模塊 / 264 13.1 剛開始必須要輕松一下——UI模塊思路簡介 / 264 13.1.1 它能為我們做些什么——UI模塊包含的功能 / 264 13.1.2 一覽眾山小——UI模塊設計思路圖 / 265 13.2 XML文件和屬性模塊 / 266 13.2.1 一切的源頭——UI的XML配置文件 / 266 13.2.2 知識補充1——TinyXML介紹 / 268 13.2.3 知識補充2——TinyXML的HelloWorld / 268 13.2.4 知識補充3——用TinyXML讀取UI模塊的XML配置文件 / 272 13.2.5 封裝,我們要記住封裝——XML標簽節點對象 / 276 13.2.6 我負責保存,你負責修飾——XML標簽節點屬性設置器 / 283 13.3 嘗點甜頭——創建控件 / 286 13.4 主角來了——組件 / 288 13.4.1 控件基類——MMBase / 289 13.4.2 普通窗口控件——MMNormalWin / 290 13.4.3 標簽控件——MMLabel / 291 13.4.4 甜點來了——測試新的控件類 / 293 13.5 控件管理模塊 / 296 13.5.1 我是老大——MMWinManager控件管理器 / 296 13.5.2 我是先鋒——MMWinSystem控件系統 / 300 13.5.3 我是前臺——MMWinDesktop控件頂層桌面 / 304 13.6 控件工廠 / 305 13.6.1 抽象工廠之MMWinBaseFactory / 305 13.6.2 控件工廠之MMWinFactory / 306 13.6.3 裝飾工廠之MMWinProperityFactory / 307 13.6.4 最后的事情——運行項目 / 310 13.7 更完整的UI模塊 / 311 第14章 傾情奉獻——因為偷懶而誕生的《卡牌塔防》游戲(上篇) / 313 14.1 開篇——最后的游戲實例 / 313 14.1.1 為什么是塔防游戲 / 313 14.1.2 《卡牌塔防》功能簡介——我們能學到哪些知識 / 313 14.2 啟程——關卡編輯器 / 315 14.2.1 一個英雄一個坑——炮臺坐標編輯器 / 315 14.2.2 按照我給的路徑走——怪物坐標編輯器 / 335 14.2.3 添加更多方便的操作 / 343 14.3 磨刀不誤砍柴工——預備知識 / 350 14.3.1 導演的助手——場景管理器 / 350 14.3.2 數據讀取模塊 / 353 14.3.3 全局參數 / 354 14.3.4 請說英文好嗎?不,說中文——I18N工具類 / 356 14.3.5 導入UI模塊和TinyXml模塊 / 360 第15章 傾情奉獻——因為偷懶而誕生的《卡牌塔防》游戲(下篇) / 363 15.1 英雄誕生 / 363 15.1.1 創建關卡場景 / 363 15.1.2 地圖層 / 364 15.1.3 實體基類 / 367 15.1.4 英雄管理器1——炮臺對象 / 370 15.1.5 英雄管理器2——英雄對象 / 375 15.1.6 英雄管理器3——炮臺和英雄的關系 / 379 15.1.7 英雄管理器4——加入創建英雄的功能 / 380 15.2 怪物來襲 / 382 15.2.1 怪物管理器 / 382 15.2.2 移動控制器1——控制器基類 / 388 15.2.3 移動控制器2——移動控制器基類 / 389 15.2.4 移動控制器3——按指定坐標列表移動 / 391 15.2.5 怪物來了 / 395 15.3 英雄進攻 / 399 15.3.1 英雄的一次攻擊流程 / 399 15.3.2 在Hero里獲取怪物列表 / 400 15.3.3 查找并鎖定攻擊目標 / 403 15.3.4 英雄的攻擊 / 404 15.3.5 子彈管理器1——子彈類 / 407 15.3.6 子彈管理器2——子彈管理器 / 410 15.3.7 子彈管理器3——英雄開始發射子彈 / 414 15.4 華麗的裝飾 / 415 15.4.1 怪物血量條 / 415 15.4.2 炮臺操作按鈕——英雄華麗升級 / 419 15.4.3 怪物起點和終點魔法臺 / 423 第16章 傾情奉獻——因為偷懶而誕生的《卡牌塔防》游戲(終結篇) / 427 16.1 關卡信息UI / 427 16.1.1 利用自定義UI模塊制作關卡信息面板 / 427 16.1.2 關卡信息數據刷新——CCNotificationCenter的應用 / 432 16.1.3 怪物數量刷新 / 437 16.1.4 怪物安息——怪物死亡后塔魂數量刷新 / 438 16.1.5 堡壘安息——怪物到達堡壘后扣除魔力值 / 439 16.1.6 打怪升級——英雄升級扣除塔魂 / 443 16.2 謝幕 / 444 16.2.1 關卡選擇——根據關卡數加載游戲 / 445 16.2.2 勝利條件判斷 / 448 16.2.3 失敗條件判斷 / 452 16.3 移植游戲到Android平臺 / 452 16.3.1 傻瓜式的Android環境搭建1——準備工作 / 453 16.3.2 傻瓜式的Android環境搭建2——解壓和安裝 / 454 16.3.3 傻瓜式的Android環境搭建3——測試一下吧 / 457 16.3.4 不需要Cygwin——生成并導入Android項目 / 458 16.3.5 怎么編譯C++文件——創建Builder / 459 16.3.6 開始編譯——Android.mk文件 / 464 第17章 額外的一些東西 / 468 17.1 常見錯誤及解決方案 / 468 17.1.1 調用可變參數函數時,總是莫名報錯 / 468 17.1.2 無法解析的外部符號(或命令) / 468 17.1.3 Android移植編譯報錯——undefined reference to / 469 17.1.4 使用了TinyXML后,移植到Android中運行報錯 / 469 17.1.5 CCLabelTTF變成了一個黑塊——多線程引起的Bug / 470 17.2 最后的內容 / 470 17.2.1 不管游戲多快,一幀就是一幀,我們能做很多事情 / 470 17.2.2 給讀者的驚喜——丁小若寄語 / 471 17.2.3 請提供你的意見以及你發現的Bug / 471 |
序: |
|