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

正文內(nèi)容

拼圖游戲計算機畢業(yè)設計論文(參考版)

2024-11-27 16:58本頁面
  

【正文】 然后就是一個 QLabel *succ 指向顯示祝賀語的 QLable,一個指向 QPushButton 重玩按鈕的 QPus。在這個類中自定義了兩個信號 void replay()和 void exit()。 }。 struct pair selected。 QPushButton *overgame。 QPushButton *backmenu。 //QPixmap *image。 private: //定義繪圖事件,鼠標事件 //定義按鈕 void paintEvent(QPaintEvent *event)。 void closeWidget()。 private slots: //定義槽函數(shù) void random()。 signals: void success()。 }。 游戲窗口的代碼: includeQWidget include include QPushButton include QLabel include QTimer struct pair { int x。 重新實現(xiàn)了兩個虛函數(shù) void paintEvent(QPaintEvent *event) 和 void mousePressEvent(QMouseEvent *event)以實現(xiàn)繪圖和鼠標操作。那么在每次兩個圖塊交換后我就判斷游戲是否成功,如果成功,就會發(fā)射 success()信號。 在 PintuWindow 類中,自定義了一個信號 void success(),然后兩個私有槽 void random()和 void succeed()。 } 模塊命名規(guī)則 整個游戲我用一個類 PintuWindow 進行描述。 //QImage image(str)。 strImg2 +=QString::number(num)。 //使用字符串的連接 找畢業(yè)設計、項目源碼、編程視頻,就上碼農(nóng)網(wǎng) manong365 23 strImg2 = :/images/myImage。 我將判斷游戲是否成功也放在了這個函數(shù)中,但是在模塊的劃分中,這是單獨的一塊,只是實現(xiàn)時為了實現(xiàn)方 便將兩個模塊結合到了單獨的一個函數(shù)中。 即可以移動; 如果空白 label 的 y 坐標與傳入的 labell 的 y 坐標相等,即說明要移動的圖片咋空白 label 的左側(cè)或者右側(cè),空白 label 的 x 坐標減去傳入 labell 的 x 坐標的絕對值等于空白 label 的的寬度時返回 true。 if(i == 9) { emit success()。 ++i) if (map[i/3][i%3] == i)。 for (。 } update()。 } }else{ = 1。 } }else{ = indX。 找畢業(yè)設計、項目源碼、編程視頻,就上碼農(nóng)網(wǎng) manong365 22 }else{ = indX。 = 1。 map[indX][indY] = map[][]。amp。amp。amp。amp。amp。amp。amp。 int indY = (y 20) / 153。amp。amp。amp。 int y = eventpos().y()。 計算鼠標選中那一塊,通過 selected 數(shù)據(jù)結構判斷之前是否已經(jīng)有選中塊了,如果之前沒有選中塊,那么置 selected 數(shù)據(jù)結構中選中塊為現(xiàn)在選中的塊,然后刷新;如果之前有選中的塊,那么就判斷之前選中的塊和現(xiàn)在選中的塊是否是橫縱相鄰的,如果不是橫縱相鄰的,那么就重置 selected 數(shù)據(jù)結 構中選中塊為現(xiàn)在選中的塊,然后刷新;如果之前選中的塊和現(xiàn)在選中的塊是橫縱相鄰的,那么就交換兩個選中的塊,然后刷新。 (0, 0, image, (map[i][j]/5) * spaceW, (map[i][j]%5) * spaceH, 找畢業(yè)設計、項目源碼、編程視頻,就上碼農(nóng)網(wǎng) manong365 21 spaceW, spaceH)。 j 5。 i 5。 (0, 0, image, (map[i][j]/4) * spaceW, (map[i][j]%4) * spaceH, spaceW, spaceH)。 j 4。 i 4。 (0, 0, image, (map[i][j]/3) * spaceW, (map[i][j]%3) * spaceH, spaceW, spaceH)。 j 3。 i 3。 (0, 0, spaceX, spaceY)。 (0, 0, spaceX, spaceY)。amp。 找畢業(yè)設計、項目源碼、編程視頻,就上碼農(nóng)網(wǎng) manong365 20 (0,2*spaceY,473,2*spaceY)。 (2*spaceX,0,2*spaceX,460)。 (QPen(Qt::white,1))。 } // 描繪網(wǎng)格線 (20,20,473,460)。 ++j) { (20 + i * spaceX + 1, 20 + j * spaceY + 1, spaceX, spaceY)。 ++i) for (int j = 0。 for (int i = 0。 //對比圖描繪 (0,0,image)。 //原圖視窗體 (507,20,473,460)。 //窗口間距 int spaceW = imageW / 3。 //高、寬 int imageW = ()。 str +=.jpg。 int num = qrand()%3+1。 int spaceY = 153。 (507,20,473,460)。 // 繪圖區(qū)和原圖區(qū)的繪制 (QPen(Qt::white,2))。 (498,15,498,485)。 // 整體框架 (10,10,980,480)。 (QPen(Qt::yellow,2))。 } update()。 map[i][j] = map[randData/5][randData%5]。 ++j) { randData = rand() % 25。 ++i) for (int j = 0。 for (int i = 0。 } 打散 5 5 void PintuWindow2::random() { int temp = 1。 map[randData/3][randData%3] = temp。 temp = map[i][j]。 j 3。 i 3。 找畢業(yè)設計、項目源碼、編程視頻,就上碼農(nóng)網(wǎng) manong365 18 int randData = 1。 map[randData/3][randData%3] = temp。 temp = map[i][j]。 j 3。 i 3。 int randData = 1。 } update()。 map[randData1/3][randData1%3] = map[randData2/3][randData2%3]。 randData2 = rand() % 9。 i 9。 srand(time(NULL))。 int randData1 = 1。通過循環(huán)將這樣的交換多進行幾輪,然后就得到了一個隨機打散的映射數(shù)組 map。 map 數(shù)組在初始化的時候,我們給 map[0][0]~map[3][3]依次放進去 0~8,然后再調(diào)用一次 random()函數(shù)后將圖像繪制到屏幕上去生成最初的打亂的圖像。如果 map 數(shù)組中的數(shù)字是隨機打亂的,那么我們通過這個映射數(shù)組將圖像繪制到屏幕上后,屏幕上將會是打亂的圖像。 map[0][0]對應屏幕的 0 塊, map[0][1]對應屏幕的 1 塊,依次類推, map[3][3]對應屏幕的 8 塊。我們先將視口設置成屏幕上的一塊,然后窗口設置成一塊大小和一塊圖像的大小一樣的矩形,我們將一塊圖 像繪制到窗口中,經(jīng)過窗口 視口變換后就繪制到了視口所對應的屏幕上。 圖片隨機分割問題 我們將圖像也分成和屏幕窗口一樣的 9 塊,如圖 52 所示。八數(shù)碼問題用于拼圖游戲中圖片的拆分方法。 F( 8)= 0;(數(shù)字 8 前沒有比其小的數(shù)字) F( 7)= 0; F( 1)= 0; F( 5)= 1;(數(shù)字 5 前有一個比其小的數(shù)字“ 1”) F( 2)= 1; F( 6)= 3; 找畢業(yè)設計、項目源碼、編程視頻,就上碼農(nóng)網(wǎng) manong365 16 F( 3)= 2; F( 4)= 3; Y= 0+ 0+ 0+ 1+ 1+ 3+ 2+ 3= 10 Y 為偶數(shù),所以進行偶數(shù)排列。 狀態(tài)為: 8 7 1 5 2 6 3 4 0 在這個數(shù)組中我們首先計算它能夠重排列出來的結果,公式是: ∑(F(X))=Y,其中F(X) 就是一個數(shù)他前面比這個數(shù)小的數(shù)的個數(shù),Y為奇數(shù)和偶數(shù)各有一種解法。 具體分析,九宮問題中,程序產(chǎn)生的隨機排列轉(zhuǎn)換成目標共有兩種可能,而且這兩種不可能同時成立,也就是奇數(shù)排列和偶數(shù)排列?,F(xiàn)在要求實現(xiàn)這個問題:將打亂的九宮格調(diào)整為與圖片吻合的形式。 圖 51 拼圖區(qū)窗口 關于八數(shù)碼問題,是該程序設計的一個難點,也是首要突破的一的難點,搞清楚八數(shù)碼函數(shù)的運算邏輯是該程序設計的 關鍵。 找畢業(yè)設計、項目源碼、編程視頻,就上碼農(nóng)網(wǎng) manong365 15 5 詳細設計 關鍵算法的設計與實現(xiàn) 對于一個拼圖游戲的核心來說,主要的模塊就是圖片的隨機打散模塊和拼圖模塊。 在 軟件編碼 階段, 根據(jù)概要設計 中對 數(shù)據(jù)結構 、 算法分析 和模塊實現(xiàn)等方面的設計要求,開始具體的編寫程序工作,分別實現(xiàn)各模塊的功能,從而實現(xiàn)對目標系統(tǒng)的功能、性能、接口、界面等方面的要求。應當保證軟件的需求完全分配給整個軟件。 在 概要設計 的基礎上 ,我 需要進行 軟件系統(tǒng) 的詳細設計。 圖 43 拼圖游戲隨機打散圖片流程 圖 44 拼圖游戲拼圖流程 找畢業(yè)設計、項目源碼、編程視頻,就上碼農(nóng)網(wǎng) manong365 14 首先, 我 需要對 軟件系統(tǒng) 進行 概要設計 ,即 系統(tǒng)設計 。 圖 42 拼圖游戲流程圖 功能模塊設計 關于該拼圖游戲的功能木模塊設計,從邏輯上分析,該拼圖游戲主要分成 2 塊,也就是主要的兩個窗體, 分別為游戲界面部分和游戲部分,下面對該款拼圖游戲進行功能設計分析 。 4,可利用系統(tǒng)流程圖來分析業(yè)務流程的合理性。 2,系統(tǒng)流程圖是 系統(tǒng)分析員 、 管理員 、業(yè)務操作員相互交流的工具。 系統(tǒng)流程圖表達的是系統(tǒng)各部件的流動情況,而不是表示對信息進行加工處理的控制過程。表示方法簡明直觀,是用來描述程序執(zhí)行的邏輯過程的。選擇處理方式實際上就是根據(jù)系統(tǒng)的任務、目標和環(huán)境條件,合理地選擇信息活動的形態(tài)及具體方法。 對于圖片的是否拼圖成功的提示,主要是在每個按鈕中加個 String 的屬性值,而且對于正確的排序的值與正在排的各個值比較,一旦所有的按鈕對應的值與正確的排序一致,則為成功。拆分圖片后,把分好的圖片存儲到一個 image 數(shù)組中,對于可移動的塊其實是按鈕,每 個按鈕上都有一個 icon,通過隨機把 image 數(shù)組中的圖片通過 imageIcon 的轉(zhuǎn)化后附給一個按鈕,并將按鈕數(shù)組首先附給一個向量,然后用隨機數(shù)來確定對應向量的值,然后再附給對應數(shù)組按鈕,同時去除該值??傮w設計方案中主要說明前期工作中對于分割圖片以及判斷拼圖是否成功這兩點的設計。 功能需求 用戶對于該拼圖游戲軟件的需求主要體現(xiàn)在以下幾個功能: 1. 實現(xiàn)程序 GUI 圖形界面; 2. 實現(xiàn)游戲開始、退出等功能; 3. 實現(xiàn)鼠標或鍵盤事件響應模塊的功能; 4. 實現(xiàn)可選難度等級功能; 5. 實現(xiàn)輸贏自動判別功能; 6. 實現(xiàn)游戲圖片更換功能; 7. 實現(xiàn)進行游戲同時可以查看原圖功能; 8. 實現(xiàn)游戲內(nèi)圖片更換、重玩、返回界面、退出功能; 總體設計方案 在開始游戲界面后,設計本程序能夠載入默認圖片(用戶也可
點擊復制文檔內(nèi)容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1