本書通過趣味案例逐步引入語法知識,教讀者用C?和?C++編寫游戲程序,激發(fā)讀者學習編程的興趣。全書共14章和3個附錄,依次介紹了C和C++編程語言的基本概念、數(shù)據(jù)類型、if語句、while循環(huán)、for循環(huán)、一維數(shù)組、函數(shù)、二維數(shù)組、字符串、文件讀寫、指針、遞歸、面向?qū)ο缶幊、鏈表和C++標準模板庫等知識,其中貫穿了眾多的小案例和游戲,最后綜合應(yīng)用這些知識編寫了一款冒險游戲。附錄分別給出了練習題的參考答案、語法知識索引以及常用的調(diào)試方法和輔助開發(fā)工具。本書適合不同年齡、不同層次的 C 與 C++ 編程初學者閱讀和自學,也可以作為中學生、大學生學習程序設(shè)計的教材和少兒編程培訓機構(gòu)的參考教材。
1.為初學者量身打造
循序漸進,適合零基礎(chǔ)入門者學習。書中案例從易到難,且提供了實現(xiàn)過程的分步驟代碼;
2.趣味性強
本書精選了13個案例,涵蓋多種游戲類型,在開發(fā)趣味程序的過程中,會有很強的成就感;
3.可拓展性強
所有章節(jié)均提供練習題,培養(yǎng)讀者邏輯思維的能力;
4.配套資源豐富
提供演示視頻、配套資源代碼和素材、書中每章練習題答案、書中配套彩圖文件;
5.全彩印刷
本書把趣味游戲開發(fā)應(yīng)用于C和C++編程教學,通過13個由易到難的有趣案例,帶領(lǐng)讀者從零基礎(chǔ)開始學習。本書將編程教學穿插在游戲開發(fā)的過程中,通過游戲案例逐步講解新的語法知識,便于讀者理解其含義。書中案例均經(jīng)過精心的設(shè)計,并包括詳細的實現(xiàn)過程,適合上手,讓讀者學習編程的同時培養(yǎng)邏輯思維能力,增強認識問題、解決問題的能力。
本書帶領(lǐng)讀者搭建的案例包括:
·仿真“自由落體的小球”
·“別碰方塊”游戲
·“旋轉(zhuǎn)蛇”錯覺
·“見縫插針”游戲
·“見縫插圓”游戲
·“貪吃蛇”游戲
·“十步萬度”游戲
·“推箱子”游戲
·“十字消除”游戲
·櫻花樹
·“堅持一百秒”游戲
·“祖瑪”游戲
·“火柴人的無盡冒險”游戲
和市面上同類圖書相比,本書有以下3個鮮明的特色。
1.為初學者量身打造。
一般編程圖書會系統(tǒng)講解語法知識,讓初學者感到記憶負擔大、學習難度高。本書先講解較少的語法知識,然后利用這些語法知識編寫趣味游戲,通過游戲案例逐步引入新的語法知識,便于讀者學習理解。書中案例從易到難,且提供了實現(xiàn)過程的分步驟代碼,適合學習。
2.趣味性強。
大部分C和C++圖書的編程案例比較抽象、枯燥乏味,讓讀者提不起興趣。本書精選了13個案例,涵蓋了多種游戲類型,讀者在開發(fā)這些趣味程序的過程中,會有很強的成就感。書中分解了案例的實現(xiàn)過程,每個步驟的學習成本較低,讀者很容易就能體會到編程的樂趣。
3.可拓展性強。
本書所有章節(jié)均提供了練習題,以加深讀者對語法知識、開發(fā)游戲方法的理解,培養(yǎng)讀者邏輯思維能力,認識問題、解決問題的能力。附錄中提供了所有練習題的參考答案。每章小結(jié)列出了可以進一步改進與實踐的方向,讀者可以參考本書開發(fā)思路,嘗試設(shè)計并分步驟實現(xiàn)任何自己喜歡的小游戲。
作者具有 15 年的一線編程教學經(jīng)驗,被評為河海大學優(yōu)秀主講教師。開設(shè)課程廣受好評,在知乎、網(wǎng)易云課堂、中國大學 MOOC 等線上平臺已有上百萬次的閱讀量。
童晶,浙江大學計算機專業(yè)博士,河海大學計算機系副教授、碩士生導師,中科院兼職副研究員,主要研究方向為計算機圖形學、數(shù)字化藝術(shù)、虛擬現(xiàn)實、三維打印等,曾發(fā)表學術(shù)論文 30 余篇。具有 15 年的一線編程教學經(jīng)驗,被評為河海大學優(yōu)秀主講教師。開設(shè)課程在校內(nèi)廣受好評,在知乎、網(wǎng)易云課堂、中國大學 MOOC 等線上平臺已有上百萬次的閱讀量。積極投身教學與學生創(chuàng)新,曾指導學生獲得英特爾嵌入式比賽全國一等獎、“挑戰(zhàn)杯”全國三等獎、“中國軟件杯”全國一等獎、中國大學生服務(wù)外包大賽全國一等獎等眾多獎項。
第 1 章 C 和 C++ 與開發(fā)環(huán)境介紹 1
1.1 什么是 C 和 C++ 1
1.2 集成開發(fā)環(huán)境 2
1.3 小結(jié) 6
第 2 章 仿真“自由落體的小球” 7
2.1 下載安裝圖形庫 8
2.2 顯示一個靜止小球 11
2.3 顯示多個小球 13
2.4 利用變量修改多個小球的位置 16
2.5 小球下落動畫 20
2.6 利用 while 實現(xiàn)小球下落動畫 21
2.7 利用 if 語句實現(xiàn)小球重復下落 24
2.8 小球落地反彈 26
2.9 小球加速下落 27
2.10 小結(jié) 30
第 3 章 “別碰方塊”游戲 31
3.1 字符 32
3.2 按空格鍵控制小球起跳 34
3.3 方塊的繪制與移動 35
3.4 小球和方塊的碰撞判斷 38
3.5 隨機方塊的速度和高度 39
3.6 得分的計算與顯示 42
3.7 避免空中起跳 46
3.8 小結(jié) 46
第 4 章 “旋轉(zhuǎn)蛇”錯覺 47
4.1 繪制扇形 48
4.2 RGB 顏色模型 49
4.3 繪制一個扇形單元 51
4.4 for 循環(huán)語句 52
4.5 循環(huán)的嵌套 56
4.6 HSV 顏色模型 60
4.7 按鍵切換效果 63
4.8 小結(jié) 66
第 5 章 “見縫插針”游戲 67
5.1 繪制圓盤與針 68
5.2 針的旋轉(zhuǎn) 69
5.3 利用數(shù)組實現(xiàn)多根針的繪制 72
5.4 批量繪制函數(shù) 76
5.5 針的發(fā)射與新增 76
5.6 游戲失敗判斷 79
5.7 得分與顯示效果改進 81
5.8 小結(jié) 84
第 6 章 “見縫插圓”游戲 85
6.1 利用數(shù)組記錄多個隨機圓 86
6.2 每次增加一個隨機圓 88
6.3 新圓不和已有圓相交 90
6.4 函數(shù)的定義與應(yīng)用 93
6.5 新圓半徑最大化 99
6.6 函數(shù)封裝多種繪制效果 101
6.7 按鍵互動 103
6.8 小結(jié) 106
第 7 章 “貪吃蛇”游戲 107
7.1 變量作用域與游戲框架 108
7.2 基于二維數(shù)組的游戲地圖 110
7.3 小蛇向右移動 115
7.4 控制小蛇向 4 個方向移動 117
7.5 時間控制的改進 120
7.6 失敗判斷與顯示 122
7.7 添加食物 124
7.8 小結(jié) 129
第 8 章 “十步萬度”游戲 130
8.1 結(jié)構(gòu)體 131
8.2 鼠標交互 135
8.3 被鼠標點擊后旋轉(zhuǎn) 137
8.4 函數(shù)的參數(shù)傳遞 139
8.5 旋轉(zhuǎn)的傳播 141
8.6 操作步數(shù)與旋轉(zhuǎn)度數(shù) 142
8.7 小結(jié) 147
第 9 章 “推箱子”游戲 148
9.1 字符串與字符數(shù)組 149
9.2 應(yīng)用字符數(shù)組存儲關(guān)卡數(shù)據(jù) 152
9.3 鍵盤控制游戲角色移動 156
9.4 元素更新的實現(xiàn) 157
9.5 游戲勝利判斷 160
9.6 多關(guān)卡的實現(xiàn) 162
9.7 基于文件的關(guān)卡數(shù)據(jù)讀取 170
9.8 枚舉類型 172
9.9 小結(jié) 173
第 10 章 “十字消除”游戲 174
10.1 紅色方塊的表示與繪制 175
10.2 隨機顏色方塊的實現(xiàn) 177
10.3 鼠標點擊與十字消除 179
10.4 方塊提示框的繪制 182
10.5 倒計時與進度條 183
10.6 得分計算與勝負判斷 187
10.7 多關(guān)卡與增加游戲難度 188
10.8 地址與指針 196
10.9 指針與數(shù)組 199
10.10 小結(jié) 203
第 11 章 櫻花樹 204
11.1 遞歸 205
11.2 分形與遞歸 210
11.3 繪制櫻花樹 215
11.4 顯示繪制過程動畫 218
11.5 小結(jié) 222
第 12 章 “堅持一百秒”游戲 223
12.1 背景與火箭圖片的顯示 224
12.2 基于結(jié)構(gòu)體的反彈子彈 229
12.3 面向?qū)ο蟀姹镜淖訌棥?31
12.4 每隔 2 秒增加一顆子彈 234
12.5 添加火箭類 236
12.6 碰撞判斷與火箭爆炸 237
12.7 堅持時間與多條生命的顯示 239
12.8 添加音樂音效 245
12.9 添加智能飛碟類 246
12.10 小結(jié) 248
第 13 章 “祖瑪”游戲 249
13.1 鏈表 250
13.2 C++ 標準模板庫 253
13.3 頂點類與軌跡類 256
13.4 添加小球類 260
13.5 將小球放置在軌跡線上 262
13.6 小球自動沿著軌跡運動 264
13.7 小球的插入與消除 270
13.8 添加炮臺類 272
13.9 炮臺旋轉(zhuǎn)與更改小球顏色 274
13.10 炮臺發(fā)射小球 275
13.11 連續(xù)出球與勝負判斷 277
13.12 添加音效和復雜軌道 278
13.13 小結(jié) 280
第 14 章 “火柴人的無盡冒險”游戲 281
14.1 定義 Player 類 282
14.2 異步輸入與延時改進 285
14.3 枚舉類型狀態(tài)切換 286
14.4 添加奔跑動畫 288
14.5 跳躍的實現(xiàn) 290
14.6 添加地面類與場景類 292
14.7 火柴人與地面的碰撞檢測 294
14.8 相對運動效果的實現(xiàn) 296
14.9 無盡關(guān)卡與勝負判斷 298
14.10 添加敵人類 300
14.11 添加音效和更多圖片 303
14.12 小結(jié) 305
附錄 A 練習題參考答案 307
附錄 B 語法知識索引 337
附錄 C 調(diào)試方法與輔助工具 342