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

正文內(nèi)容

連連看游戲設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)-wenkub.com

2025-06-15 15:04 本頁面
   

【正文】 在這個過程中,我認(rèn)真研究了c++和qt,學(xué)會了布局管理器、二維繪圖模型、信號和槽,建立了從需求分析到測試的嚴(yán)格的開發(fā)程序的概念,規(guī)范了程序編寫的步驟,提高了自己實(shí)際動手的能力,最終實(shí)現(xiàn)了小程序,這令我感到很欣慰。有了良好的算法,熟悉了編程語言,編程環(huán)境,那么剩下的任務(wù)就是努力編程了,在克服了大量的語法錯誤帶來的失敗感后,我成功將核心模塊實(shí)現(xiàn)了,并且能夠使用,模塊間傳遞的數(shù)據(jù)也準(zhǔn)確無誤,這給我?guī)砹撕艽蟮淖孕判摹?(2)系統(tǒng)響應(yīng)較快,運(yùn)行較穩(wěn)定在系統(tǒng)運(yùn)行時,游戲過程中的消息響應(yīng)處理很快,且系統(tǒng)整體運(yùn)行安全且穩(wěn)定。(3)對程序整個模塊進(jìn)行測試:測試方法:用QT打開程序,打開游戲,運(yùn)行游戲進(jìn)行測試。4)消除提示模塊:測試方法:點(diǎn)擊系統(tǒng)提示按鈕,進(jìn)行測試。2)音效模塊:測試方法:運(yùn)行游戲,點(diǎn)擊游戲主界面的圖,進(jìn)行測試。 連連看游戲系統(tǒng)測試(1)測試環(huán)境:windows操作系統(tǒng),QT平臺環(huán)境(2)對程序單個模塊進(jìn)行測試:1)開始游戲、重新開始模塊:測試方法:點(diǎn)擊開始游戲,運(yùn)行游戲。集成測試通??梢苑譃榉窃隽渴郊珊驮隽渴郊?。白盒測試常用的技術(shù)有邏輯覆蓋、循環(huán)覆蓋和基本路徑測試等。黑盒測試法也稱功能測試或數(shù)據(jù)驅(qū)動測試,其是在完全不考慮軟件的內(nèi)部結(jié)構(gòu)和特性的情況下,測試軟件的外部特性。(5)生成測試報告。測試大綱是測試的依據(jù)。一個規(guī)范化的測試過程通常包括以下基本的測試活動:(1)制定測試計(jì)劃。}5. 游戲測試 軟件測試 軟件測試簡介測試是軟件開發(fā)過程中的一個非常重要的環(huán)節(jié)。}Player::~Player(){}void Player::start(){ musicplay()。 if (uipbrTimevalue() = 0) { ()。 btnNextsetPalette(QPalette(Qt::white))。 btnNextsetPalette(QPalette(Qt::white))。 if (()) { ()。 delete (btnNext)。獎勵時間的設(shè)置同樣是給進(jìn)度條添加相應(yīng)的長度,反映到時間上就增加了時間。 startY == endY) || Game::myMap[startX][startY] != Game::myMap[endX][endY]) { continue。 endY++) { memset (used, false, sizeof (used))。 startY++) { for (endX = 1。endY){ for (startX = 1。//white }}bool Game::Tip(int amp。 uilblTipsetText(QString::number(()))。 }}}} 提示按鈕實(shí)現(xiàn)提示按鈕關(guān)鍵是要實(shí)現(xiàn)圖片的提示功能,找到可以連接的圖片,這里就需要確定圖片的位置,掃描可以連接的圖片,記錄下他們的位置,然后用變量保存下來,然后調(diào)用繪圖事件,繪制圖片的外框,用背景色提示。 ch = ch + QString::number(*(map + i * + j)) + QString (.png)。 i = ()。 MainWindow::resetImage()。} 其他控件的設(shè)計(jì)實(shí)現(xiàn) 重排按鈕實(shí)現(xiàn)重排按鈕實(shí)際上調(diào)用了邏輯層的功能,使用隨機(jī)生成函數(shù)重新生成圖片,與初始化狀態(tài)不一樣的是,這里的隨機(jī)排布的對象是現(xiàn)有的圖片,不需要對全部圖片進(jìn)行排布。X1_X2(x,y2,x2,y2)) { pathappend(Coordinate(x,y1))。 if(xy==BLANK_STATEamp。xm_nCol。X1_X2(x,y2,x2,y2)) { pathappend(Coordinate(x,y1))。 if(xy==BLANK_STATEamp。x=0。Y1_Y2(x2,y,x2,y2)) { pathappend(Coordinate(x1,y))。 if(yx==BLANK_STATEamp。ym_nRow。Y1_Y2(x2,y,x2,y2)) { pathappend(Coordinate(x1,y))。 if(yx==BLANK_STATEamp。y=0。為了判斷A,B能否通過2個轉(zhuǎn)角連通,則從A開始在垂直方向上下掃描,并判斷經(jīng)過的點(diǎn)能否與B點(diǎn)經(jīng)過1個轉(zhuǎn)角連通。水平掃描。}兩個轉(zhuǎn)角連通: 判斷圖片A與圖片B能否經(jīng)過有兩個轉(zhuǎn)角的路徑連通實(shí)質(zhì)上可以轉(zhuǎn)化為判斷能否找到一個點(diǎn)C,這個C點(diǎn)與A可以直線連通,且C與B可以通過有一個轉(zhuǎn)角的路徑連通。amp。 } int yx = arrmap[y2][x1]。X1_X2(x1,y1,x2,y1)amp。}一個轉(zhuǎn)角連通:其實(shí)相當(dāng)于兩個圖片劃出一個矩形,這兩個圖片是一對對角頂點(diǎn),另外兩個頂點(diǎn)如果可以同時和這兩個棋子直連,那就說明可以一折連通。amp。 } for(int y=y1+direct。 } return true。xm_nColamp。 if(x1x2) { direct = 1。//二維數(shù)組和一維數(shù)組映射; } } 圖片消除路徑判斷詳細(xì)設(shè)計(jì)根據(jù)轉(zhuǎn)角數(shù)不得超過2個的規(guī)則,我們可以分為轉(zhuǎn)角數(shù)分別為0個、1個、2個這三種情況分別討論。 i = Game::sizeX。 }//實(shí)現(xiàn)圖片隨機(jī)初始化的功能 for (i = 0。 i++) { int x = rand() % (Game::sizeX * Game::sizeY)。下述代碼是圖片隨機(jī)排布的實(shí)現(xiàn)。 image[i]show()。 QPixmap pixmap (ch)。 i++) { MainWindow::image[i] = new QPushButton (this)。 ++j。 for (i = 0。下述代碼是圖片存放的實(shí)現(xiàn)。音效的設(shè)置采用Qt中支持的Phonon多媒體框架,可以直接采用Phonon類的MediaObject方法來創(chuàng)建聲音對象,然后使用該類的createPlayer()方法來設(shè)置對應(yīng)的音樂文件,成功后就可以直接使用play來播放了。(紅色塊為欲消除塊,黑色代表其他阻攔塊,黃色c代表折點(diǎn),綠色代表折線),如圖35圖35垂直掃描。判斷是否經(jīng)兩個轉(zhuǎn)角連通的算法需要做兩個方向上的掃描:水平掃描和垂直掃描。(紅色塊為欲消除塊),如圖33圖33一個轉(zhuǎn)角連通:其實(shí)相當(dāng)于兩個圖片劃出一個矩形,這兩個圖片是一對對角頂點(diǎn),另外兩個頂點(diǎn)如果可以同時和這兩個棋子直連,那就說明可以一折連通。隨機(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ī)生成首先游戲中心是由10*10的按鈕構(gòu)成的,要想在按鈕中顯示圖片同時還便于圖片在系統(tǒng)中的使用,這里通過數(shù)字和圖片綁定的方式,實(shí)現(xiàn)圖片在按鈕上的排布,圖片的加載需要url,我們通過提前將圖片編號(125),然后將圖片存放在同一路徑下,通過一個統(tǒng)一的字符串前綴實(shí)現(xiàn)圖片的統(tǒng)一加載,而在統(tǒng)一字符串中只含一個整形變量,圖片的標(biāo)號和變量匹配,將圖片和變量相綁定,這樣就簡化了圖片的使用。右側(cè)是一些游戲中用到的兩個按鈕,提示和重排。 總體設(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)擊后可以消除。3. 游戲概要設(shè)計(jì) 任務(wù)概述 目標(biāo)設(shè)計(jì)軟件的結(jié)構(gòu),包括組成模塊,模塊的層次結(jié)構(gòu),模塊的調(diào)用關(guān)系,每個模塊的功能等等。當(dāng)玩家點(diǎn)擊一對可以消除的圖片時,能夠立刻播放消除音樂,并且能夠迅速的將圖片消除。當(dāng)然為了防止玩家偷懶,提示的次數(shù)也是有限的。:一款經(jīng)典的游戲總是少不了音樂的配合,游戲和音樂總像是天生的一對,形影不離,美妙的音樂能夠激發(fā)玩家的游戲斗志和激情,因此音樂的配合就必不可少了,當(dāng)玩家打開程序時候,悠揚(yáng)的歌曲就呼之欲出,像一陣清風(fēng)徐徐而來,不驚波瀾,立即把玩家?guī)脒B連看的游戲世界,當(dāng)玩家點(diǎn)擊開始游戲,正式開始游戲的時候,點(diǎn)擊圖片會有提示音,當(dāng)成功消除一對圖片的時候,會有相應(yīng)的提示音播放??偨Y(jié):介于qt強(qiáng)大的類庫和完善的通信機(jī)制,為連連看的設(shè)計(jì)提供了良好的平臺環(huán)境,便于程序的設(shè)計(jì)與實(shí)現(xiàn),故使用QT平臺。在信號—槽機(jī)制實(shí)現(xiàn)的過程中,可以把許多信號和單一槽相連,也可以把一個信號和許多槽相連。從QObject類或者它的一個子類(比如QWidget類)繼承的所有類都可以包含信號槽。信號和槽是寬松地聯(lián)系在一起的:一個發(fā)射信號的類不用知道哪個槽要接收這個信號。Qt的窗口部件有很多預(yù)定義的槽,通常也可以加入自己的槽,這樣就可以處理感興趣的信號了。在Qt中有一種可以替代回調(diào)的技術(shù):使用信號和槽。例如,如果正在解析一個XML文件,當(dāng)遇到一個新的標(biāo)簽時,也許要通知列表視圖正在用來表達(dá)XML文件的結(jié)構(gòu)。信號—槽機(jī)制是Qt的一個中心特征并且也是它與其它圖形工具包的最不相同的部分。另外還有其他雜類如Qsignal, QIconSet等。圖形處理工具控制圖像的編碼/解碼算法??丶庥^類控制控件的外觀如顏色、字體等。對象模型是框架的基礎(chǔ),如QObject。擴(kuò)展的控件包括樹狀視圖、進(jìn)度條等, 如QListView。例如QTranslator, Qapplication。Qt無疑是GUI終極解決方案,有強(qiáng)力的ANSI C/C++語言背書,又有單一的GUI Library,且精簡漂亮,又能Compile成各平臺的原生執(zhí)行檔,幾乎是最完美的解決方案了。 java語言在一定程度上能夠稱為動態(tài)語言,由于反射機(jī)制,讓java能夠在運(yùn)行時再獲取相應(yīng)類型信息,大大減少開發(fā)的代碼量的同時,能夠提供更通用的程序。再來看Microsoft的Visual C++,MFC用的是完整的ANSI C++語言,所以語言部分不是問題,但若你看過用MFC寫的程序,你一定會驚訝為什么這么復(fù)雜,程序代碼非常冗長不好看,且MFC是有名的難學(xué),若 Visual C++ Framrwork,則無法使用ANSI C++,++/CLI,相信這點(diǎn)很多人就有意見了, Framework由于設(shè)計(jì)的不錯,所以寫出來的程序相當(dāng)精簡漂亮,感覺和C++ Builder差不多,不過無論是C++ Builder或Visual C++開發(fā)的GUI,所開發(fā)出來的程序都無法跨平臺,當(dāng)然也無法跨平臺Compile。++的特點(diǎn)C/C++的哲學(xué)就不一樣了,同一份程序代碼,只要在該平臺重新Compile成該平臺的執(zhí)行檔,就能在該平臺執(zhí)行,若文字模式下的程序,的確可以跨平臺,程序完全不需修改,但GUI盛行以后,由于各GUI的Library都不一樣且沒有標(biāo)準(zhǔn),所以GUI程序并沒辦法跨平臺Compile,因?yàn)楦髌脚_都有專屬的 Library。總結(jié):考慮到第一種編程思路清晰明了,框架層次分明,能夠?qū)⑴袛嗟姆N類全部概括,每一個分支的實(shí)現(xiàn)都比較容易,所以對于初次實(shí)現(xiàn)連連看的我來說是一條捷徑,因此我選擇了分類判斷(分類法一)的方法來實(shí)現(xiàn)連連看的消除算法。其缺點(diǎn)很明顯就是每次消去圖形動作之后重新計(jì)算所有可能的最短路徑所需要消耗的時間;而該方法的優(yōu)點(diǎn)則是可以很快地判斷兩個相同圖形之間是否存在滿足條件的最短路徑。(1)是否可以通過維護(hù)任意兩個格子之間的最短路徑來實(shí)現(xiàn)快速搜索。如果沒找到所需路徑,則需要再次擴(kuò)大搜索范圍。雖然左右兩組數(shù)據(jù)結(jié)構(gòu)的內(nèi)容是一樣的,但是其組織方式有所不同:左邊的二進(jìn)制位是按列組織的,即一列的二進(jìn)制位保存在一個int或者long型的變量中,多出來的位用0填滿;右邊的結(jié)構(gòu)是按行組織的,其他與左邊結(jié)構(gòu)類似。從圖中我們可以清楚地看到,這樣的路徑只有兩條,他們組成了一個矩形,圖215中藍(lán)色的矩形就是兩條路徑的組合而成。00110000,注意其中的兩個1是用來測試在圖2的第二列上是否有非空的格子。這一點(diǎn)我們可以通過他們的位置信息直接得到,例如圖形1的位置是[2,2],圖形2的位置是[4,5],很顯然二者不會在一條直線上,所以直接跳過這一步。這個算法很直觀,就是在有限的轉(zhuǎn)彎次數(shù)內(nèi)不斷構(gòu)建出更大的路徑網(wǎng)絡(luò),看看能否“覆蓋”到被連接的圖形,
點(diǎn)擊復(fù)制文檔內(nèi)容
范文總結(jié)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1