?

基于C語言的俄羅斯方塊游戲的設計

2018-01-10 05:49馬巧梅張麗娜
微型電腦應用 2017年12期
關鍵詞:該游戲鏈表方塊

馬巧梅, 張麗娜

(寶雞文理學院 計算機學院,寶雞 721016)

基于C語言的俄羅斯方塊游戲的設計

馬巧梅, 張麗娜

(寶雞文理學院 計算機學院,寶雞 721016)

隨著科學技術的進一步發展,益智游戲作為一種新型的休閑娛樂方式也逐步進入人們的生活?;贑語言的俄羅斯方塊游戲操作簡便、靈活、界面友好,是根據模塊化程序設計的思想而開發的一款益智游戲。闡述了游戲的設計構思,提出了游戲的功能結構圖,設計了游戲的流程圖,在構建完善的游戲構思的基礎上,實現了基于C語言的俄羅斯方塊游戲的開發,并可以成功驗證該游戲順利的運行。

C語言; 俄羅斯方塊游戲; 鏈表

0 引言

俄羅斯方塊是一款風靡全球的掌上游戲[1],由俄羅斯人阿列克謝·帕基特諾發明,故得此名。俄羅斯方塊的發明者,是當時還被稱為"蘇聯"的聯邦科學員,該游戲最初是作為自我消遣的電腦游戲而被制作出來的。俄羅斯方塊的基本規則[2]是移動、旋轉和擺放游戲自動輸出的各種方塊。使之排列成完整的一行或多行并且消除得分。它看似簡單卻變化無窮,俄羅斯方塊簡單易學,但是要熟練地掌握其中的操作與擺放技巧,難度卻不低。作為一款家喻戶曉老少皆宜的大眾游戲,其普及程度可以說是史上任何一款游戲都無法比擬的。

基于C語言的俄羅斯方塊游戲是采用C語言進行編程的[3],運用用戶圖形界面、數組及結構體和指針[4]等方法開發的一個益智類游戲。此應用程序中的方塊旋轉和整行消失等是利用了函數繪制[5]的方法。

俄羅斯方塊是一款比較簡單的游戲,在游戲過程僅需要玩家將不斷下落的各種形狀的方塊移動、翻轉,如果某一行被方塊充滿了,那就將其消除,而當窗口中無法再容納下落的方塊時,就宣告游戲的結束。

1 俄羅斯方塊游戲總體設計

1.1 俄羅斯方塊游戲的功能結構圖

基于C語言的俄羅斯方塊游戲是一款非常有趣的游戲,該游戲共包含4大模塊:游戲方塊預覽功能、游戲方塊控制功能、游戲分數控制功能和游戲幫助功能。其功能結構圖,如圖1所示。

圖1 功能結構圖

(1)游戲方塊預覽功能:在游戲過程中,當游戲底板出現一個游戲方塊時,必須在游戲方塊預覽區域中出現下一個游戲方塊,這樣有利于游戲玩家控制游戲的策略。由于在此游戲中存在7種不同的游戲方塊,所以在游戲方塊預覽區域中需要顯示隨機生成的游戲方塊[6]。

(2)游戲方塊控制功能:通過各種條件的判斷,實現對游戲方塊的左移、右移、快速下移、自由下落、旋轉功能,以及行滿消除行的功能。

(3)游戲分數控制功能:每消除一行加100分,而且游戲無上限。在游戲失敗后,游戲界面自動返回初始游戲界面。

(4)游戲幫助功能。玩家進入游戲后,將彈出本游戲如何操作的友情提示。在本游戲中,玩家可以用w、a、s、d、space鍵分別控制旋轉[7]、左移、右移、加速下移以及沉底功能,方便游戲更好的體驗。

1.2 俄羅斯方塊游戲的流程圖

1.2.1 游戲界面流程圖

俄羅斯方塊進入游戲后,游戲的先后執行流程圖如圖2所示。

圖2 游戲實現流程圖

包括游戲歡迎界面、游戲開始界面、游戲方塊預測界面、游戲說明界面。

1.2.2 清除游戲方塊流程圖

俄羅斯方塊游戲中,需要清除游戲過程中湊夠滿滿一行的方塊,其清除游戲方塊的流程圖,如圖3所示。

圖3 清除游戲方塊

1.2.3 游戲方塊下沉的流程圖

俄羅斯方塊游戲中,清除游戲過程中的方塊后,其余的游戲方塊需要下沉,其流程圖,如圖4所示。

圖4 游戲方塊下沉的流程圖

2 數組及結構體的設計

2.1 數組設計

在該程序設計中,數組是把具有相同類型的若干變量按有序的形式組織起來的一種形式。該游戲的開發共運用了3個數組,分別是方塊的4個旋轉變換的樣式、顏色和游戲得分。

2.2 結構體設計

在該程序設計中,該游戲的開發共運用了2個結構體:struct BLOCK;//定義當前方塊的狀態和顏色及下一方塊的信息;struct BLOCKINFO;//定義方塊移動的方向和距離。

