本書以C語(yǔ)言知識(shí)為基礎(chǔ),如鵬游戲引擎為框架,分三篇共13章來(lái)介紹C語(yǔ)言,主要內(nèi)容劃分如下:第一篇為基礎(chǔ)語(yǔ)法篇,內(nèi)容包括C語(yǔ)言初識(shí)、數(shù)據(jù)類型、運(yùn)算符與表達(dá)式、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、函數(shù)初識(shí)、數(shù)組;第二篇為中級(jí)游戲開(kāi)發(fā)篇,內(nèi)容包括如鵬游戲引擎初識(shí)、常用游戲元素介紹、游戲開(kāi)發(fā)基礎(chǔ)、游戲開(kāi)發(fā)高級(jí);第三篇為高級(jí)指針篇,內(nèi)容包括指針初識(shí)、內(nèi)存管理。本書的特點(diǎn)是在案例部分以開(kāi)發(fā)游戲的方式講解C語(yǔ)言,并且提供了源程序、素材文件、配套視頻、配套課件,更重要的是本書提供在線答疑,幫助讀者更快、更好地掌握C語(yǔ)言。
本書內(nèi)容有趣、難度適中、實(shí)例豐富,非常適合C語(yǔ)言零基礎(chǔ)的讀者,也適合相關(guān)院校作為教材使用。
適讀人群 :本書適用于剛剛學(xué)完或正在學(xué)習(xí)C語(yǔ)言的低年級(jí)同學(xué),可作為高等院校的教材,也適合零售和培訓(xùn)。
1.作者楊中科為大型線上IT教育網(wǎng)站如鵬教育創(chuàng)始人,開(kāi)發(fā)了如鵬游戲引擎,其錄制的“C語(yǔ)言也能干大事”等視頻教程影響了數(shù)十萬(wàn)編程學(xué)習(xí)者,被譽(yù)為“程序員的啟蒙老師”。
2.本書兼具實(shí)用性和趣味性。與其他C語(yǔ)言教材不同,本書以游戲開(kāi)發(fā)的方式一步步引導(dǎo)讀者完成一個(gè)游戲的設(shè)計(jì)和代碼的編寫,讓讀者體會(huì)到C語(yǔ)言的樂(lè)趣。
3.本書在結(jié)構(gòu)上先講解實(shí)用基礎(chǔ)的編程知識(shí),然后通過(guò)游戲案例的方式帶領(lǐng)讀者使用基礎(chǔ)知識(shí)進(jìn)行編程,最后再講解較難的棧、結(jié)構(gòu)體等。讓讀者能夠快速入門。
4.本書配有對(duì)應(yīng)的教學(xué)視頻,讀者可以掃描二維碼觀看具體章節(jié)的細(xì)致講解,學(xué)習(xí)程序開(kāi)發(fā)軟件的安裝以及游戲引擎的使用方法。
5.本書配備了如鵬教育的線上服務(wù),讀者可以享受提問(wèn)秒回、學(xué)習(xí)督導(dǎo)、代碼批改、簡(jiǎn)歷和面試指導(dǎo)等系統(tǒng)化的教學(xué)服務(wù),提高學(xué)習(xí)動(dòng)力和效率。
楊中科,大型線上IT教育網(wǎng)站如鵬教育創(chuàng)始人,自主研發(fā)了如鵬游戲引擎。其錄制的“C語(yǔ)言也能干大事”等視頻教程影響了數(shù)十萬(wàn)編程學(xué)習(xí)者,被譽(yù)為“程序員的啟蒙老師”。
第一篇基礎(chǔ)語(yǔ)法篇
第1章C語(yǔ)言初識(shí)
1.1編程入門2
1.1.1什么是程序2
1.1.2什么是計(jì)算機(jī)語(yǔ)言2
1.1.3什么是編譯2
1.2編輯器、編譯器與集成開(kāi)發(fā)環(huán)境3
1.2.1什么是編輯器3
1.2.2什么是編譯器3
1.2.3什么是集成開(kāi)發(fā)環(huán)境(IDE)4
1.2.4IDE的比較與選擇4
1.2.5VisualStudio2012下載與安裝4
1.3編寫第一個(gè)C語(yǔ)言程序4
1.3.1新建第一個(gè)解決方案5
1.3.2添加.c文件7
1.3.3編輯C語(yǔ)言程序8
1.3.4生成可執(zhí)行程序9
1.3.5查看編譯結(jié)果9
1.3.6運(yùn)行C語(yǔ)言程序10
1.3.7項(xiàng)目過(guò)期提示10
1.3.8生成錯(cuò)誤提示11
1.3.9常見(jiàn)錯(cuò)誤11
1.3.10設(shè)置行號(hào)顯示12
1.4解析第一個(gè)C語(yǔ)言程序13
1.4.1什么是控制臺(tái)程序13
1.4.2什么是窗口程序14
1.4.3解析C語(yǔ)言程序14
1.5課后習(xí)題15
1.6習(xí)題答案15
第2章數(shù)據(jù)類型
2.1常量與變量16
2.1.1常量16
2.1.2變量18
2.2標(biāo)識(shí)符與關(guān)鍵字18
2.2.1標(biāo)識(shí)符18
2.2.2關(guān)鍵字19
2.3基本數(shù)據(jù)類型19
2.3.1數(shù)據(jù)類型引入19
2.3.2整數(shù)類型20
2.3.3浮點(diǎn)數(shù)類型21
2.3.4字符型22
2.3.5轉(zhuǎn)義字符25
2.3.6字符與字符串的關(guān)系29
2.3.7printf與數(shù)據(jù)類型29
2.4注釋30
2.4.1行注釋30
2.4.2塊注釋31
2.5變量詳解32
2.5.1定義變量32
2.5.2引用變量33
2.5.3定義多個(gè)變量33
2.5.4變量的本質(zhì)34
2.5.5語(yǔ)句與語(yǔ)句塊35
2.5.6順序結(jié)構(gòu)36
2.6變量需要注意的問(wèn)題37
2.6.1先定義變量,再使用變量37
2.6.2變量定義必須在引用之前37
2.6.3變量重名問(wèn)題38
2.6.4局部變量39
2.6.5局部變量的初始化43
2.6.6經(jīng)典案例——交換變量45
2.7課后習(xí)題48
2.8習(xí)題答案48
第3章運(yùn)算符與表達(dá)式
3.1算術(shù)運(yùn)算符和算術(shù)表達(dá)式50
3.1.1算術(shù)運(yùn)算符50
3.1.2算術(shù)表達(dá)式53
3.2賦值運(yùn)算符和賦值表達(dá)式54
3.2.1賦值運(yùn)算符54
3.2.2賦值表達(dá)式54
3.3復(fù)合賦值運(yùn)算符和復(fù)合賦值表達(dá)式55
3.3.1復(fù)合賦值運(yùn)算符55
3.3.2復(fù)合賦值表達(dá)式56
3.4自增、自減運(yùn)算符57
3.4.1自增運(yùn)算符57
3.4.2自增運(yùn)算表達(dá)式57
3.4.3自減運(yùn)算符59
3.4.4自減運(yùn)算表達(dá)式59
3.5強(qiáng)制類型轉(zhuǎn)換運(yùn)算符60
3.6關(guān)系運(yùn)算符與關(guān)系表達(dá)式61
3.6.1關(guān)系運(yùn)算符61
3.6.2關(guān)系表達(dá)式62
3.7邏輯運(yùn)算符與邏輯表達(dá)式63
3.7.1邏輯運(yùn)算符63
3.7.2邏輯表達(dá)式64
3.8邏輯運(yùn)算的“陷阱”:短路與、短路或65
3.8.1短路與運(yùn)算65
3.8.2短路或運(yùn)算66
3.9條件運(yùn)算符與條件表達(dá)式66
3.9.1條件運(yùn)算符67
3.9.2條件表達(dá)式67
3.10求字節(jié)數(shù)運(yùn)算符68
3.11課后習(xí)題69
3.12習(xí)題答案70
第4章選擇結(jié)構(gòu)
4.1if語(yǔ)句71
4.1.1if語(yǔ)句的第一種形式71
4.1.2if語(yǔ)句的第二種形式73
4.1.3if語(yǔ)句的第三種形式74
4.1.4if語(yǔ)句常見(jiàn)錯(cuò)誤76
4.1.5if案例—判斷季節(jié)77
4.1.6if語(yǔ)句嵌套79
4.1.7if語(yǔ)句與三元運(yùn)算符81
4.2switch語(yǔ)句81
4.2.1switch語(yǔ)句一般形式81
4.2.2switch語(yǔ)句優(yōu)化83
4.2.3switch語(yǔ)句常見(jiàn)錯(cuò)誤84
4.2.4關(guān)于default的幾點(diǎn)說(shuō)明87
4.3課后習(xí)題88
4.4習(xí)題答案89
第5章循環(huán)結(jié)構(gòu)
5.1while循環(huán)語(yǔ)句91
5.1.1while循環(huán)應(yīng)用92
5.1.2while循環(huán)常見(jiàn)錯(cuò)誤93
5.2do…while循環(huán)語(yǔ)句94
5.2.1do…while循環(huán)應(yīng)用95
5.2.2do…while常見(jiàn)錯(cuò)誤96
5.2.3do…while與while的區(qū)別96
5.3for循環(huán)語(yǔ)句97
5.3.1for循環(huán)應(yīng)用98
5.3.2for循環(huán)常見(jiàn)錯(cuò)誤99
5.3.3for循環(huán)其他幾種寫法101
5.3.4for循環(huán)嵌套102
5.4改變循環(huán)執(zhí)行狀態(tài)103
5.4.1break語(yǔ)句104
5.4.2continue語(yǔ)句107
5.4.3break語(yǔ)句與continue語(yǔ)句對(duì)比108
5.5課后習(xí)題108
5.6習(xí)題答案109
第6章函數(shù)初識(shí)
6.1函數(shù)引入111
6.1.1定義函數(shù)111
6.1.2調(diào)用函數(shù)112
6.1.3函數(shù)的實(shí)參與形參賦值113
6.1.4函數(shù)定義、調(diào)用注意事項(xiàng)114
6.1.5函數(shù)中的局部變量117
6.1.6函數(shù)參數(shù)的傳遞方式:值傳遞117
6.1.7函數(shù)返回值118
6.1.8無(wú)返回值函數(shù)中的return語(yǔ)句120
6.1.9函數(shù)調(diào)用的其他形式121
6.2函數(shù)案例122
6.2.1案例1:打印整數(shù)1~n的數(shù)值122
6.2.2案例2:計(jì)算整數(shù)1~n的累加和123
6.2.3案例3:求兩個(gè)整數(shù)最大值124
6.2.4案例4:計(jì)算矩形面積124
6.2.5案例5:計(jì)算圓面積125
6.3課后習(xí)題126
6.4習(xí)題答案127
第7章數(shù)組
7.1一維數(shù)組128
7.1.1定義一維數(shù)組128
7.1.2一維數(shù)組初始化128
7.1.3引用一維數(shù)組元素129
7.1.4一維數(shù)組其他初始化方式130
7.2數(shù)組遍歷與常見(jiàn)錯(cuò)誤132
7.2.1一維數(shù)組遍歷132
7.2.2sizeof計(jì)算數(shù)組元素字節(jié)數(shù)132
7.2.3sizeof計(jì)算數(shù)組總字節(jié)數(shù)133
7.2.4sizeof計(jì)算數(shù)組長(zhǎng)度134
7.2.5數(shù)組常見(jiàn)錯(cuò)誤分析135
7.3字符數(shù)組137
7.3.1如何定義字符數(shù)組137
7.3.2字符數(shù)組初始化137
7.3.3字符串與字符串結(jié)束標(biāo)志138
7.3.4'\\0'使用時(shí)的注意事項(xiàng)139
7.3.5sizeof計(jì)算字符串長(zhǎng)度140
7.3.6strlen計(jì)算字符串有效長(zhǎng)度141
7.3.7中文字符串142
7.3.8字符串元素遍歷143
7.3.9char*方式引用字符串144
7.3.10char*類型數(shù)組簡(jiǎn)介144
7.4數(shù)組案例145
7.4.1案例1:計(jì)算兩個(gè)等長(zhǎng)數(shù)組元素和145
7.4.2案例2:查找數(shù)組中最大值146
7.4.3atoi字符串轉(zhuǎn)整型函數(shù)147
7.4.4sprintf字符串格式化函數(shù)147
7.5課后習(xí)題149
7.6習(xí)題答案150
第8章如鵬游戲引擎初識(shí)
8.1配置游戲開(kāi)發(fā)環(huán)境152
8.1.1創(chuàng)建第一個(gè)游戲項(xiàng)目152
8.1.2分析第一個(gè)游戲代碼154
8.1.3小試牛刀—修改游戲代碼154
8.1.4查看yzkgame.h頭文件157
8.2游戲引擎基礎(chǔ)知識(shí)157
8.2.1什么是像素157
8.2.2游戲窗口坐標(biāo)157
8.2.3如何描述矩形158
8.2.4什么是圖層158
8.3課后習(xí)題159
8.4習(xí)題答案159
第9章常用游戲元素介紹
9.1游戲開(kāi)發(fā)核心函數(shù)介紹160
9.1.1pauseGame設(shè)置游戲暫停時(shí)間函數(shù)160
9.1.2setGameSize設(shè)置窗口尺寸函數(shù)161
9.1.3setGameTitle設(shè)置窗口標(biāo)題函數(shù)161
9.2文本元素162
9.2.1createText創(chuàng)建文本函數(shù)162
9.2.2setTextPosition設(shè)置文本顯示位置函數(shù)163
9.2.3setTextFontSize設(shè)置文本字體大小函數(shù)164
9.2.4setText修改文本內(nèi)容函數(shù)165
9.2.5hideText隱藏文本函數(shù)166
9.2.6showText顯示文本函數(shù)167
9.2.7操作多個(gè)文本元素168
9.2.8文本元素常見(jiàn)錯(cuò)誤170
9.2.9文本案例——判斷年齡172
9.2.10文本案例——超級(jí)瑪麗啟動(dòng)界面173
9.3圖片元素175
9.3.1查看圖片格式175
9.3.2快速轉(zhuǎn)換圖片格式175
9.3.3圖片格式轉(zhuǎn)換誤區(qū)176
9.3.4圖片文件夾存放位置177
9.3.5createImage創(chuàng)建圖片元素函數(shù)178
9.3.6setImagePosition設(shè)置圖片顯示位置函數(shù)179
9.3.7setImageSource修改顯示圖片函數(shù)180
9.3.8hideImage隱藏圖片函數(shù)181
9.3.9showImage顯示圖片函數(shù)182
9.3.10常見(jiàn)錯(cuò)誤183
9.3.11圖片案例——性別判斷187
9.3.12圖片案例——超級(jí)瑪麗啟動(dòng)界面188
9.4精靈元素189
9.4.1精靈動(dòng)作189
9.4.2精靈文件夾存放位置190
9.4.3createSprite創(chuàng)建精靈函數(shù)191
9.4.4playSpriteAnimate播放精靈動(dòng)作函數(shù)192
9.4.5setSpritePosition設(shè)置精靈顯示位置函數(shù)193
9.4.6hideSprite隱藏精靈函數(shù)194
9.4.7showSprite顯示精靈函數(shù)195
9.4.8setSpriteFlipX精靈在x軸翻轉(zhuǎn)函數(shù)196
9.4.9setSpriteFlipY精靈在y軸翻轉(zhuǎn)函數(shù)197
9.4.10getSpriteHeight獲取精靈高度函數(shù)199
9.4.11getSpriteWidth獲取精靈寬度函數(shù)200
9.4.12精靈案例——精靈切換動(dòng)作201
9.4.13精靈案例——精靈向右移動(dòng)202
9.4.14精靈案例——精靈向右上方移動(dòng)203
9.5課后習(xí)題205
9.6習(xí)題答案205
第10章游戲開(kāi)發(fā)基礎(chǔ)
10.1文本案例206
10.1.1呼吸字體206
10.1.2倒計(jì)時(shí)208
10.1.3秒表209
10.2精靈案例215
10.2.1精靈走圈215
10.2.2桌面彈球218
10.3課后習(xí)題221
10.4習(xí)題答案221
第11章游戲開(kāi)發(fā)高級(jí)
11.1鍵盤輸入功能223
11.1.1getPressedKeyCode獲取按鍵函數(shù)223
11.1.2案例——按鍵控制精靈移動(dòng)225
11.2隨機(jī)數(shù)227
11.2.1生成[0,n)之間的隨機(jī)數(shù)229
11.2.2生成[m,n)之間的隨機(jī)數(shù)230
11.2.3封裝隨機(jī)數(shù)生成函數(shù)230
11.3吃金幣游戲232
11.3.1吃金幣游戲—吃金幣232
11.3.2吃金幣游戲—顯示分?jǐn)?shù)238
11.3.3吃金幣游戲—吃到炸彈游戲結(jié)束244
11.3.4吃金幣游戲—隨機(jī)生成金幣位置250
11.4課后習(xí)題253
11.5習(xí)題答案253
第12章指針初識(shí)
12.1指針知識(shí)先導(dǎo)258
12.1.1內(nèi)存空間與內(nèi)存地址258
12.1.2探索內(nèi)存259
12.1.3指針變量:保存內(nèi)存地址的變量262
12.1.4指針變量定義與初始化263
12.1.5引用指針變量263
12.1.6指針變量作函數(shù)參數(shù):交換兩個(gè)變量的值265
12.1.7指針變量作函數(shù)參數(shù):獲取三位整數(shù)的個(gè)、十、百位268
12.1.8scanf獲取輸入數(shù)據(jù)函數(shù)269
12.2數(shù)組與指針271
12.2.1數(shù)組元素地址初識(shí)272
12.2.2數(shù)組元素地址深入分析274
12.2.3數(shù)組名與數(shù)組首元素地址276
12.2.4指針加、減運(yùn)算276
12.2.5數(shù)組作函數(shù)參數(shù)278
12.2.6*(a+i)與a[i]等效280
12.2.7查找數(shù)組元素最大值281
12.3字符串與指針282
12.3.1字符串的引用與存儲(chǔ)282
12.3.2字符串長(zhǎng)度與字符串有效長(zhǎng)度284
12.3.3自定義strlen函數(shù)的多種寫法286
12.4字符串處理函數(shù)288
12.4.1strcmp字符串比較函數(shù)288
12.4.2strcpy字符串復(fù)制函數(shù)289
12.4.3memcpy內(nèi)存復(fù)制函數(shù)290
12.4.4memcpy與strcpy的區(qū)別291
12.4.5atof字符串轉(zhuǎn)浮點(diǎn)型函數(shù)291
12.5課后習(xí)題292
12.6習(xí)題答案292
第13章內(nèi)存管理
13.1棧區(qū)與堆區(qū)294
13.1.1棧內(nèi)存294
13.1.2棧內(nèi)存注意事項(xiàng)295
13.1.3堆內(nèi)存296
13.1.4堆內(nèi)存注意事項(xiàng)297
13.1.5內(nèi)存分配298
13.1.6返回函數(shù)內(nèi)部數(shù)據(jù)的三種方法299
13.1.7為什么要初始化內(nèi)存301
13.1.8memset內(nèi)存初始化函數(shù)303
13.1.9案例——分割文件名與擴(kuò)展名305
13.2結(jié)構(gòu)體307
13.2.1結(jié)構(gòu)體307
13.2.2定義結(jié)構(gòu)體變量308
13.2.3初始化、引用結(jié)構(gòu)體變量309
13.2.4結(jié)構(gòu)體類型大小311
13.2.5結(jié)構(gòu)體指針311
13.2.6typedef類型另起名函數(shù)313
13.2.7結(jié)構(gòu)體復(fù)制315
13.3課后習(xí)題316
13.4習(xí)題答案316