本書以C語言知識為基礎(chǔ),如鵬游戲引擎為框架,分三篇共13章來介紹C語言,主要內(nèi)容劃分如下:第一篇為基礎(chǔ)語法篇,內(nèi)容包括C語言初識、數(shù)據(jù)類型、運算符與表達式、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、函數(shù)初識、數(shù)組;第二篇為中級游戲開發(fā)篇,內(nèi)容包括如鵬游戲引擎初識、常用游戲元素介紹、游戲開發(fā)基礎(chǔ)、游戲開發(fā)高級;第三篇為高級指針篇,內(nèi)容包括指針初識、內(nèi)存管理。本書的特點是在案例部分以開發(fā)游戲的方式講解C語言,并且提供了源程序、素材文件、配套視頻、配套課件,更重要的是本書提供在線答疑,幫助讀者更快、更好地掌握C語言。
本書內(nèi)容有趣、難度適中、實例豐富,非常適合C語言零基礎(chǔ)的讀者,也適合相關(guān)院校作為教材使用。
適讀人群 :本書適用于剛剛學(xué)完或正在學(xué)習(xí)C語言的低年級同學(xué),可作為高等院校的教材,也適合零售和培訓(xùn)。
1.作者楊中科為大型線上IT教育網(wǎng)站如鵬教育創(chuàng)始人,開發(fā)了如鵬游戲引擎,其錄制的“C語言也能干大事”等視頻教程影響了數(shù)十萬編程學(xué)習(xí)者,被譽為“程序員的啟蒙老師”。
2.本書兼具實用性和趣味性。與其他C語言教材不同,本書以游戲開發(fā)的方式一步步引導(dǎo)讀者完成一個游戲的設(shè)計和代碼的編寫,讓讀者體會到C語言的樂趣。
3.本書在結(jié)構(gòu)上先講解實用基礎(chǔ)的編程知識,然后通過游戲案例的方式帶領(lǐng)讀者使用基礎(chǔ)知識進行編程,最后再講解較難的棧、結(jié)構(gòu)體等。讓讀者能夠快速入門。
4.本書配有對應(yīng)的教學(xué)視頻,讀者可以掃描二維碼觀看具體章節(jié)的細致講解,學(xué)習(xí)程序開發(fā)軟件的安裝以及游戲引擎的使用方法。
5.本書配備了如鵬教育的線上服務(wù),讀者可以享受提問秒回、學(xué)習(xí)督導(dǎo)、代碼批改、簡歷和面試指導(dǎo)等系統(tǒng)化的教學(xué)服務(wù),提高學(xué)習(xí)動力和效率。
楊中科,大型線上IT教育網(wǎng)站如鵬教育創(chuàng)始人,自主研發(fā)了如鵬游戲引擎。其錄制的“C語言也能干大事”等視頻教程影響了數(shù)十萬編程學(xué)習(xí)者,被譽為“程序員的啟蒙老師”。
第一篇基礎(chǔ)語法篇
第1章C語言初識
1.1編程入門2
1.1.1什么是程序2
1.1.2什么是計算機語言2
1.1.3什么是編譯2
1.2編輯器、編譯器與集成開發(fā)環(huán)境3
1.2.1什么是編輯器3
1.2.2什么是編譯器3
1.2.3什么是集成開發(fā)環(huán)境(IDE)4
1.2.4IDE的比較與選擇4
1.2.5VisualStudio2012下載與安裝4
1.3編寫第一個C語言程序4
1.3.1新建第一個解決方案5
1.3.2添加.c文件7
1.3.3編輯C語言程序8
1.3.4生成可執(zhí)行程序9
1.3.5查看編譯結(jié)果9
1.3.6運行C語言程序10
1.3.7項目過期提示10
1.3.8生成錯誤提示11
1.3.9常見錯誤11
1.3.10設(shè)置行號顯示12
1.4解析第一個C語言程序13
1.4.1什么是控制臺程序13
1.4.2什么是窗口程序14
1.4.3解析C語言程序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標識符與關(guān)鍵字18
2.2.1標識符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浮點數(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定義多個變量33
2.5.4變量的本質(zhì)34
2.5.5語句與語句塊35
2.5.6順序結(jié)構(gòu)36
2.6變量需要注意的問題37
2.6.1先定義變量,再使用變量37
2.6.2變量定義必須在引用之前37
2.6.3變量重名問題38
2.6.4局部變量39
2.6.5局部變量的初始化43
2.6.6經(jīng)典案例——交換變量45
2.7課后習(xí)題48
2.8習(xí)題答案48
第3章運算符與表達式
3.1算術(shù)運算符和算術(shù)表達式50
3.1.1算術(shù)運算符50
3.1.2算術(shù)表達式53
3.2賦值運算符和賦值表達式54
3.2.1賦值運算符54
3.2.2賦值表達式54
3.3復(fù)合賦值運算符和復(fù)合賦值表達式55
3.3.1復(fù)合賦值運算符55
3.3.2復(fù)合賦值表達式56
3.4自增、自減運算符57
3.4.1自增運算符57
3.4.2自增運算表達式57
3.4.3自減運算符59
3.4.4自減運算表達式59
3.5強制類型轉(zhuǎn)換運算符60
3.6關(guān)系運算符與關(guān)系表達式61
3.6.1關(guān)系運算符61
3.6.2關(guān)系表達式62
3.7邏輯運算符與邏輯表達式63
3.7.1邏輯運算符63
3.7.2邏輯表達式64
3.8邏輯運算的“陷阱”:短路與、短路或65
3.8.1短路與運算65
3.8.2短路或運算66
3.9條件運算符與條件表達式66
3.9.1條件運算符67
3.9.2條件表達式67
3.10求字節(jié)數(shù)運算符68
3.11課后習(xí)題69
3.12習(xí)題答案70
第4章選擇結(jié)構(gòu)
4.1if語句71
4.1.1if語句的第一種形式71
4.1.2if語句的第二種形式73
4.1.3if語句的第三種形式74
4.1.4if語句常見錯誤76
4.1.5if案例—判斷季節(jié)77
4.1.6if語句嵌套79
4.1.7if語句與三元運算符81
4.2switch語句81
4.2.1switch語句一般形式81
4.2.2switch語句優(yōu)化83
4.2.3switch語句常見錯誤84
4.2.4關(guān)于default的幾點說明87
4.3課后習(xí)題88
4.4習(xí)題答案89
第5章循環(huán)結(jié)構(gòu)
5.1while循環(huán)語句91
5.1.1while循環(huán)應(yīng)用92
5.1.2while循環(huán)常見錯誤93
5.2do…while循環(huán)語句94
5.2.1do…while循環(huán)應(yīng)用95
5.2.2do…while常見錯誤96
5.2.3do…while與while的區(qū)別96
5.3for循環(huán)語句97
5.3.1for循環(huán)應(yīng)用98
5.3.2for循環(huán)常見錯誤99
5.3.3for循環(huán)其他幾種寫法101
5.3.4for循環(huán)嵌套102
5.4改變循環(huán)執(zhí)行狀態(tài)103
5.4.1break語句104
5.4.2continue語句107
5.4.3break語句與continue語句對比108
5.5課后習(xí)題108
5.6習(xí)題答案109
第6章函數(shù)初識
6.1函數(shù)引入111
6.1.1定義函數(shù)111
6.1.2調(diào)用函數(shù)112
6.1.3函數(shù)的實參與形參賦值113
6.1.4函數(shù)定義、調(diào)用注意事項114
6.1.5函數(shù)中的局部變量117
6.1.6函數(shù)參數(shù)的傳遞方式:值傳遞117
6.1.7函數(shù)返回值118
6.1.8無返回值函數(shù)中的return語句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:計算整數(shù)1~n的累加和123
6.2.3案例3:求兩個整數(shù)最大值124
6.2.4案例4:計算矩形面積124
6.2.5案例5:計算圓面積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ù)組遍歷與常見錯誤132
7.2.1一維數(shù)組遍歷132
7.2.2sizeof計算數(shù)組元素字節(jié)數(shù)132
7.2.3sizeof計算數(shù)組總字節(jié)數(shù)133
7.2.4sizeof計算數(shù)組長度134
7.2.5數(shù)組常見錯誤分析135
7.3字符數(shù)組137
7.3.1如何定義字符數(shù)組137
7.3.2字符數(shù)組初始化137
7.3.3字符串與字符串結(jié)束標志138
7.3.4'\\0'使用時的注意事項139
7.3.5sizeof計算字符串長度140
7.3.6strlen計算字符串有效長度141
7.3.7中文字符串142
7.3.8字符串元素遍歷143
7.3.9char*方式引用字符串144
7.3.10char*類型數(shù)組簡介144
7.4數(shù)組案例145
7.4.1案例1:計算兩個等長數(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章如鵬游戲引擎初識
8.1配置游戲開發(fā)環(huán)境152
8.1.1創(chuàng)建第一個游戲項目152
8.1.2分析第一個游戲代碼154
8.1.3小試牛刀—修改游戲代碼154
8.1.4查看yzkgame.h頭文件157
8.2游戲引擎基礎(chǔ)知識157
8.2.1什么是像素157
8.2.2游戲窗口坐標157
8.2.3如何描述矩形158
8.2.4什么是圖層158
8.3課后習(xí)題159
8.4習(xí)題答案159
第9章常用游戲元素介紹
9.1游戲開發(fā)核心函數(shù)介紹160
9.1.1pauseGame設(shè)置游戲暫停時間函數(shù)160
9.1.2setGameSize設(shè)置窗口尺寸函數(shù)161
9.1.3setGameTitle設(shè)置窗口標題函數(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操作多個文本元素168
9.2.8文本元素常見錯誤170
9.2.9文本案例——判斷年齡172
9.2.10文本案例——超級瑪麗啟動界面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常見錯誤183
9.3.11圖片案例——性別判斷187
9.3.12圖片案例——超級瑪麗啟動界面188
9.4精靈元素189
9.4.1精靈動作189
9.4.2精靈文件夾存放位置190
9.4.3createSprite創(chuàng)建精靈函數(shù)191
9.4.4playSpriteAnimate播放精靈動作函數(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精靈案例——精靈切換動作201
9.4.13精靈案例——精靈向右移動202
9.4.14精靈案例——精靈向右上方移動203
9.5課后習(xí)題205
9.6習(xí)題答案205
第10章游戲開發(fā)基礎(chǔ)
10.1文本案例206
10.1.1呼吸字體206
10.1.2倒計時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章游戲開發(fā)高級
11.1鍵盤輸入功能223
11.1.1getPressedKeyCode獲取按鍵函數(shù)223
11.1.2案例——按鍵控制精靈移動225
11.2隨機數(shù)227
11.2.1生成[0,n)之間的隨機數(shù)229
11.2.2生成[m,n)之間的隨機數(shù)230
11.2.3封裝隨機數(shù)生成函數(shù)230
11.3吃金幣游戲232
11.3.1吃金幣游戲—吃金幣232
11.3.2吃金幣游戲—顯示分數(shù)238
11.3.3吃金幣游戲—吃到炸彈游戲結(jié)束244
11.3.4吃金幣游戲—隨機生成金幣位置250
11.4課后習(xí)題253
11.5習(xí)題答案253
第12章指針初識
12.1指針知識先導(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ù):交換兩個變量的值265
12.1.7指針變量作函數(shù)參數(shù):獲取三位整數(shù)的個、十、百位268
12.1.8scanf獲取輸入數(shù)據(jù)函數(shù)269
12.2數(shù)組與指針271
12.2.1數(shù)組元素地址初識272
12.2.2數(shù)組元素地址深入分析274
12.2.3數(shù)組名與數(shù)組首元素地址276
12.2.4指針加、減運算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字符串的引用與存儲282
12.3.2字符串長度與字符串有效長度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)浮點型函數(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)存注意事項295
13.1.3堆內(nèi)存296
13.1.4堆內(nèi)存注意事項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案例——分割文件名與擴展名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