手機跨界開發高手: Cocos2d-x C++縱橫Apple & Android | 誠品線上

手機跨界開發高手: Cocos2d-x C++縱橫Apple & Android

作者 關東升
出版社 佳魁資訊股份有限公司
商品描述 手機跨界開發高手: Cocos2d-x C++縱橫Apple & Android:Cocos2d-x自發佈第一個版本以來,如今使用者已遍佈全球,數不清的採用Cocos引擎開發的遊戲橫掃各個暢銷榜單。Cocos2

內容簡介

內容簡介 Cocos2d-x 自發佈第一個版本以來,如今使用者已遍佈全球,數不清的採用Cocos 引擎開發的遊戲橫掃各個暢銷榜單。Cocos2d-x 遊戲引擎的優勢在於「在一個平台下開發,多平台發佈」。許多知名的開發團隊都已使用Cocos2d-x 開發遊戲。本書使用Cocos2d-x 的C++ 語言API,並包含100 多個完整的案例專案原始程式碼,開發者可以快速進行實際專案開發,輕鬆體驗『做中學』。

作者介紹

作者介紹 ■作者簡介關東升知名iOS技術作家,iOS技術顧問,高級培訓講師,行動開發專家。擔任5ICTO社區iOS技術顧問,精通iOS、Android、WindowsPhone及HTML5等行動開發技術。在AppStore上發佈多款遊戲和應用軟體,擅長行動平台的應用和遊戲類專案開發。長期為中國移動研究院、雲南移動、東軟、方正科技、大唐電信、中石油等企業授課。

產品目錄