2.3 鏈表設計

在該程序設計中,使用鏈表結構可以克服數組鏈表需要預先知道數據大小的缺點,鏈表結構可以充分利用計算機內存空間,實現靈活的內存動態管理。該游戲的開發運用了1個鏈表: fillrectangle(50 + (block->x + col) * BLOCK_LEN, 50 + (block->y + row) * BLOCK_LEN。

3 游戲界面及功能的實現

3.1 用戶登錄界面

用戶進入俄羅斯方塊游戲程序,首先彈出游戲主界面。

3.2 游戲主界面

用戶進入游戲主界面后,通過主界面上的游戲說明提示開始游戲,游戲開始界面,如圖5所示。

圖5 游戲開始界面

按下回車鍵將開始游戲;界面顯示每次的得分情況,并累計到總分。游戲運行界面,如圖6所示。

圖6 游戲運行界面

3.3 游戲操作

基于C語言的俄羅斯方塊游戲進入游戲主界面后,進行如下操作:

1. 在游戲主界面上按回車鍵開始游戲,進入游戲;

2. 方塊形狀轉換操作:良好的方塊形狀設計,繪制七種

常見的基本圖形即長條形、Z字形、反Z形、田字形、7字形、反7形、T字型,各個方塊變形時,還可設為順時針或逆時針變形,一般為逆時針。方塊變換的形狀生成圖,如如圖7所示。

圖7 方塊變換生成圖

3. 鍵盤處理事件:方塊下落時,可通過鍵盤w、a、s、d、space鍵對該方塊進行向上(變形)、向下(加速)、向左、向右移動,以及沉底。

4. 消行操作:當方塊落到游戲界面最底部并且鋪滿最后1行,就能消去所在這1行,積分增加100分,每消除1行,系統判定增加100分,一次最多消除4行。消除方法是利用函數循環檢測是否滿行,將滿行的1行參數輸出到消行函數中,函數進行截屏并且下移,達到消除的目的。

4 總結

為了滿足大眾用戶精神娛樂的需求,基于C語言的俄羅斯方塊游戲的設計,基本上已經達到了預期的目標。分析了俄羅斯方塊游戲開發中C語言程序及指針和鏈表的一些關鍵技術,實現了游戲過程中游戲的消行和重得分的設置,該應用程序的主要功能已基本完善,是一款值得推薦的益智游戲。

[1] 翟亞靜,成麗君.基于Android的2048小游戲的簡單實現[J].電子技術與軟件工程,2017(12):251-252.

[2] 馬麗,薛根奇,呂海蓮. 基于Qt組件的俄羅斯方塊設計[J]. 電子設計工程,2016(12):27-30.

[3] 孟蕓,朱肖安,羅劉敏,徐音.基于C語言的俄羅斯方塊的設計與實現[J].硅谷,2014(23):19-20

[4] 許燕.基于lua和corona框架的趣味手機游戲的設計與實現[J].電腦知識與技術,2015(25):47-49 .

[5] 趙巧妮. 基于Proteus的俄羅斯方塊電路的設計和仿真[J].微型電腦應用,2016(8):59-60.

[6] 溫濤陳夠喜李瑞林.互動式《俄羅斯方塊》游戲安全隱寫[J]. 電子技術應用,2016(4):120-123.

[7] 申月莉,楊春雨.基于Android的俄羅斯方塊軟件關鍵技術研究[J].洛陽師范學院學報,2016(2):54-58.

DesignandImplementationofJava-basedBricksGames

Ma Qiaomei, Zhang Lina

(College of Computer, Baoji University of Arts and Sciences, Baoji 721016, China)

With the further development of the science and technology, educational games as a new way of entertainment also gradually go into the life of people. Tetris game is developed according to C-language graphical user interface, it requires easy operation, flexibility, friendly interface, etc. The design idea of game is expounded, and the function structure of the game is put forward, and the flow chart of the game is designed in this paper. On the basis of analysis of constructing a perfect game idea. C-language-based Tetris game is achieved finally, it can successfully verify the game can run smoothly.

C-language; Tetris game; Chained list

1007-757X(2017)12-0007-03

國家青年科學基金資助項目(61402015);陜西省自然科學基礎研究項目(2017JM6048);陜西省寶雞市科研計劃項目(16RKX1-3);寶雞文理學院校級重點項目(ZK2017011)

馬巧梅(1983-),女,講師,碩士,研究方向:數據庫、網絡與信息安全。

張麗娜(1983-),女,碩士,講師,研究方向:數字信號處理、物聯網應用。

TP391

A

2017.09.23)

猜你喜歡
該游戲鏈表方塊
有多少個方塊
不一樣的方塊橋
謎題方塊
基于二進制鏈表的粗糙集屬性約簡
跟麥咭學編程
基于MTF規則的非阻塞自組織鏈表
C++的基于函數模板實現單向鏈表
一道2014年上海高考題的探究
好大的方塊糖
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合