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