其實(shí)對于程序而言,C語言抑或著C++、Java等其他程序語言只是用于表達(dá)你的想法的一個(gè)工具。就像讓我們以建筑為例,畫圖是一個(gè)基本功,但是畫什么才是核心所在。那么,今天我們以一個(gè)設(shè)計(jì)一個(gè)RPG(角色扮演)游戲?yàn)槔?/p> 當(dāng)然,我們這里不是講如何設(shè)計(jì)一個(gè)完整的,那可能太復(fù)雜,也超過你目前掌握的C語言知識,不過我們可以抽取一個(gè)簡單的元素。 在RPG游戲中,我們知道有一個(gè)重要的元素就是主角,即人。而人會有不同的屬性,如生命值(一般成為HP),魔法值(一般稱為MP),攻擊力(如命名為AttackAbility)。那么,我們?nèi)绾伟焉蹬c魔法值等附加在人的屬性中呢? 回想我們的C語言知識,我們知道要把多個(gè)值捆綁在一起然后來表達(dá)一個(gè)東西,那么在C語言是使用struct來進(jìn)行輔助我們表達(dá)這樣的目的。 即:struct Person {int HP;int MP;int AttackAbility;}; 這樣我們就完成來Person的生命值與魔法值的捆綁,而使用的就是C語言的struct。接下來,讓我們更進(jìn)一步。我們的主角會有攻擊對方的動作,我們這里命名為attack。對于攻擊來說,我們需要有兩個(gè)元素需要關(guān)注,一個(gè)是攻擊者(我們主角),一個(gè)是被攻擊者(如怪獸),那么我們同樣的把怪獸的屬性列舉出來。struct Monster {int HP;// ...};接下來我們需要把主角和怪獸傳遞過來,即我們要知道我們的主角和怪獸就是我們所指向的那一個(gè),而不是其他的(包括新建),那么我們應(yīng)該用什么來傳遞呢?回想我們的C語言,能這樣指向的,就是指針,于是函數(shù)則這樣。 void attack(struct Person* person, struct Monster* monster) { monster->HP = monster->HP - person->AttackAbility;if(monster->HP <= 0) { printf("Monster is killed by you! "); }}在這里,我們還進(jìn)行來一次判斷,如果怪獸被攻擊后,生命值小于等于零后,我們輸出怪獸被殺死的信息。 通過這樣的引導(dǎo)例子,你可以看到,C語言只是提供了基本的元素來表達(dá)我們的想法,我們學(xué)習(xí)C語言只是學(xué)習(xí)來基礎(chǔ)的語法規(guī)則,但是最重要的還是我們的思想,然后利用C語言這個(gè)工具來表達(dá)。 那么,我們在以后的學(xué)習(xí)中,還會學(xué)習(xí)到數(shù)據(jù)結(jié)構(gòu)與算法、編譯原理、操作系統(tǒng)等課程,其實(shí)都是豐富我們的思想,然后再利用編程語言這個(gè)工具來表達(dá)我們的思路,這一點(diǎn)你要切記。 |
|