用了三天時間,大概十個小時,終于把我的第一個游戲,彈球游戲從內(nèi)核編程到圖形聲音包裝做了出來,還是有很多感觸的。 現(xiàn)在不怎么玩游戲了,但小時候特別喜歡玩,小學(xué)畢業(yè)升初中那會兒我同學(xué)都準(zhǔn)備去報一個PASCAL編程班,我當(dāng)時什么都不懂,還以為就 是編游戲,特別開心,立刻就跟過去報名了。 上課以后才知道什么叫編程,與同學(xué)不同的是他們大多數(shù)以前都學(xué)過BASIC編程,對程序都有基礎(chǔ),我卻什么都不懂。 那時候老師教學(xué)方式和現(xiàn)在完全不同,上課只有一個目的,編程。對于語法,細(xì)節(jié)問題沒有什么深究,考試都是開卷的,語法不懂可以看 書,但是算法卻一定要自己想,我想一種結(jié)構(gòu)化程序設(shè)計的思想應(yīng)該就是那時打下的。 PASCAL后來學(xué)到數(shù)組函數(shù)文件就沒學(xué)了,高中看過一點c語言,但是指針一直沒有搞懂。 大學(xué)c語言課老師的教法我不敢茍同,搞得c語言只是一個用來考試的工具,他的實用性和趣味性給完全抹殺了。 當(dāng)時一直在想,c語言到底怎么編游戲呢? 后來看了一些書,又在網(wǎng)上找了一些資料,發(fā)現(xiàn)游戲編程實在復(fù)雜,首先需要懂一門程序語言,c/c++,java各有優(yōu)勢。然后需要會用圖形 庫,比如OPENGL或者directX,然后是數(shù)據(jù)庫,最重要的還是美工。什么ps,會聲會影肯定要會。 很明顯,上面的東西我一大半不會。 那我就不能編游戲了嘛?從文字到圖形是一個怎樣的飛躍? 普及一個常識,我們通常的編程是在文本模式下完成的,而游戲牽扯的圖形編程必須在圖形模式下實現(xiàn),這就需要圖形庫。 很明顯,openGL,directX這些大型圖形庫我都不會,那怎么樣才能以最低的門檻成功的繪制圖形呢? 上網(wǎng)找了半天,發(fā)現(xiàn)一款叫做easyx的軟件可以把turbo c的圖形庫加載在visual c++6.0上,而TC的圖形庫編程還是很簡單的,通過簡單的 畫線,畫矩形,畫圓就可以實現(xiàn)畫圖。 圖形是游戲的基礎(chǔ),但是光有圖還不行,還要實現(xiàn)運動,即動畫,實現(xiàn)動畫是一個很有挑戰(zhàn)性的技術(shù)。 一般來講,有三種實現(xiàn)動畫的方法。 第一種,全局重畫法,把動畫分成一幀一幀的然后每一幀顯示后延遲幾毫秒,把前一張擦去,畫后一張。這種方法重復(fù)勞動嚴(yán)重,不推薦。 第二種,局部重畫法,即把整張圖中變化的部分重畫即可。我的彈球游戲1,2,3版本都是用的這種方法。
第三種,按位異或重畫法,利用位運算中的異或運算重畫,節(jié)約時間效率高并且不會覆蓋背景,我的最終版本就是這種方法畫的。 解決了動畫,很大程度上就解決了游戲。 最后加入控制系統(tǒng),判斷系統(tǒng),計時系統(tǒng),等等,加上美工,就可以做出小游戲作品。 但是這樣的游戲還是很不完善的,功能少,效率低,有時還會閃屏。解決這些問題我目前還不會,以后可以研究研究。 附錄1:四個版本游戲的比較: V1.1:簡單的上下移動,把程序的內(nèi)核部分編好了。
V1.2:加入顏色元素,版可以上下左右移動,但是有較多BUG,是一個不完善的版本。  V1.3:加入開頭效果,解決了大部分BUG,加入聲音元素,使可玩性大大提高。  V1.4:圖形界面重新設(shè)計,修復(fù)BUG,加入了進球特效,游戲趨于完整。 
總之,編一個游戲真不容易,我也只是興趣愛好,有興趣的同學(xué)可以和我一起,推薦一下百度的easyx貼吧,里面的教程挺好的,不要把c語言只當(dāng)做一個考試工具,其實他是非常強大的! 附錄2:游戲及源代碼下載地址: http://www.rayfile.com/files/4a6629a6-9652-11e0-8913-0015c55db73d/
|