產品目錄 序第 1 篇 基礎篇Chapter01 準備開始1.1 本書學習路線1.2 使用實例程式Chapter02 Cocos2d-x 介紹與環境架設2.1 行動平台遊戲引擎介紹2.2 Cocos2d 家譜2.3 Cocos2d-x 設計目標2.4 在Windows 平台下開始開發Cocos2d-x 遊戲2.4.1 使用Visual Studio 開發工具2.4.2 下載和使用Cocos2d-x 案例2.4.3 產生API 文件Chapter03 Hello Cocos2d-x3.1 第一個Cocos2d-x 遊戲3.1.1 建立專案3.1.2 專案檔案結構3.1.3 程式解釋3.2 Cocos2d-x 核心概念3.2.1 導演3.2.2 場景3.2.3 層3.2.4 精靈3.2.5 選單3.3 Node 與Node 層級架構3.3.1 Node 中重要的操作3.3.2 Node 中重要的屬性3.3.3 遊戲循環與排程3.4 Cocos2d-x 座標系3.4.1 UI 座標3.4.2 OpenGL 座標3.4.3 世界座標和模型座標3.5 Win32 平台下設定螢幕Chapter04 字串、標籤和選單4.1 Cocos2d-x 中的字串14.1.1 使用const char* 和std::string4.1.2 使用cocos2d::__String4.1.3 Win32 平台下中文亂碼問題4.2 使用標籤4.2.1 LabelTTF4.2.2 LabelAtlas4.2.3 LabelBMFont4.2.4 Cocos2d-x 3.x 標籤類別Label4.2.5 標籤中文亂碼問題4.3 使用選單4.3.1 文字選單4.3.2 精靈選單和圖片選單4.3.3 開關選單Chapter05 精靈5.1 Sprite 精靈類別5.1.1 建立Sprite 精靈物件5.1.2 實例:使用紋理物件建立Sprite 物件5.2 精靈的效能最佳化5.2.1 使用紋理圖集5.2.2 使用精靈影格快取Chapter06 場景與層6.1 場景與層的關係 -6.2 場景切換6.2.1 場景切換相關函數6.2.2 場景過場動畫6.3 場景的生命週期6.3.1 生命週期函數6.3.2 多場景切換生命週期Chapter07 動作、特效和動畫7.1 動作7.1.1 暫態動作7.1.2 間隔動作7.1.3 組合動作7.1.4 動作速度控制7.1.5 函數呼叫7.2 特效7.2.1 網格動作7.2.2 實例:特效示範7.3 動畫7.3.1 頁框動畫7.3.2 實例:頁框動畫使用Chapter08 Cocos2d-x 使用者事件8.1 事件處理機制8.1.1 事件分發器8.1.2 觸控事件8.1.3 實例:單點觸控事件8.1.4 實例:使用Lambda 運算式8.1.5 鍵盤事件8.1.6 滑鼠事件8.2 Mouse Down detected, onMouseUp 在層中進行事件處理8.2.1 觸控事件8.2.2 實例:單點觸控事件8.3 加速度計與加速度事件8.3.1 加速度計8.3.2 使用事件分發器8.3.3 使用層加速度計事件8.3.4 實例:運動的小球第 2 篇 進階篇Chapter09 遊戲背景音樂與音效9.1 Cocos2d-x 中音訊檔案9.1.1 音訊檔案介紹9.1.2 Cocos2d-x 跨平台音訊支援9.2 使用CocosDenshion 引擎9.2.1 音訊檔案的前置處理9.2.2 播放背景音樂9.2.3 停止播放背景音樂9.2.4 背景音樂播放暫停與繼續9.3 實例:設定背景音樂與音效9.3.1 AppDelegate 實現9.3.2 HelloWorld 場景實現9.3.3 設定場景實現Chapter10 粒子系統10.1 問題的提出10.2 粒子系統基本概念10.2.1 實例:打火機10.2.2 粒子發射模式10.2.3 粒子系統屬性10.3 Cocos2d-x 內建粒子系統10.3.1 內建粒子系統10.3.2 實例:內建粒子系統10.4 自訂粒子系統10.4.1 程式建立10.4.2 plist 檔案建立Chapter 11 圖磚地圖11.1 地圖效能問題11.2 Cocos2d-x 中圖磚地圖API11.3 實例:忍者無敵11.3.1 設計地圖11.3.2 程式中載入地圖11.3.3 移動精靈11.3.4 檢測碰撞11.3.5 捲動地圖Chapter12 物理引擎12.1 使用物理引擎12.1.1 物理引擎核心概念12.1.2 物理引擎與精靈關係12.2 Cocos2d-x 3.0 中物理引擎封裝12.2.1 Cocos2d-x 3.x 物理引擎API12.2.2 實例:HelloPhysicsWorld12.2.3 實例:碰撞檢測12.2.4 實例:使用關節12.3 Box2D 引擎12.3.1 Box2D 核心概念12.3.2 使用Box2D 物理引擎的一般步驟12.3.3 Visual Studio 2012 下Box2D 開發環境設定12.3.4 實例:HelloBox2D12.3.5 實例:碰撞檢測12.3.6 實例:使用關節第 3 篇 資料與網路篇Chapter13 Cocos2d-x 中使用的資料容器類別13.1 Cocos2d-x 中兩大類 —— Ref 和Value13.1.1 Cocos2d-x 根類別Ref13.1.2 包裝類別Value13.2 Ref 列表容器13.2.1 __Array 容器13.2.2 實例:__Array 容器13.2.3 Vector 容器13.2.4 實例:Vector 容器13.3 Ref 字典容器13.3.1 __Dictionary 容器13.3.2 實例:__Dictionary 容器13.3.3 Map 容器13.3.4 實例:Map 容器13.4 Value 列表容器 —— ValueVector13.4.1 ValueVector 常用API13.4.2 實例:使用ValueVector 容器13.5 Value 字典容器 —— ValueMap 和ValueMapIntKey13.5.1 ValueMap 和ValueMapIntKey 常用API13.5.2 實例:使用ValueMap 容器Chapter14 檔案存取與資料持久化14.1 使用FileUtils 存取檔案14.1.1 Cocos2d-x 中的目錄14.1.2 實例:檔案讀寫14.1.3 實例:路徑搜索14.2 持久化概述14.3 UserDefault 資料持久化14.3.1 UserDefault API14.3.2 實例:儲存背景音樂和音效設定14.4 屬性清單資料持久化14.4.1 屬性清單概述14.4.2 實例:MyNotes14.4.3 使用__Dictionary 讀寫屬性清單檔案14.4.4 使用ValueMap 讀寫屬性清單檔案14.4.5 使用ValueVector 讀取屬性清單檔案14.5 SQLite 資料庫資料持久化14.5.1 SQLite 資料庫介紹14.5.2 Visual Studio 下SQLite 資料庫開發環境設定14.5.3 實例:重構MyNotes14.5.4 建立資料庫14.5.5 SQLite 資料庫管理工具14.5.6 查詢資料14.5.7 修改資料Chapter15 資料交換格式15.1 CSV 資料交換格式15.1.1 文件結構15.1.2 CSV 格式解碼15.2 XML 資料交換格式15.2.1 文件結構15.2.2 SAX 解析15.2.3 DOM 解析15.3 JSON 資料交換格式15.3.1 文件結構15.3.2 JSON 架構jsoncpp 和rapidjson 比較15.3.3 實例:rapidjson 解碼15.3.4 實例:rapidjson 編碼Chapter16 以HTTP 為基礎的網路通訊16.1 網路結構16.1.1 用戶端伺服器結構網路16.1.2 點對點結構網路16.2 HTTP 與HTTPS 協定16.3 使用cURL 開發用戶端16.3.1 cURL 與libcurl 函數庫16.3.2 Visual Studio 下libcurl 函數庫開發環境設定16.3.3 實例:重構MyNotes16.4 使用HttpClient 開發用戶端16.4.1 HttpClient API16.4.2 Visual Studio 下HttpClient 開發環境設定16.4.3 實例:重構MyNotesChapter17 以Node.js 為基礎的Socket.IO 網路通訊17.1 Node.js17.1.1 Node.js 安裝17.1.2 Node.js 測試17.2 使用Socket.IO17.2.1 Socket.IO 伺服器端開發17.2.2 Cocos2d-x 的Socket.IO 用戶端17.3 實例:Socket.IO 重構MyNotes17.3.1 Socket.IO 伺服器端開發17.3.2 Node.js 存取SQLite 資料庫17.3.3 Cocos2d-x 的Socket.IO 用戶端開發第 4 篇 設計與最佳化篇Chapter18 Cocos2d-x 中的常用設計模式18.1 單例設計模式18.1.1 問題提出18.1.2 實現原理18.1.3 應用案例18.2 委派設計模式18.2.1 問題提出18.2.2 實現原理18.2.3 應用案例18.3 觀察者設計模式與通知機制18.3.1 問題提出18.3.2 實現原理18.3.3 通知機制Chapter19 Cocos2d-x 中的記憶體管理19.1 C++ 記憶體管理19.1.1 記憶體分配區域19.1.2 動態記憶體分配19.2 Ref 記憶體管理19.2.1 記憶體參考計數19.2.2 自動釋放池19.2.3 Ref 記憶體管理規則19.3 Ref 記憶體管理設計模式19.3.1 使用靜態建構函數19.3.2 使用存取器19.4 其它類型記憶體管理19.4.1 Value 記憶體管理19.4.2 Vector 和Map 記憶體管理Chapter20 效能最佳化20.1 工具20.1.1 Xcode 中Instruments 工具使用20.1.2 使用Windows 工作管理員20.1.3 Visual Studio 記憶體洩漏檢測工具 —— Visual Leak Detector20.1.4 左下角的文字是什麼?20.2 使用SpriteBatchNode 批次繪製20.3 合理使用快取20.3.1 場景與資源20.3.2 快取建立和清除時機20.4 圖片與紋理最佳化20.4.1 選擇圖片格式20.4.2 拼圖20.4.3 紋理像素格式20.4.4 紋理快取非同步載入20.4.5 背景圖片最佳化20.5 聲音最佳化20.5.1 聲音格式最佳化20.5.2 聲音前置處理與清除20.6 多執行緒平行處理存取20.6.1 std::thread 多執行緒技術20.6.2 非同步前置處理聲音20.7 SQLite 資料庫最佳化20.7.1 表結構最佳化20.7.2 查詢最佳化20.7.3 插入(或刪除)最佳化20.8 資料交換格式最佳化第 5 篇 平台移植篇Chapter21 從Win32 到Android21.1 架設交換編譯和包裝環境21.1.1 Android SDK 安裝21.1.2 管理Android SDK21.1.3 管理Android 開發模擬器21.1.4 Android NDK 安裝21.1.5 設定環境變數21.2 交換編譯和包裝21.2.1 透過命令列交換編譯包裝21.2.2 Android.mk 編譯檔案21.2.3 使用Eclipse 交換編譯包裝21.3 移植問題整理21.3.1 中文亂碼問題21.3.2 SQLite3 資料庫移植問題21.3.3 JSON 架構rapidjson 移植問題221.3.4 libcurl 函數庫移植問題21.3.5 libNetwork 函數庫移植問題21.3.6 橫向螢幕與垂直設定問題 Chapter22 從Win32 到Windows Phone 822.1 Windows Phone 8 開發環境架設22.1.1 Windows Phone SDK 8.0 安裝22.1.2 Visual Studio Express 2012 for Windows Phone 8 安裝22.2 Cocos2d-x 3.x 的Windows Phone 8 專案22.2.1 產生專案22.2.2 執行專案22.2.3 偵錯專案22.3 移植問題整理22.3.1 中文亂碼問題22.3.2 SQLite3 資料庫移植問題22.3.3 架構rapidjson 移植問題22.3.4 libcurl 函數庫移植問題22.3.5 libNetwork 函數庫移植問題22.3.6 橫向螢幕與垂直設定問題Chapter23 從Win32 到iOS23.1 iOS 開發環境架設23.1.1 Xcode 安裝和移除23.1.2 Xcode 操作介面23.2 從Visual Studio 專案到Xcode 專案23.2.1 增加原始檔案23.2.2 增加資源檔23.2.3 Xcode 中編譯並執行23.3 移植問題整理23.3.1 中文亂碼問題23.3.2 SQLite3 資料庫移植問題23.3.3 JSON 架構rapidjson 移植問題23.3.4 libcur 程式庫移植問題23.3.5 聲音移植問題23.3.6 使用PVR 紋理格式23.3.7 橫向螢幕與垂直設定問題23.4 多解析度螢幕轉換23.4.1 問題的提出23.4.2 Cocos2d-x 螢幕轉換23.4.3 解析度策略23.4.4 紋理圖集資源轉換23.4.5 圖磚地圖資源轉換第 6 篇 實戰篇Chapter24 使用Git 管理程式碼版本24.1 程式版本管理工具 —— Git24.1.1 版本控制歷史24.1.2 術語和基本概念24.1.3 Git 環境設定24.1.4 Git 常用指令24.2 程式託管服務 —— GitHub24.2.1 建立和設定GitHub 帳號24.2.2 建立程式庫24.2.3 刪除程式庫24.2.4 衍生程式庫24.2.5 GitHub 協作開發24.3 實例:Cocos2d-x 遊戲專案協作開發24.3.1 傳送到GitHub 程式庫24.3.2 複製GitHub 程式庫24.3.3 重新獲得GitHub 程式庫Chapter25 Cocos2d-x 敏捷開發專案實戰 —— 迷失航線手機遊戲25.1 迷失航線遊戲分析與設計25.1.1 迷失航線故事背景25.1.2 需求分析25.1.3 原型設計25.1.4 遊戲指令稿25.2 工作1:遊戲專案的建立與初始化25.2.1 開發階段1.1:建立專案25.2.2 開發階段1.2:多解析度支援25.2.3 開發階段1.3:通用類別與基礎類別維護25.2.4 開發階段1.4:發佈到GitHub25.3 工作2:建立Loading 場景25.3.1 開發階段2.1:增加場景和層25.3.2 開發階段2.2:Loading 動畫25.3.3 開發階段2.3:非同步載入紋理快取25.3.4 開發階段2.4:非同步前置處理聲音25.4 工作3:建立Home 場景25.4.1 開發階段3.1:增加場景和層25.4.2 開發階段3.2:增加選單25.5 工作4:建立設定場景25.6 工作5:建立說明場景25.7 工作6:遊戲場景實現25.7.1 開發階段6.1:建立敵人精靈25.7.2 開發階段6.2:建立玩家飛機精靈25.7.3 開發階段6.3:建立炮彈精靈25.7.4 開發階段6.4:初始化遊戲場景25.7.5 開發階段6.5:遊戲場景選單實現25.7.6 開發階段6.6:玩家飛機發射炮彈25.7.7 開發階段6.7:炮彈與敵人的碰撞檢測25.7.8 開發階段6.8:玩家飛機與敵人的碰撞檢測25.7.9 開發階段6.9:玩家飛機生命值顯示25.7.10 開發階段6.10:顯示玩家得分情況25.8 工作7:遊戲結束場景Chapter26 為迷失航線遊戲增加廣告26.1 使用GoogleAdMob 廣告26.1.1 註冊AdMob 帳號26.1.2 管理AdMob 廣告26.1.3 AdMob 廣告類型26.1.4 下載GoogleAdMob Ads SDK26.2 為迷失航線遊戲Android 平台增加AdMob 廣告26.2.1 Cocos2d-x 引擎Android 平台下AdMob 開發環境架設26.2.2 撰寫AdMob 相關程式26.2.3 交換編譯與包裝執行26.3 為迷失航線遊戲Windows Phone 8 平台增加AdMob 廣告26.3.1 Cocos2d-x 引擎Windows Phone 8 平台下AdMob開發環境架設26.3.2 撰寫AdMob 相關程式026.4 為迷失航線遊戲iOS 平台增加AdMob 廣告26.4.1 Cocos2d-x 引擎iOS 平台下AdMob 開發環境架設26.4.2 撰寫AdMob 相關程式Chapter27 把迷失航線遊戲發佈到Google play 市集27.1 GoogleAndroid 市集Google play27.2 Android 裝置測試27.3 還有「最後一哩路」27.3.1 增加圖示27.3.2 應用程式套件裝27.4 發佈產品27.4.1 上傳APK27.4.2 填寫商品詳細資訊27.4.3 定價和發佈範圍Chapter28 把迷失航線遊戲發佈到Windows Phone 市集28.1 微軟Windows Phone 市集28.2 Windows Phone 8 裝置測試28.2.1 播放音訊程式當機問題28.2.2 螢幕解析度寬度和高度相反問題28.3 還有「最後一哩路」28.3.1 使用市集測試套件完成「最後一哩路」628.3.2 測試應用套裝程式XAP28.3.3 修改應用程式的基本屬性28.3.4 設定圖示28.3.5 市集動態磚和螢幕擷取畫面28.3.6 修改UI 相關描述資訊28.3.7 修改包裝資訊28.4 發佈產品28.4.1 填寫應用資訊28.4.2 上傳並描述您的套裝程式Chapter29 把迷失航線遊戲發佈到蘋果App Store29.1 蘋果的App Store29.2 iOS 裝置測試29.2.1 建立開發者憑證29.2.2 裝置註冊829.2.3 建立App ID29.2.4 建立設定概要檔案329.2.5 裝置上執行29.3 還有「最後一哩路」29.3.1 增加圖示29.3.2 增加啟動介面29.3.3 修改發佈產品屬性29.3.4 為發佈進行編譯29.3.5 套裝應用軟體29.4 發佈產品29.4.1 建立應用及基本資訊29.4.2 應用定價資訊29.4.3 基本資訊輸入29.4.4 上傳應用前準備29.4.5 上傳應用29.5 常見審核不通過的原因29.5.1 功能問題29.5.2 使用者介面問題29.5.3 商業問題29.5.4 不當內容29.5.5 其它問題

