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

正文內(nèi)容

連連看游戲設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)-文庫吧資料

2025-06-24 15:04本頁面
  

【正文】 1][x]!=BLANK_STATE) return false。amp。amp。 } for(int x=x1+direct。 int direct = 1。0轉(zhuǎn)角連通(直線連通):兩個(gè)圖片的縱坐標(biāo)或橫坐標(biāo)相等,且兩者連線間沒有其他圖案阻隔。 j++) { Game::myMap[i][j] = map[(i 1) * Game::sizeY + (j 1)]。 i++) { for (j = 1。 } for (i = 1。 i Game::sizeX * Game::sizeY。 save[x] = a。 //產(chǎn)生010*10 之間的隨機(jī)數(shù); int a = save[i]。 i Game::sizeX * Game::sizeY。srand((unsigned)time(NULL))。 }}接下來,需要實(shí)現(xiàn)圖片的隨機(jī)排布,這里使用到隨機(jī)函數(shù)產(chǎn)生隨機(jī)數(shù),通過遍歷數(shù)組中的圖片,然后交換隨機(jī)下標(biāo)和遍歷下標(biāo)對(duì)應(yīng)的圖片,這樣就實(shí)現(xiàn)了圖片的隨機(jī)排布。 image[i]setPalette(QPalette(Qt::lightGray))。 image[i]setIconSize(QSize (size, size))。 QIcon icon (pixmap)。 ch = ch + QString::number(map[i]) + QString (.png)。 image[i]setGeometry(x + size * (i % ()), y + size * (i / ()), size, size)。 i ()。 }//在10*10的數(shù)組內(nèi) 存偶數(shù)對(duì)圖片 25*4 圖片的存放事實(shí)上是通過和數(shù)組對(duì)應(yīng)的原則實(shí)現(xiàn)轉(zhuǎn)換的,0代表沒有圖片,125代表圖片的序號(hào),通過設(shè)置統(tǒng)一字符串,將圖片的序號(hào)作為變量,可以將圖片依據(jù)名字引用到button上,然后主界面上的圖片通過button來顯示,下述代碼是圖片和數(shù)組對(duì)應(yīng)的實(shí)現(xiàn)以及圖片的引用。 save[i + 1] = j % 25 + 1。 i Game::sizeX * Game::sizeY。 int save[50 * 50]。Game::GameStatus = Game::PLAYING。 邏輯層設(shè)計(jì) 圖片偶數(shù)對(duì)存放以及隨機(jī)生成首先圖片需要實(shí)現(xiàn)存放,存放的方式是以偶數(shù)對(duì)的形式存放,因?yàn)檫B連看的圖片是表格式的,因此使用二維數(shù)組存放圖片是比較合理的??傊?,背景音樂是利用系統(tǒng)現(xiàn)有的類,調(diào)用相應(yīng)的方法實(shí)現(xiàn)音樂的播放。 背景音樂的模塊背景音樂的設(shè)計(jì)較為簡單,主要出現(xiàn)在游戲剛開始的階段和游戲進(jìn)行中的消除階段,這個(gè)模塊可以獨(dú)立設(shè)計(jì),添加合適的音樂,作為后期模塊集成時(shí)候使用。為了判斷A,B能否通過2個(gè)轉(zhuǎn)角連通,則從A開始在垂直方向上下掃描,并判斷經(jīng)過的點(diǎn)能否與B點(diǎn)經(jīng)過1個(gè)轉(zhuǎn)角連通。顯然C點(diǎn)能與B點(diǎn)經(jīng)1個(gè)轉(zhuǎn)角連通,故A,B能經(jīng)2個(gè)轉(zhuǎn)角連通。水平掃描。若能找到這樣一個(gè)C點(diǎn),那么A與B就可以經(jīng)過有兩個(gè)轉(zhuǎn)角的路徑連通 。(紅色塊為欲消除塊,黑色代表其他阻攔塊,圓圈代表折點(diǎn)),如圖34圖34兩個(gè)轉(zhuǎn)角連通: 判斷圖片A與圖片B能否經(jīng)過有兩個(gè)轉(zhuǎn)角的路徑連通實(shí)質(zhì)上可以轉(zhuǎn)化為判斷能否找到一個(gè)點(diǎn)C,這個(gè)C點(diǎn)與A可以直線連通,且C與B可以通過有一個(gè)轉(zhuǎn)角的路徑連通。0轉(zhuǎn)角連通(直線連通):兩個(gè)圖片的縱坐標(biāo)或橫坐標(biāo)相等,且兩者連線間沒有其他圖案阻隔。 圖片消除路徑判斷根據(jù)連連看的游戲規(guī)則(游戲“連連看”,只要將相同花色的兩張牌用三根以內(nèi)的直線連在一起就可以消除),現(xiàn)在需要設(shè)計(jì)一個(gè)算法來判斷圖案能否消除,首先連連看第一個(gè)條件是圖案相同,如果選擇的圖案不同,那么游戲不再進(jìn)行判斷,其次游戲最核心的是判斷當(dāng)圖案相同的時(shí)候圖案能否在不超過2個(gè)轉(zhuǎn)角或是不超過3條直線的情況下相連。其次,按照上述方式存放的圖片是嚴(yán)格規(guī)律順序排布的,這樣顯然不能滿足圖片的隨機(jī)性,為了實(shí)現(xiàn)隨機(jī),這就需要將圖片的存放順序打亂。將數(shù)字存放在數(shù)組中,并且嚴(yán)格按照成對(duì)的方式存放圖片,因?yàn)檫B連看游戲的前提是消除成對(duì)圖片。2.背景上:為了達(dá)到簡潔和大氣的目的,也為了適合玩家的色彩習(xí)慣,我選擇了天藍(lán)色作為背景顏色,給人眼前一亮的感覺。主窗體的大半部分是由10*10的按鈕構(gòu)成的,這些按鈕就是后期圖片的擺放位置。1.功能上:上方時(shí)菜單欄menubar控件,里面是菜單項(xiàng);稍下一點(diǎn)的位置是Qlabel控件用于提示難度、得分等當(dāng)前游戲的狀態(tài),其中有一個(gè)控件是QProgressBar,用來顯示游戲時(shí)間的狀態(tài)。當(dāng)玩家需要重排圖片時(shí)候,點(diǎn)擊重排便可以重新載入圖片;當(dāng)然在游戲過程中玩家可以隨時(shí)退出游戲。 需求概述首先界面應(yīng)該美觀,游戲的背景音樂應(yīng)該實(shí)現(xiàn),其次連連看的地圖應(yīng)該隨機(jī)生成,良好的消除算法,提示功能,重置功能,得分記錄難度還有游戲的基本設(shè)置功能,最后是創(chuàng)新的獎(jiǎng)勵(lì)時(shí)間的功能。同時(shí),還要設(shè)計(jì)該項(xiàng)目的應(yīng)用系統(tǒng)的總體數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)庫結(jié)構(gòu),即應(yīng)用系統(tǒng)要存儲(chǔ)什么數(shù)據(jù),這些數(shù)據(jù)是什么樣的結(jié)構(gòu),它們之間有什么關(guān)系。 可用性與可靠性密切相關(guān),它量化了用戶可以使用系統(tǒng)的程度,連連看游戲首先必須保證游戲能夠按照設(shè)定的規(guī)則順利完成游戲,其次才是對(duì)連連看游戲的優(yōu)化,否則一款游戲不能保證游戲的規(guī)則性,它的吸引力就會(huì)瞬間下降。滿足響應(yīng)時(shí)間的要求,當(dāng)然對(duì)于這款小游戲來說由于地圖中存放的數(shù)據(jù)本身就是一個(gè)小數(shù)量級(jí),計(jì)算機(jī)處理起來當(dāng)然是綽綽有余。、重新開始、退出等基本功能的需求:開始,重新開始,還有退出,這些是游戲的基本功能,這些需求也是必須應(yīng)該實(shí)現(xiàn)的。:由于連連看的圖片的生成是隨機(jī)的,圖片在數(shù)組中隨機(jī)排列以及玩家的隨機(jī)消除選擇,導(dǎo)致剩余圖片的消除有可能無法滿足消除原則,玩家面臨著有圖片但是不能消除的困惑,所以這時(shí)候重置的需求,不言而喻,通過設(shè)置重置按鈕,點(diǎn)擊重置按鈕玩家就能夠成功的實(shí)現(xiàn)圖片的再次隨機(jī)生成,當(dāng)然重新生成的圖片再次出現(xiàn)僵局的概率很低,所以一般情況下總能通過一次的重置來破解僵局,為了避免玩家通過重排來獲取游戲的捷徑,玩家的重置次數(shù)是有限定的。:當(dāng)玩家過五關(guān)斬六將后,總會(huì)有思路茫然的時(shí)候,無法再找出可以消除的圖片,為了不使玩家陷入這種困惑,從而降低游戲的積極性,提示的功能就呼之欲出,提示的功能可以在玩家處于這種困惑的時(shí)候,能夠帶領(lǐng)玩家沖破屏障,再次開始順利的消除圖片。:本連連看程序?qū)崿F(xiàn)了游戲時(shí)間的提示功能,同時(shí)創(chuàng)新實(shí)現(xiàn)了游戲獎(jiǎng)勵(lì)的新規(guī)則,當(dāng)玩家消除一對(duì)圖片的時(shí)候就給予一定的獎(jiǎng)勵(lì)時(shí)間,給玩家在游戲中帶來欣喜,提高消除圖片的積極性。同時(shí)難度、時(shí)間、得分提示分布均勻,按鈕排布清晰,給用戶一個(gè)清爽友好的界面。 需求分析 環(huán)境分析本系統(tǒng)的軟件開發(fā)環(huán)境是windows7操作系統(tǒng)下, Create版本,使用c++語言來開發(fā)??傮w來看,信號(hào)和槽構(gòu)成了一個(gè)強(qiáng)有力的組件編程機(jī)制。把一個(gè)信號(hào)和另一個(gè)信號(hào)直接相連也是可以的。此外,使用對(duì)象時(shí)也無須知道這種通訊機(jī)制的實(shí)現(xiàn)細(xì)節(jié)。當(dāng)對(duì)象的狀態(tài)發(fā)生改變的時(shí)候,信號(hào)被發(fā)送給其它對(duì)象,從而實(shí)現(xiàn)了該對(duì)象與其它對(duì)象的通信。它們是完全類型安全的,不會(huì)再有回調(diào)核心轉(zhuǎn)儲(chǔ)。Qt的信號(hào)和槽的機(jī)制可以保證如果把一個(gè)信號(hào)和一個(gè)槽連接起來,槽會(huì)在正確的時(shí)間使用信號(hào)的參數(shù)而被調(diào)用。因?yàn)楹灻且恢碌?,編譯器就可以幫助檢測類型是否匹配。信號(hào)—槽機(jī)制是類型安全的:一個(gè)信號(hào)的簽名必須與它的接收槽的簽名相匹配。槽就是一個(gè)可以被調(diào)用處理特定信號(hào)的函數(shù)。當(dāng)一個(gè)特定事件發(fā)生的時(shí)候,一個(gè)信號(hào)被發(fā)射。回調(diào)有兩個(gè)主要缺點(diǎn):首先他們不是類型安全的,從來都不能確定處理函數(shù)使用了正確的參數(shù)來調(diào)用回調(diào);其次回調(diào)和處理函數(shù)是非常強(qiáng)有力地聯(lián)系在一起的,因?yàn)樘幚砗瘮?shù)必須知道要調(diào)用哪個(gè)回調(diào)。較老的工具包是使用一種被稱作回調(diào)的通訊方式來實(shí)現(xiàn)同一目的。更一般地,希望任何一類對(duì)象可以和其它對(duì)象進(jìn)行通訊。下圖直觀地表示了這種機(jī)制是如何工作的。信號(hào)—槽機(jī)制說明:Qt下對(duì)象間的通訊用信號(hào)—槽機(jī)制來實(shí)現(xiàn)。對(duì)象間通訊是面向?qū)ο蟪绦蛟O(shè)計(jì)的一個(gè)極其重要的內(nèi)容,類似于Microsoft MFC的消息映射和事件循環(huán),Qt的對(duì)象間通訊采用的是信號(hào)—槽(signal—slot)機(jī)制,信號(hào)就好像是事件,而槽則是響應(yīng)事件的方法。時(shí)間和日期工具類處理時(shí)間和日期,如Qdate, QTime。如QImageIO。普通工具包括鏈表、堆棧、隊(duì)列、樹等常見數(shù)據(jù)結(jié)構(gòu),如QArray。例如QColor。拖放類控制拖放操作,如QDragObject。可見的控件一般從抽象控件派生,如QButton??蚣芸蚣懿糠职ǖ氖且恍┏橄蟮念?,通常不可見,如對(duì)象模型、抽象控件、繪圖、拖放、控件外觀。GUI組織類負(fù)責(zé)對(duì)各種控件進(jìn)行組織以構(gòu)成復(fù)雜的對(duì)話框, 如QGroupBox?;究丶ㄋ械腉UI控件,如按鈕、組合框等,如QPushButton。主窗口類為應(yīng)用程序提供界面框架,可以在上面添加菜單、工具條等,為應(yīng)用程序提供集裝箱的功能,如QMainWindow。環(huán)境控件為應(yīng)用程序提供全局服務(wù)的類,包括系統(tǒng)設(shè)定、國際化等??偨Y(jié):經(jīng)過以上比較后,考慮到Qt的眾多良好特性,尤其是其跨平臺(tái)性,加上自己在基地學(xué)習(xí)過Qt,為了能夠更進(jìn)一步掌握Qt編程,因此決定使用Qt開發(fā)連連看游戲。若以后臺(tái)角度來說,無論后端是什么數(shù)據(jù)庫,只要透過相同的Interface,不同數(shù)據(jù)庫的Class來實(shí)做這個(gè)Interface,前端GUI的程序?qū)懛ㄍ耆挥酶淖?,同理,面?duì)不同的OS,理論上只要透過相同的Interface,不同OS的Class各自實(shí)做這個(gè)Interface,前端GUI的程序也完全不用改變,最后只要靠Compiler將程序pile成各平臺(tái)的原生程序即可,這樣即可保證其執(zhí)行速度,不用再靠Virtual Machine。Qt擁有一個(gè)單一的Library,讓你開發(fā)各種不同平臺(tái)的程序,目前支持Windows、Linux、Mac、UNIX、Embedded Linux,就是它提供了一個(gè)Library讓你開發(fā)GUI程序,寫好之后,只要在各平臺(tái)重新Compile后,就可以在各平臺(tái)執(zhí)行,而且使用完整的ANSI C++語言,且不限Compiler,只要是C++的Compiler都可以,重要的是,該Library相當(dāng)漂亮,寫出來的程序很像C++ Framework的那樣精簡,不會(huì)向MFC那樣復(fù)雜。 java是體系結(jié)構(gòu)中立的,由于這種特點(diǎn),讓很多其他的語言能夠運(yùn)行在jvm(java虛擬機(jī))上,比如jruby、jython等語言(沒記錯(cuò)應(yīng)該有100多種語言),同時(shí)也讓他能夠在不同的平臺(tái)上運(yùn)行。java是面向?qū)ο蟮木幊陶Z言,和其他面向?qū)ο缶幊陶Z言一樣,在java的世界里,萬物皆對(duì)象,面向?qū)ο缶幊痰暮锰幘褪悄軌蛟谡Z言級(jí)別模擬現(xiàn)實(shí)世界的場景,簡化開發(fā)。首先來看Borland的C++ Builder,它使用標(biāo)準(zhǔn)的ANSI C++語言開發(fā),利用VCL寫出來的程序也算蠻漂亮的,執(zhí)行速度很快,比較麻煩的是C++ Builder當(dāng)初為了縮短上市時(shí)間,并沒有設(shè)計(jì)自己的Library,而是借用Delphi的Library,導(dǎo)致C++ Builder在Compile時(shí),是先用Delphi的Compiler將VCL pile成object file后,再用C++ Builder將你寫的C++程序pile成object file,最后再用Linker將所有的object file link起來,由于這都是IDE在做,對(duì)程序設(shè)計(jì)師似乎影響不大,但VCL由于是Delphi的Library,所以若想深入研究VCL的source code時(shí),則必須學(xué)Delphi的Pascal才行,否則看不懂VCL source code,這也是很多人對(duì)C++ Builder卻步的原因。但是C/C++優(yōu)勢就是執(zhí)行速度快,若能解決GUI Library的問題,則跨平臺(tái)即可解決。在中國乃至全世界都能看到它的身影,它曾是在中國最為流行的編程工具,到現(xiàn)在還占據(jù)著非常重要的地位,對(duì)于它的好壞大家都有一定的了解,VB作為一種較早出現(xiàn)的開發(fā)程序以其容易學(xué)習(xí),開發(fā)效率較高,具有完善的幫助系統(tǒng)等優(yōu)點(diǎn)曾影響了好幾代編程人員,但是由于VB不具備跨平臺(tái)這個(gè)特性,從而也決定了VB在未來的軟件開發(fā)中將會(huì)逐漸地退出其歷史舞臺(tái);它對(duì)組件技術(shù)的支持是基于COM和ActiveX,對(duì)于組件技術(shù)不斷完善發(fā)展的今天,它也顯出了它的落后性;同時(shí)VB在進(jìn)行系統(tǒng)底層開發(fā)的時(shí)候也是相對(duì)復(fù)雜的,調(diào)用API函數(shù)需聲明,調(diào)用不方便,不能進(jìn)行DDK編程,不可能深入Ring0編程,不能嵌套匯編;而且面向?qū)ο蟮奶匦圆?;網(wǎng)絡(luò)功能和數(shù)據(jù)庫功能也沒有非常突出的表現(xiàn),綜上所述,VB作為一種可視化的開發(fā)工具由于其本身的局限性,導(dǎo)致了它在未來軟件開發(fā)中逐步被其他工具所代替。 開發(fā)語言分析根據(jù)自己以前所學(xué)的關(guān)于C語言、C++、Java、以及Qt的相關(guān)知識(shí),并通過網(wǎng)上查找相關(guān)資料,了解到 C、C++、VB、Delphi、C、Java等均可以游戲的設(shè)計(jì)。所以總的來看,維護(hù)所有最短路徑的方法的效率相對(duì)比較低。如果用戶很厲害,每次都能選中可以消除的圖形對(duì),那么用這種方法浪費(fèi)的時(shí)間就會(huì)相當(dāng)可觀,畢竟用戶未選中的其他可以連接的圖形對(duì)之間的最短路徑都被浪費(fèi)掉了;而如果用戶很差勁,每輪選擇的次數(shù)都遠(yuǎn)遠(yuǎn)大于當(dāng)前可能的連接數(shù)量時(shí),該方法就會(huì)比書中正文提到的方法高效。此外,采用這種方法的話似乎每次用戶消去一對(duì)相同圖像之后都需要重新計(jì)算出當(dāng)前所有可能被連接的相同圖形之間最短路徑,這是因?yàn)楫?dāng)某些圖像被消去之后可能會(huì)產(chǎn)生很多新路徑,而我們又不能確定這些空出來的格子到底能夠影響哪些路徑,所以就只好都重新計(jì)算一遍。(2)在每次消去兩個(gè)格子之后,自然更新要更新需要維護(hù)的數(shù)據(jù),這樣的思路
點(diǎn)擊復(fù)制文檔內(nèi)容
范文總結(jié)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1