海南大學(xué) 周宇揚(yáng)
引言:隨著TD-LTE移動(dòng)通信、智能手機(jī)等軟硬件技術(shù)的發(fā)展,越來越多的益智型小程序誕生,大大的促進(jìn)了人們的娛樂生活。C語言作為一種面向過程的程序開發(fā)語言,擁有數(shù)據(jù)、指針、結(jié)構(gòu)體等多種數(shù)據(jù)類型,運(yùn)行速度非???,可移植性強(qiáng),編制游戲程序具有先天性優(yōu)勢,具有重要的作用和意義。本文基于筆者的研究和分析,首先描述C語言在游戲程序開發(fā)中的優(yōu)勢,然后以經(jīng)典益智游戲俄羅斯方塊為實(shí)例,設(shè)計(jì)了C語言數(shù)據(jù)、結(jié)構(gòu)體和鏈表,為游戲程序開發(fā)提供參考。
C語言作為一種應(yīng)用程序開發(fā)語言,擁有豐富的數(shù)據(jù)結(jié)構(gòu)類型和運(yùn)算符,并且開創(chuàng)性的提出了指針類型,實(shí)現(xiàn)計(jì)算機(jī)物理地址的運(yùn)算,進(jìn)行位操作,兼具高級(jí)程序語言和低級(jí)程序語言的優(yōu)點(diǎn),可以變現(xiàn)系統(tǒng)軟件,也可以開發(fā)應(yīng)用軟件,比如Unix操作系統(tǒng)、Linux操作系統(tǒng)、游戲程序等,利用圖形功能支持各類尺寸的顯示器和驅(qū)動(dòng)器,計(jì)算功能和邏輯判斷能力非常強(qiáng)。C語言在游戲程序開發(fā)中具有很強(qiáng)的優(yōu)勢,如下所述:
(1)面向過程程序開發(fā)。C語言是一種面向過程的語音,程序員可以使用過程或函數(shù)執(zhí)行任務(wù),面向過程語言與人們的日常思考一直,易于學(xué)習(xí)和掌握,能夠面向過程的語音開發(fā)程序,編寫算法實(shí)現(xiàn)程序功能。
(2)擁有許多庫文件。C語言提供了大量的函數(shù)程序,包括系統(tǒng)自動(dòng)生成的函數(shù)和程序語言編寫的函數(shù),C語言編譯器自帶頭文件,這些頭文件中的函數(shù)都是已經(jīng)編寫完成的基本功能,可以直接調(diào)用和使用。
(3)編譯運(yùn)行速度非常快。C語言編譯器產(chǎn)生的機(jī)器代碼運(yùn)行速度非常多,C編譯器編譯千行代碼僅需要兩秒,同時(shí)完成優(yōu)化代碼提高執(zhí)行速度功能。
俄羅斯方塊是一款風(fēng)靡全球的智能手機(jī)應(yīng)用程序,利用移動(dòng)、旋轉(zhuǎn)和擺放等功能輸出各種方塊,然后將其排列成一行或多行消除得分,俄羅斯方塊看似簡單卻變化無窮,簡單易學(xué)和益智,但是熟練掌握應(yīng)用程序操作卻需要開動(dòng)腦筋,因此目前的普及程度非常高。本文基于C語言開發(fā)俄羅斯方塊游戲程序,其主要功能包括游戲方塊預(yù)覽、游戲方框控制、游戲分?jǐn)?shù)統(tǒng)計(jì)和游戲幫助功能。
游戲程序初始化運(yùn)行開始之后,游戲方塊預(yù)覽區(qū)域出現(xiàn)一個(gè)游戲方塊,有利于玩家控制游戲策略。俄羅斯方塊有七種不同的方塊組成,因此具有七種策略,游戲方塊生成是隨機(jī)的。游戲方塊控制能夠可以實(shí)現(xiàn)方塊的自由下落、左移、快速下移、右移、旋轉(zhuǎn)和消除行。游戲分?jǐn)?shù)控制可以實(shí)現(xiàn)分?jǐn)?shù)增加,消除一行增加100分,也可以自動(dòng)化返回游戲初始界面。游戲幫助功能可以實(shí)現(xiàn)游戲操作提醒功能。俄羅斯方塊的主要算法流程如圖1所示。
圖1 俄羅斯方塊結(jié)構(gòu)化流程圖
俄羅斯方塊采用C語言開發(fā),關(guān)鍵功能是實(shí)現(xiàn)數(shù)據(jù)類型的設(shè)計(jì),其余操作實(shí)現(xiàn)簡單,數(shù)據(jù)類型包括數(shù)組、結(jié)構(gòu)體和鏈表。
(1)數(shù)組設(shè)計(jì)
C語言數(shù)組可以把具有相同類型的數(shù)據(jù)有序組織在一起。俄羅斯方塊使用了三個(gè)關(guān)鍵數(shù)組,分別是俄羅斯方塊的四個(gè)變換樣式、方塊顏色、玩家游戲得分。
(2)結(jié)構(gòu)體設(shè)計(jì)
俄羅斯方塊使用了兩個(gè)結(jié)構(gòu)體,分別是方塊結(jié)構(gòu)體Struct Block和Struct BlockInfo,Struct Block可以定義俄羅斯方塊的狀態(tài)和顏色,提示給出下一方塊的信息;Struct BlockInfo能夠定義俄羅斯方塊的移動(dòng)方向和移動(dòng)距離。
Struct Block{ unsigned int rockShapeBits;//描述方塊的形狀,8位字節(jié),每4位表示一行
Int nextRockIndex;//表示下一個(gè)方塊的數(shù)組下表}Block Type;
Struct BlockInfo { int left; int right; int translate; int drop; int speeddrop} BlockInfo Type; //描述方塊方向
(3)鏈表設(shè)計(jì)
C語言最具關(guān)鍵的程序數(shù)據(jù)類型就是指針,利用指針可以設(shè)計(jì)鏈表結(jié)構(gòu),鏈表結(jié)構(gòu)可以克服數(shù)據(jù)結(jié)構(gòu)的許多缺點(diǎn),比如使用數(shù)組必須預(yù)知數(shù)據(jù)大小,這樣很容易浪費(fèi)內(nèi)存空間。鏈表結(jié)構(gòu)則充分利用計(jì)算機(jī)的內(nèi)存空間,將所有的分散內(nèi)存空間實(shí)現(xiàn)動(dòng)態(tài)管理,俄羅斯方塊的鏈表定義如下所述fillrectangle(50+(block->x+c01)*BLOCK—LEN,50+(block一>Y+row)*BLOCK LEN。
基于C語言的俄羅斯方塊游戲采用了先進(jìn)的圖形界面組函數(shù)、數(shù)組、結(jié)構(gòu)體和指針鏈表等技術(shù),能夠?qū)崿F(xiàn)不同類型的方塊生成和加工,下左右快速移動(dòng)和旋轉(zhuǎn)變形等,也可以利用函數(shù)實(shí)現(xiàn)整行消除。俄羅斯方塊有效提升了大眾移動(dòng)設(shè)備的娛樂需求,也提高了筆者學(xué)習(xí)和掌握C語言的實(shí)踐,體會(huì)到利用C語言編程需要熟練掌握它的數(shù)據(jù)類型,也需要根據(jù)需求隨機(jī)的谷歌或百度C語言的函數(shù)庫,能夠?qū)崿F(xiàn)快速編程和編譯,讓筆者掌握更多的C語言編程設(shè)計(jì)方法。同時(shí),基于C語言設(shè)計(jì)俄羅斯方塊還可以復(fù)制到其他程序,比如貪吃蛇游戲、五子棋游戲等,一通二百通,更好的為未來C語言應(yīng)用打下基礎(chǔ)。