国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Qt4的掃雷游戲的設(shè)計與實現(xiàn)

2012-08-08 02:31鄧志良
關(guān)鍵詞:圖形用戶界面方塊鼠標(biāo)

柯 勝,孫 進(jìn),鄧志良

(1.江蘇科技大學(xué),江蘇 鎮(zhèn)江 2120031;2.常州信息職業(yè)技術(shù)學(xué)院,江蘇 常州 213164)

最初以訓(xùn)練鼠標(biāo)操作為目的而設(shè)計的掃雷游戲是一款經(jīng)久不衰的Windows平臺休閑游戲。盡管Windows操作系統(tǒng)經(jīng)歷數(shù)次換代,變得越來越龐大、復(fù)雜,但這個可愛的小游戲在任何版本的Windows操作系統(tǒng)里卻依然保持著原貌,幾乎每個電腦使用者都接觸過[1]。

Qt是諾基亞開發(fā)的一個跨平臺的C++圖形用戶界面應(yīng)用程序框架。它為應(yīng)用程序開發(fā)者提供建立藝術(shù)級的圖形用戶界面所需的所有功能。Qt是完全面向?qū)ο蟮?,很容易擴(kuò)展,并且允許真正地組件編程。自1996年,Qt進(jìn)入商業(yè)領(lǐng)域,它已經(jīng)成為全世界范圍內(nèi)數(shù)千種成功的應(yīng)用程序的基礎(chǔ)。Qt也是流行的Linux桌面環(huán)境KDE的基礎(chǔ)?;旧希琎t與X Window上的Motif、Openwin、GTK等圖形界面庫和 Windows平臺上的 MFC、OWL、VCL、ATL屬同類型,但 Qt具有優(yōu)良的跨平臺特性、面向?qū)ο蟆⒇S富的API、大量的開發(fā)文檔等優(yōu)點[2]。

本課題是在Linux系統(tǒng)下設(shè)計并開發(fā)的,設(shè)計了一款基于Qt環(huán)境的掃雷游戲,使用了C++語言程序。

1 掃雷游戲主界面的設(shè)計

游戲主界面由菜單、游戲區(qū)、按鈕區(qū)、信息顯示區(qū)等幾部分構(gòu)成,如圖1所示。Qt提供了一套完整的GUI模塊,能夠完成基本的Windows窗體應(yīng)用程序,因此可以簡單地為掃雷程序制作出界面[3]。圖1主要通過子類化QmainWindow創(chuàng)建掃雷游戲應(yīng)用程序用戶界面。Qt還提供了定時器,能夠完成游戲的計時。

2 鼠標(biāo)事件的處理

當(dāng)點擊鼠標(biāo)左鍵時,設(shè)置ok_flag_為true,說明此方塊進(jìn)行了翻開操作。如果方塊是地雷,發(fā)出一個explode()信號;如果不是地雷,發(fā)出一個safe()信號,同時顯示數(shù)字。這動作應(yīng)當(dāng)在ok_flag_無效且mark_flag_也無效的前提下進(jìn)行,因為如果ok_flag_有效,則說明此方塊已經(jīng)翻開了,沒有必要重做;如果mark_flag_有效,則說明玩家標(biāo)志此方塊有雷,不應(yīng)該去翻開,否則即為自取滅亡。

點擊鼠標(biāo)右鍵進(jìn)行旗幟安插或者移除操作應(yīng)該在ok_flag_無效的前提下進(jìn)行,因為對于一個已經(jīng)翻開的方塊,安插毫無意義。

類的定義如下:

下面是代碼實現(xiàn)部分:

設(shè)計的實現(xiàn)比較簡單,需要說明的是本文模擬的鼠標(biāo)事件并不是單擊而是按下,這對于掃雷已經(jīng)足夠了。同時,會發(fā)現(xiàn)兩個信號函數(shù)沒有實現(xiàn),這個工作會由moc自動完成,因此不必在.cpp中實現(xiàn),并且它們永遠(yuǎn)不會有返回值(即 void)。

3 初始化

3.1 雷區(qū)/非雷區(qū)的產(chǎn)生

下面是BlockArea的構(gòu)造函數(shù):

3.2 周邊雷數(shù)的計算

要計算(x,y)位置周邊地雷的個數(shù),首先需計算出一個點,然后判斷此點是否落在BlockArea中,如果落在BlockArea中,再判斷是否是雷,如果是,則計數(shù)器加1。

該掃雷游戲在Qt4和Red Hat Enterprise Linux 4操作系統(tǒng)上成功實現(xiàn),能在Windows和Linux平臺下運行。除能實現(xiàn)基本的左鍵打開、右鍵標(biāo)記的掃雷功能以外,還能實現(xiàn)計時、自定義游戲難度、作弊、語音提示等擴(kuò)展功能。經(jīng)過試驗測試,界面美觀,結(jié)果正確,各項功能達(dá)到游戲要求。該實現(xiàn)方法對其他基于Qt的游戲開發(fā)起到了拋磚引玉的作用,其中的鍵盤、鼠標(biāo)等功能的實現(xiàn)方法可用于其他Qt編程,同時對各專業(yè)人員借助Qt快速開發(fā)具備強(qiáng)大計算機(jī)功能的專業(yè)應(yīng)用軟件具有重要的意義。

[1]陳子為.基于 Matlab GUI掃雷游戲的設(shè)計與實現(xiàn)[J].現(xiàn)代電子技術(shù),2008(24):85-88.

[2]BLANCHETTE J,SUMMERFIELD M.C++GUI QT4 編程(第二版)[M].北京:電子工業(yè)出版社,2008.

[3]張建強(qiáng),張秀梅.掃雷游戲策略初探[J].數(shù)學(xué)教學(xué),2004(6):32-33.

[4]成潔,盧紫毅.Linux窗口程序設(shè)計——Qt精彩實例分析[M].北京:清華大學(xué)出版社,2008.

[5]趙大偉,肖周芳,張艷.從掃雷游戲淺談一些算法問題[J].科技信息,2008(29):69.

[6]錢會敏,于守秋.自動掃雷算法淺談[J].科技創(chuàng)新導(dǎo)報,2009(31):250.

[7]劉艷青,蘇桂蓮.基于Qt4的圖形用戶界面程序的設(shè)計與實現(xiàn)[J].現(xiàn)代計算機(jī)(專業(yè)版),2009(3):170-172.

猜你喜歡
圖形用戶界面方塊鼠標(biāo)
有多少個方塊
不一樣的方塊橋
Java圖形用戶界面編程在文本格式化設(shè)置系統(tǒng)中的教學(xué)研究
謎題方塊
淺談圖形用戶界面的保護(hù)
sgRNAcas9軟件圖形用戶界面開發(fā)及應(yīng)用
鼠標(biāo)折疊筆
MiniGUI在基于OMAP5912開發(fā)板上的移植
45歲的鼠標(biāo)
超能力鼠標(biāo)