freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

連連看游戲設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)(編輯修改稿)

2024-07-15 15:04 本頁面
 

【文章內(nèi)容簡介】 :一個信號的簽名必須與它的接收槽的簽名相匹配。實(shí)際上一個槽的簽名可以比它接收的信號的簽名少,因?yàn)樗梢院雎灶~外的簽名。因?yàn)楹灻且恢碌?,編譯器就可以幫助檢測類型是否匹配。信號和槽是寬松地聯(lián)系在一起的:一個發(fā)射信號的類不用知道哪個槽要接收這個信號。Qt的信號和槽的機(jī)制可以保證如果把一個信號和一個槽連接起來,槽會在正確的時間使用信號的參數(shù)而被調(diào)用。信號和槽可以使用任何數(shù)量、任何類型的參數(shù)。它們是完全類型安全的,不會再有回調(diào)核心轉(zhuǎn)儲。從QObject類或者它的一個子類(比如QWidget類)繼承的所有類都可以包含信號槽。當(dāng)對象的狀態(tài)發(fā)生改變的時候,信號被發(fā)送給其它對象,從而實(shí)現(xiàn)了該對象與其它對象的通信。對象在發(fā)射信號時,無須知道有沒有槽接收它所發(fā)射的信號,而槽是正常的成員函數(shù),一個槽不知道它是否被任何信號連接,這就是信息封裝,這種封裝確保了對象可以用作一個軟件組件。此外,使用對象時也無須知道這種通訊機(jī)制的實(shí)現(xiàn)細(xì)節(jié)。在信號—槽機(jī)制實(shí)現(xiàn)的過程中,可以把許多信號和單一槽相連,也可以把一個信號和許多槽相連。把一個信號和另一個信號直接相連也是可以的。(這時,只要第一個信號被發(fā)射時,第二個信號立刻就被發(fā)射)??傮w來看,信號和槽構(gòu)成了一個強(qiáng)有力的組件編程機(jī)制??偨Y(jié):介于qt強(qiáng)大的類庫和完善的通信機(jī)制,為連連看的設(shè)計(jì)提供了良好的平臺環(huán)境,便于程序的設(shè)計(jì)與實(shí)現(xiàn),故使用QT平臺。 需求分析 環(huán)境分析本系統(tǒng)的軟件開發(fā)環(huán)境是windows7操作系統(tǒng)下, Create版本,使用c++語言來開發(fā)。本系統(tǒng)的硬件開發(fā)環(huán)境是HP筆記本6450b:由于用戶對UI比較敏感,一般情況下,用戶對程序的第一印象就是來自于UI的展示,無論游戲的邏輯和功能再怎么強(qiáng)大,如果你的UI設(shè)計(jì)的粗糙,晦澀,讓人無法賞心悅目的話,這就是一個失敗的程序,用戶的體驗(yàn)立即下降,針對游戲來說更是看中UI的設(shè)計(jì),游戲的成功與否,一大半來自于界面,為了實(shí)現(xiàn)簡潔的UI,我選擇了藍(lán)色為主色調(diào),看起來賞心悅目,心曠神怡。同時難度、時間、得分提示分布均勻,按鈕排布清晰,給用戶一個清爽友好的界面。:一款經(jīng)典的游戲總是少不了音樂的配合,游戲和音樂總像是天生的一對,形影不離,美妙的音樂能夠激發(fā)玩家的游戲斗志和激情,因此音樂的配合就必不可少了,當(dāng)玩家打開程序時候,悠揚(yáng)的歌曲就呼之欲出,像一陣清風(fēng)徐徐而來,不驚波瀾,立即把玩家?guī)脒B連看的游戲世界,當(dāng)玩家點(diǎn)擊開始游戲,正式開始游戲的時候,點(diǎn)擊圖片會有提示音,當(dāng)成功消除一對圖片的時候,會有相應(yīng)的提示音播放。:本連連看程序?qū)崿F(xiàn)了游戲時間的提示功能,同時創(chuàng)新實(shí)現(xiàn)了游戲獎勵的新規(guī)則,當(dāng)玩家消除一對圖片的時候就給予一定的獎勵時間,給玩家在游戲中帶來欣喜,提高消除圖片的積極性。尤其是在時間即將耗盡的時候,這種感覺更是突出,滿足了玩家的游戲持續(xù)性的需求。:當(dāng)玩家過五關(guān)斬六將后,總會有思路茫然的時候,無法再找出可以消除的圖片,為了不使玩家陷入這種困惑,從而降低游戲的積極性,提示的功能就呼之欲出,提示的功能可以在玩家處于這種困惑的時候,能夠帶領(lǐng)玩家沖破屏障,再次開始順利的消除圖片。當(dāng)然為了防止玩家偷懶,提示的次數(shù)也是有限的。:由于連連看的圖片的生成是隨機(jī)的,圖片在數(shù)組中隨機(jī)排列以及玩家的隨機(jī)消除選擇,導(dǎo)致剩余圖片的消除有可能無法滿足消除原則,玩家面臨著有圖片但是不能消除的困惑,所以這時候重置的需求,不言而喻,通過設(shè)置重置按鈕,點(diǎn)擊重置按鈕玩家就能夠成功的實(shí)現(xiàn)圖片的再次隨機(jī)生成,當(dāng)然重新生成的圖片再次出現(xiàn)僵局的概率很低,所以一般情況下總能通過一次的重置來破解僵局,為了避免玩家通過重排來獲取游戲的捷徑,玩家的重置次數(shù)是有限定的。、難度調(diào)節(jié)的需求:得分記錄、難度調(diào)節(jié)這是游戲的基本功能,得分記錄可以通過數(shù)據(jù)的方式記載玩家的游戲進(jìn)度,不同玩家之間通過得分競爭頭名,提高玩家的積極性,難度可以避免一款游戲競爭力單一,玩家通過游戲太隨意,設(shè)置難度功能可以提高游戲的刺激性,激勵玩家。、重新開始、退出等基本功能的需求:開始,重新開始,還有退出,這些是游戲的基本功能,這些需求也是必須應(yīng)該實(shí)現(xiàn)的。當(dāng)玩家點(diǎn)擊一對可以消除的圖片時,能夠立刻播放消除音樂,并且能夠迅速的將圖片消除。滿足響應(yīng)時間的要求,當(dāng)然對于這款小游戲來說由于地圖中存放的數(shù)據(jù)本身就是一個小數(shù)量級,計(jì)算機(jī)處理起來當(dāng)然是綽綽有余。可靠性需求定量地指定系統(tǒng)的可靠性。 可用性與可靠性密切相關(guān),它量化了用戶可以使用系統(tǒng)的程度,連連看游戲首先必須保證游戲能夠按照設(shè)定的規(guī)則順利完成游戲,其次才是對連連看游戲的優(yōu)化,否則一款游戲不能保證游戲的規(guī)則性,它的吸引力就會瞬間下降。3. 游戲概要設(shè)計(jì) 任務(wù)概述 目標(biāo)設(shè)計(jì)軟件的結(jié)構(gòu),包括組成模塊,模塊的層次結(jié)構(gòu),模塊的調(diào)用關(guān)系,每個模塊的功能等等。同時,還要設(shè)計(jì)該項(xiàng)目的應(yīng)用系統(tǒng)的總體數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)庫結(jié)構(gòu),即應(yīng)用系統(tǒng)要存儲什么數(shù)據(jù),這些數(shù)據(jù)是什么樣的結(jié)構(gòu),它們之間有什么關(guān)系。由于本程序沒有涉及到數(shù)據(jù)庫,所以這一塊就省略了。 需求概述首先界面應(yīng)該美觀,游戲的背景音樂應(yīng)該實(shí)現(xiàn),其次連連看的地圖應(yīng)該隨機(jī)生成,良好的消除算法,提示功能,重置功能,得分記錄難度還有游戲的基本設(shè)置功能,最后是創(chuàng)新的獎勵時間的功能。 總體設(shè)計(jì) 處理流程游戲流程描述:當(dāng)玩家打開游戲時,主界面上有菜單欄兩枚,一個是游戲,另一個是幫助,游戲中包含三個菜單項(xiàng),開始游戲,重新開始,退出,開始游戲是游戲的入口,當(dāng)玩家點(diǎn)擊開始游戲之后,就可以正常進(jìn)入游戲,在游戲過程中可以選擇重新開始,游戲便進(jìn)入全新載入的模式;正常進(jìn)入游戲時,游戲播放背景音樂,時間進(jìn)度條提示游戲剩余時間,玩家可以點(diǎn)擊消除圖片,同樣在點(diǎn)擊圖片時有點(diǎn)擊音樂播放,在游戲結(jié)束后提示游戲勝負(fù),提示過后,等待玩家再次開始游戲;游戲過程中,當(dāng)玩家需要提示的時候,可以點(diǎn)擊提示按鈕,程序會用背景色提示玩家消除圖片,玩家點(diǎn)擊后可以消除。當(dāng)玩家需要重排圖片時候,點(diǎn)擊重排便可以重新載入圖片;當(dāng)然在游戲過程中玩家可以隨時退出游戲。如圖31圖31 系統(tǒng)結(jié)構(gòu)圖對應(yīng)于需求分析,可以把程序分成四個模塊:游戲界面的設(shè)計(jì),圖片初始化的生成,圖片路徑的判斷,背景音樂模塊,如圖32圖32 游戲界面模塊設(shè)計(jì)本程序的界面上的控件比較少,界面的布局相對來說也比較容易,主要是按鈕、菜單欄、提示標(biāo)簽、進(jìn)度條的實(shí)現(xiàn),還有就是背景顏色的選擇。1.功能上:上方時菜單欄menubar控件,里面是菜單項(xiàng);稍下一點(diǎn)的位置是Qlabel控件用于提示難度、得分等當(dāng)前游戲的狀態(tài),其中有一個控件是QProgressBar,用來顯示游戲時間的狀態(tài)。右側(cè)是一些游戲中用到的兩個按鈕,提示和重排。主窗體的大半部分是由10*10的按鈕構(gòu)成的,這些按鈕就是后期圖片的擺放位置。綜上,界面大致分為三塊,菜單欄、提示欄(包括特殊按鈕)、游戲點(diǎn)擊中心。2.背景上:為了達(dá)到簡潔和大氣的目的,也為了適合玩家的色彩習(xí)慣,我選擇了天藍(lán)色作為背景顏色,給人眼前一亮的感覺。 圖片的隨機(jī)生成首先游戲中心是由10*10的按鈕構(gòu)成的,要想在按鈕中顯示圖片同時還便于圖片在系統(tǒng)中的使用,這里通過數(shù)字和圖片綁定的方式,實(shí)現(xiàn)圖片在按鈕上的排布,圖片的加載需要url,我們通過提前將圖片編號(125),然后將圖片存放在同一路徑下,通過一個統(tǒng)一的字符串前綴實(shí)現(xiàn)圖片的統(tǒng)一加載,而在統(tǒng)一字符串中只含一個整形變量,圖片的標(biāo)號和變量匹配,將圖片和變量相綁定,這樣就簡化了圖片的使用。將數(shù)字存放在數(shù)組中,并且嚴(yán)格按照成對的方式存放圖片,因?yàn)檫B連看游戲的前提是消除成對圖片。這樣容量為100的數(shù)組可以存放4組圖片,共計(jì)2對,這樣前期的按序存放圖片就完成了。其次,按照上述方式存放的圖片是嚴(yán)格規(guī)律順序排布的,這樣顯然不能滿足圖片的隨機(jī)性,為了實(shí)現(xiàn)隨機(jī),這就需要將圖片的存放順序打亂。隨機(jī)函數(shù)可以很好的解決這個問題,首先應(yīng)用隨機(jī)函數(shù)產(chǎn)生一個下標(biāo)在數(shù)組容量范圍內(nèi)的整形數(shù)字(0100),同時遍歷整個數(shù)組,將隨機(jī)下標(biāo)對應(yīng)的值和遍歷下標(biāo)對應(yīng)的值相互交換,當(dāng)數(shù)組遍歷完畢,那么整個數(shù)組中的值已經(jīng)打亂,實(shí)現(xiàn)了亂序、隨機(jī)性。 圖片消除路徑判斷根據(jù)連連看的游戲規(guī)則(游戲“連連看”,只要將相同花色的兩張牌用三根以內(nèi)的直線連在一起就可以消除),現(xiàn)在需要設(shè)計(jì)一個算法來判斷圖案能否消除,首先連連看第一個條件是圖案相同,如果選擇的圖案不同,那么游戲不再進(jìn)行判斷,其次游戲最核心的是判斷當(dāng)圖案相同的時候圖案能否在不超過2個轉(zhuǎn)角或是不超過3條直線的情況下相連。根據(jù)轉(zhuǎn)角數(shù)不得超過2個的規(guī)則,我們可以分為轉(zhuǎn)角數(shù)分別為0個、1個、2個這三種情況分別討論。0轉(zhuǎn)角連通(直線連通):兩個圖片的縱坐標(biāo)或橫坐標(biāo)相等,且兩者連線間沒有其他圖案阻隔。(紅色塊為欲消除塊),如圖33圖33一個轉(zhuǎn)角連通:其實(shí)相當(dāng)于兩個圖片劃出一個矩形,這兩個圖片是一對對角頂點(diǎn),另外兩個頂點(diǎn)如果可以同時和這兩個棋子直連,那就說明可以一折連通。(紅色塊為欲消除塊,黑色代表其他阻攔塊,圓圈代表折點(diǎn)),如圖34圖34兩個轉(zhuǎn)角連通: 判斷圖片A與圖片B能否經(jīng)過有兩個轉(zhuǎn)角的路徑連通實(shí)質(zhì)上可以轉(zhuǎn)化為判斷能否找到一個點(diǎn)C,這個C點(diǎn)與A可以直線連通,且C與B可以通過有一個轉(zhuǎn)角的路徑連通。這樣就將問題轉(zhuǎn)化為了0個轉(zhuǎn)角和1個轉(zhuǎn)角的情況,0個轉(zhuǎn)角可以直接相連,1個轉(zhuǎn)角可以轉(zhuǎn)化為以C點(diǎn)和B點(diǎn)為對頂角的矩形中尋找另外兩個對頂角之一,看能否分別和B、C相直連。若能找到這樣一個C點(diǎn),那么A與B就可以經(jīng)過有兩個轉(zhuǎn)角的路徑連通 。判斷是否經(jīng)兩個轉(zhuǎn)角連通的算法需要做兩個方向上的掃描:水平掃描和垂直掃描。水平掃描。為了判斷A,B能否通過2個轉(zhuǎn)角連通,則從A開始在水平方向上向左右掃描,并判斷經(jīng)過的點(diǎn)能否與B點(diǎn)經(jīng)過1個轉(zhuǎn)角連通。顯然C點(diǎn)能與B點(diǎn)經(jīng)1個轉(zhuǎn)角連通,故A,B能經(jīng)2個轉(zhuǎn)角連通。(紅色塊為欲消除塊,黑色代表其他阻攔塊,黃色c代表折點(diǎn),綠色代表折線),如圖35圖35垂直掃描。為了判斷A,B能否通過2個轉(zhuǎn)角連通,則從A開始在垂直方向上下掃描,并判斷經(jīng)過的點(diǎn)能否與B點(diǎn)經(jīng)過1個轉(zhuǎn)角連通。顯然C點(diǎn)能與B點(diǎn)經(jīng)1個轉(zhuǎn)角連通,故A,B能經(jīng)2個轉(zhuǎn)角連通(紅色塊為欲消除塊,黑色代表其他阻攔塊,黃色c代表折點(diǎn),綠色代表折線),如圖36圖36這里運(yùn)用的就是分類判斷的方法涵蓋全部的路徑可能,事實(shí)證明該算法正確無誤。 背景音樂的模塊背景音樂的設(shè)計(jì)較為簡單,主要出現(xiàn)在游戲剛開始的階段和游戲進(jìn)行中的消除階段,這個模塊可以獨(dú)立設(shè)計(jì),添加合適的音樂,作為后期模塊集成時候使用。音效的設(shè)置采用Qt中支持的Phonon多媒體框架,可以直接采用Phonon類的MediaObject方法來創(chuàng)建聲音對象,然后使用該類的createPlayer()方法來設(shè)置對應(yīng)的音樂文件,成功后就可以直接使用play來播放了??傊?,背景音樂是利用系統(tǒng)現(xiàn)有的類,調(diào)用相應(yīng)的方法實(shí)現(xiàn)音樂的播放?!?. 詳細(xì)設(shè)計(jì) 視圖層設(shè)計(jì) 界面效果圖,如圖41圖41 思路由于QT在圖形方面處理比較強(qiáng)大,主界面的設(shè)計(jì)可以用QT設(shè)計(jì)器自帶的ui設(shè)計(jì)界面來實(shí)現(xiàn),使用ui設(shè)計(jì)界面最大的優(yōu)勢是減少代碼的編寫量,程序員可以將大部分的精力用于邏輯算法的設(shè)計(jì),不必考慮界面的布局。 邏輯層設(shè)計(jì) 圖片偶數(shù)對存放以及隨機(jī)生成首先圖片需要實(shí)現(xiàn)存放,存放的方式是以偶數(shù)對的形式存放,因?yàn)檫B連看的圖片是表格式的,因此使用二維數(shù)組存放圖片是比較合理的。下述代碼是圖片存放的實(shí)現(xiàn)。Game::GameStatus = Game::PLAYING。 int i,j = 0。 int save[50 * 50]。 for (i = 0。 i Game::sizeX * Game::sizeY。 i += 2) { save[i] = j % 25 + 1。 save[i + 1] = j % 25 + 1。 ++j。 }//在10*10的數(shù)組內(nèi) 存偶數(shù)對圖片 25*4 圖片的存放事實(shí)上是通過和數(shù)組對應(yīng)的原則實(shí)現(xiàn)轉(zhuǎn)換的,0代表沒有圖片,125代表圖片的序號,通過設(shè)置統(tǒng)一字符串,將圖片的序號作為變量,可以將圖片依據(jù)名字引用到button上,然后主界面上的圖片通過button來顯示,下述代碼是圖片和數(shù)組對應(yīng)的實(shí)現(xiàn)以及圖片的引用。void MainWindow::startGame(){ for (int i = 0。 i ()。 i++) { MainWindow::image[i] = new QPushButton (this)。 image[i]setGeometry(x + size * (i % ()), y + size * (i / ()), size, size)。 QString ch(:Images/)。 ch = ch + QString::number(map[i]) + QString (.png)。 QPixmap pixmap (ch)。 QIcon icon (pixmap)。 image[i]setIcon(icon)。 image[i]setIconSize(QSize (size, size))。 image[i]show()。 image[i]setPalette(QPalette(Qt::lightGray))。 //設(shè)置選中顏色 lightGray connect(image[i], SIGNAL (clicked ()), this, SLOT (on_image_click()))。 }}
點(diǎn)擊復(fù)制文檔內(nèi)容
范文總結(jié)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1