商品規格

書名 / 手機跨界開發高手: Cocos2d-x C++縱橫Apple & Android
作者 / 關東升
簡介 / 手機跨界開發高手: Cocos2d-x C++縱橫Apple & Android:Cocos2d-x自發佈第一個版本以來,如今使用者已遍佈全球,數不清的採用Cocos引擎開發的遊戲橫掃各個暢銷榜單。Cocos2
出版社 / 佳魁資訊股份有限公司
ISBN13 / 9789863793441
ISBN10 / 9863793442
EAN / 9789863793441
誠品26碼 / 2681342045003
頁數 / 816
開數 / 18K
注音版 /
裝訂 / P:平裝
語言 / 1:中文 繁體
級別 / N:無

試閱文字

內文 : 序
歡迎來到Cocos 的開發世界。
Cocos2d-x 自發佈第一個版本以來,歷經4 年的成長,到如今使用者已遍佈全球,數不清的採用Cocos 引擎開發的遊戲橫掃各個暢銷榜單。近兩年,手機遊戲企業在行動網際網路世界的崛起是有目共睹的。企業格局在變化,Cocos2d-x 不改初衷,開放原始碼免費始終如一,便捷高效步步提升,跨平台特性也日益增強。我們的引擎團隊不斷地努力改進,盡可能降低遊戲開發的門檻,讓更多有想法、有創意的朋友,不管是專業還是非專業出身的開發者,都能著手去實現。
Cocos2d-x 遊戲引擎的優勢在於「在一個平台下開發,多平台發佈」。至今,許多知名的開發團隊都已轉為使用Cocos2d-x 開發遊戲了。以這樣為基礎的背景。本書使用Cocos2d-x 的C++ 語言API,並包含了100 多個完整的案例專案原始程式碼,讀者可到本書網站http://www.topteam.cc 下載。
勘誤與支援
網站http://www.cocoagame.net 中建立了一個勘誤專區,及時地把書
中的問題和勘誤回饋給讀者們。如果您在學習過程中發現了問題,可以在網上留言,也可以發送電子郵件到[email protected],我們會在第一時間回覆。
本書程式碼
本書原作者為中國大陸籍,為求原始程式之完整,特將原書程式碼及繁體化之後的程式碼都放在本公司官網http://www.topteam.cc 上,讀者可下載執行。
在執行繁體中文程式碼時若出現錯誤訊息,可使用原書程式測試。

活動