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