基于Qt的俄羅斯方塊的設計(共25頁)_第1頁
基于Qt的俄羅斯方塊的設計(共25頁)_第2頁
基于Qt的俄羅斯方塊的設計(共25頁)_第3頁
基于Qt的俄羅斯方塊的設計(共25頁)_第4頁
基于Qt的俄羅斯方塊的設計(共25頁)_第5頁
已閱讀5頁,還剩21頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、華北(Hubi)水利水電大學課程設計報告(bogo) 基于Qt的俄羅斯方塊(fn kui)的設計課程名稱: 嵌入式系統(tǒng) 學 院: 信息工程 專 業(yè): 電子信息工程 姓 名: 楊斌 學 號: 201215616 同 組 人:201215601王躍宇 指導教師: 張曉華 日 期: 2015.7.8 摘要(zhiyo) 俄羅斯方塊是個比較經典的小游戲,它實現由四塊正方形的色塊組成,然后存儲在一個數組的四個元素中,計算機隨機產生不同七種類型的方塊,根據計算機定時器控制它在一定的時間不停的產生,用戶根據鍵盤的四個方向鍵控制翻轉、向左、向右、向下和空格操作,(用信號和槽函數的關聯(lián)來實現對按鍵事件(shji

2、n)的控制)。然后程序根據這七種方塊堆疊成各種不同的模型。 Qt在源代碼級上實現了跨平臺特性,極大的支持了跨平臺通用軟件的開發(fā)(kif)。Qt可以用同一個源程序在不同平臺上編譯鏈接,生成目標代碼,并取得相同的運行效果,稱為“一次編寫,隨處編譯”,利用這種方法充分實現了程序的跨平臺運行。這種基于源代碼的跨平臺特性不僅解決了性能的問題,而且可以發(fā)揮各個平臺的優(yōu)勢,充分利用每個平臺自身的特點;并且即可以在新環(huán)境下實現原有軟件的功能和特點,減少開發(fā)費用,還可以改進原有軟件的不足,增加新的需求,從而提高軟件的質量,延長軟件生命期。 本次設計用到的開發(fā)工具是Qt by Digia v4.8.4(MinGw

3、 4.8.2 OpenSource,操作系統(tǒng)是windows 10,C+為開發(fā)語言。關鍵詞QT 槽函數 界面設計 算法(sun f) 數組 程序設計 TOC o 1-3 h u HYPERLINK l _Toc15352 摘要(zhiyo) PAGEREF _Toc15352 2 HYPERLINK l _Toc15757 關鍵詞 PAGEREF _Toc15757 2 HYPERLINK l _Toc18349 引言(ynyn) PAGEREF _Toc18349 5 HYPERLINK l _Toc20514 1、QT安裝(nzhung)使用 PAGEREF _Toc20514 6 HYP

4、ERLINK l _Toc13490 2、功能設計簡介 PAGEREF _Toc13490 9 HYPERLINK l _Toc7333 2.1 游戲功能 PAGEREF _Toc7333 9 HYPERLINK l _Toc22243 2.2 設計思路 PAGEREF _Toc22243 10 HYPERLINK l _Toc17430 3、游戲流程 PAGEREF _Toc17430 10 HYPERLINK l _Toc4649 3.1 簡述游戲運行流程 PAGEREF _Toc4649 10 HYPERLINK l _Toc27288 3.2 運行流程圖 PAGEREF _Toc272

5、88 12 HYPERLINK l _Toc18827 4、 功能實現 PAGEREF _Toc18827 13 HYPERLINK l _Toc18174 4.1 Gui界面設計實現 PAGEREF _Toc18174 13 HYPERLINK l _Toc14225 4.1.1 框圖簡述 PAGEREF _Toc14225 13 HYPERLINK l _Toc13257 4.1.2 詳細界面設計簡述 PAGEREF _Toc13257 13 HYPERLINK l _Toc31550 4.2 程序實現 PAGEREF _Toc31550 16 HYPERLINK l _Toc16051

6、4.2.1 主要文件介紹 PAGEREF _Toc16051 16 HYPERLINK l _Toc31809 4.2.2 初始化(方塊產生) PAGEREF _Toc31809 17 HYPERLINK l _Toc27523 4.2.3 游戲進行階段(檢測碰撞、旋轉) PAGEREF _Toc27523 19 HYPERLINK l _Toc9962 4.2.4 消除計分(滿行消除、計分) PAGEREF _Toc9962 20 HYPERLINK l _Toc5726 5、運行結果 PAGEREF _Toc5726 21 HYPERLINK l _Toc27514 6、課程設計總結 PA

7、GEREF _Toc27514 22 HYPERLINK l _Toc10346 附錄 PAGEREF _Toc10346 23 HYPERLINK l _Toc2243 程序代碼 PAGEREF _Toc2243 23引言(ynyn) Qt是跨平臺的應用程序和UI框架。它包括跨平臺類庫、集成開發(fā)工具和跨平臺 IDE。使用Qt,只需一次性開發(fā)應用程序,無須重新編寫(binxi)源代碼,便可跨不同桌面和嵌入式操作系統(tǒng)部署這些應用程序。 面向對像,Qt 的良好封裝機制使得Qt的模塊化程度非常高,可重用性較好,對于用戶開發(fā)來說是非常方便的。 Qt 提供了一種稱為 signals/slots的安全類型

8、來替代callback,這使得各個元件(yunjin)之間的協(xié)同工作變得十分簡單。 俄羅斯方塊是一款風靡全球的電視游戲機和掌上游戲機游戲,它曾經造成的轟動與造成的經濟價值可以說是游戲史上的一件大事。俄羅斯方塊游戲可以說是隨計算機的發(fā)展而發(fā)展,并不斷推陳出新演變出各種類似游戲,深受廣大玩家喜愛。這個游戲有的簡單,有的復雜,但其根本原理是一樣的都是對運動的方塊進行組合,來訓練玩家的反應能力。俄羅斯方塊最早還是出現在PC機上,而我國的用戶都是通過紅白機了解、喜歡上它的。現在QQ等游戲平臺又將重新掀起這股讓人沉迷的俄羅斯方塊風潮。對一般用戶來說,它的規(guī)則簡單,容易上手,且游戲過程變化無窮,而在游戲平臺

9、上的對戰(zhàn)模式更增加了它的娛樂性和挑戰(zhàn)性,使用戶既能感受到游戲中的樂趣,也給用戶提供了一個展現自己高超技藝的場所。本設計利用數組作為方塊的數據結構,提出一種用C語言和C+來實現的方法,實現基本的方塊游戲功能,雖然不能實現聯(lián)網對戰(zhàn)功能,但是可以(ky)通過設計實現本游戲鞏固所學知識,增強動手能力,了解并熟悉游戲軟件的設計與開發(fā)過程。1、QT安裝(nzhung)使用(shyng)1.1 QT安裝直接到QT官網http:/www.qt.io/download/下載QT,這里我們我們以后還要用到可以選擇最新版本,用的是windows平臺所以可以選擇 HYPERLINK http:/download.qt

10、.io/official_releases/qt/5.5/5.5.0/qt-opensource-windows-x86-mingw492-5.5.0.exe o Qt 5.5.0 for Windows 32-bit (MinGW 4.9.2, 959 MB) t http:/www.qt.io/download-open-source/_blank Qt 5.5.0 for Windows 32-bit (MinGW 4.9.2, 959 MB) HYPERLINK http:/download.qt.io/official_releases/qt/5.5/5.5.0/qt-opensou

11、rce-windows-x86-mingw492-5.5.0.exe.mirrorlist t http:/www.qt.io/download-open-source/_blank (info) 版本,下載完成后選擇安裝下面我們?yōu)榱艘院蠓奖愎催x所有的插件,安裝完成后我們先不要運行需要在電腦配置里邊添加變量,如下選擇(xunz)系統(tǒng)高級設置選擇(xunz)環(huán)境變量,在變量名path在變量名最后(zuhu)邊添加QT安裝的路徑C:QtQt5.5.05.5mingw492_32(注意(zh y):mingw492_32是QT安裝的地方。至此,QT才可以(ky)完全的使用進行課程設計。2、功能設計簡

12、介 條目 說明 設計名稱基于QT設計的俄羅斯方塊 設計目的實現俄羅斯方塊游戲的運行 界面需求背景自定義圖片、布局自定義、方塊顏色變換、方塊下落變形 方塊形狀需求隨機產生7種形狀方塊、實現變形 鍵盤處理事件需求方塊下落時,可通過鍵盤方向鍵(上、下、左、右、空格鍵)對該方塊進行向上(變形),向下(變形)、向左、向右、向下移動。 鼠標處理事件需求鼠標右鍵點擊界面相應按鈕可以實現開始、暫停、退出功能 顯示需求當不同的方塊填滿一行時可以消行,剩余方塊向下移動并統(tǒng)計分數。當達到一定分數的時候,會增加相應的等級。2.1 游戲(yux)功能隨機產生不同的形狀(長條形、Z字形、反Z形、田字形、7字形、反7形、T

13、字型)下落到給定的區(qū)域,下落一個方塊獎勵7分,若填滿一行便消掉,相應區(qū)域計數,此時分數有獎勵,每消一行獎勵十分,當得分到達一定時,升級游戲難度,每關方塊下落的速度不同,第一關默認(mrn)下降速度500ms(0.5s),以后每升級一次速度遞加,增加游戲難度。若在游戲中各形狀填滿了給定區(qū)域,游戲失敗處于定格狀態(tài),此時可以重新開始游戲。游戲有暫停功能,當玩家點暫停按鈕時,游戲暫停,再次點擊暫停按鈕,游戲繼續(xù)。2.2 設計(shj)思路要實現俄羅斯方塊這個小游戲,需要從一下幾個方面入手。ui界面的設計,包括整個窗口的大小,布局,部件的添加。修改界面,以及ui與主程序的關聯(lián)方塊顏色的實現隨機7種方塊類

14、型的產生,下一個方塊的產生及顯示,以及方塊出現的位置檢測方塊是否碰撞,以及如何下落方塊的旋轉實現出現方塊時游戲計分,等級提升,下落速度的變化滿行時消除的檢測實現游戲結束(jish)時游戲的停止。虛擬(xn)按鍵的支持3、游戲(yux)流程3.1 簡述游戲運行流程(1)當按下開始“go girl”時隨機產生7種方塊類型中的一種,然后next中出現的方塊是和將要下落的方塊同時出現。(2)要下落的方塊隨后檢測碰撞,判斷是否可以下落。下落時通過上下左右按鍵,調用函數改變坐標可以旋轉方塊,按空格鍵調用函數可以使方塊加速下落。(3)每走一步都要檢測碰撞,當下落道底部時,碰撞檢測不能下落,此時在next中的

15、方塊開始下落,同時在隨機產生另一個方塊。(4)當一行滿了之后,通過檢測每一行的每一格是不是都有方塊來判斷是不是要消除,同時計分,等級,下落速度都隨之相應的改變。(5)當方塊到頂之后,將要下落的的哪一個方塊檢測是否碰撞,當檢測不能下落時,游戲結束。(6)這里定義的是下落一個方塊得七分,當得分為25的倍數的時候level升級,同時下落的速度初始為500ms,每升一級1000 / (1 + this.level)來運算。3.2 運行(ynxng)流程圖 初始化隨機生成某一類型方塊否清行得分判斷能否下落游戲結束方塊下落旋轉移動放置方塊是否檢測滿行清除檢測碰撞是否越界是否到底否是功能(gngnng)實現

16、4.1 Gui界面設計實現(shxin)4.1.1 框圖(kungt)簡述(1)布局窗口大小、部件位置改變,部件添加刪除、部件大小改變(2)添加文字在每一個按鈕、部件添加文字(3)改變背景自定義背景添加(4)修改結果對比圖片所示,表格闡述(5)難點問題解釋Ui文件的調用、界面按鈕與內部的連接4.1.2 詳細界面設計簡述利用QT中自帶的Designer設計師來改變界面,打開根文件夾下的.ui文件,并打破布局。(1)布局 通過拖拽可以改變窗口的大小,可通過拖拽左邊的部件來添加部件。然后就可以按照自己喜歡的風格來改變各個部件的位置,大小。添加文字 各個部件的文字也可以通過雙擊來添加,改變文本內容,部

17、件名稱。 (3) 改變窗口(chungku)的背景 選擇一個張自己喜歡(x huan)的圖片放在設計的文件目錄下。然后在Designer中往窗口里添加一個Push button部件,并右鍵選擇放在后面。找到想要的背景圖片放到根文件夾,然后在tetrix.qrc文件中添加一個指令并改成所要用如上圖所示,然后選擇Push button在其QWidget中選擇style sheet添加(tin ji)選用的圖片,然后在QWidget中選擇geonetry選擇需要的尺寸大小這里我們選擇720*570.并拖動主界面到相同的大小。然后在根目錄文件打開main.cpp文件并修改成相同的尺寸。最后選擇保存。就

18、完成了界面背景和尺寸(ch cun)大小的修改。(4)設計(shj)結果和示例中的窗口界面進行(jnxng)對比如下圖,如上對比,實現了如下的改變(1)布局窗口大小、部件位置改變,部件添加刪除、部件大小改變(2)添加文字在每一個按鈕、部件添加文字(3)改變背景自定義背景添加,修改成自己喜愛的背景。一共有四個按鈕,分別實現暫停,開始,退出(tuch),調試。游戲運行界面。(5)設計(shj)過程中發(fā)現的難點 雖然很簡便的利用Designer設計(shj)出了界面,但是其中的原理才是難點。1,實現界面背景的改變是我們自己琢磨出來的方法,也不知道對不對,但是對于顯示出來的界面是很好的,難點就是添加圖

19、片的路徑和stylesheet的利用 2,ui文件如何被調用的 利用ui界面作為一個子對象,完成對子對象的構造(guzo)之后調用stepUi來實現。按鈕的點擊(din j)如何與內部實現連接每一個按鈕對應不同的功能,每一個功能的實現都有一個槽函數與其(yq)對應。不如當你按下pause這個按鈕時,在tetrixwindow.js這個文件中“ui.findChild(pauseButton).clicked.connect(this.board, this.board.pause);”槽函數接口,實現按鈕的點擊,連接這個函數調用在tetrixboard.js中,如圖的函數,從而實現按鈕與內部功

20、能的連接。4.2 程序實現4.2.1 主要文件介紹 程序主要有幾個文件,main.cpp相當于入口、.h文件是頭文件、.js文件介紹具體調用函數以及功能的實現、Debug中產生最終可執(zhí)行文件、Makefile文件進行編譯、.ui界面設計文件。4.2.2 初始化(方塊(fn kui)產生) 大致分為幾個主要模塊(m kui)函數來實現功能。隨機方塊的產生、檢測是否碰撞下落、檢測滿行消除、方塊的旋轉。 隨機其中(qzhng)方塊的產生、滿行消除、重點介紹一下,檢測碰撞、方塊的旋轉概述一下。New pieceShape產生四個組成形狀的小方塊隨機產生0到7的隨機數流程圖: 繪制方塊圖形確定方塊產生位

21、置程序文字簡述:這個函數(hnsh)的目的是產生用于構造大方塊的四個小方塊,循環(huán)四次產生四個。利用這個函數語句的運算隨機產生(chnshng)0到7的一個數然后轉到這里,這里有八種類型,下面(xi mian)照應的每一組數組代表一個方塊的形狀。這里是通過坐標來繪圖的。舉個例子,第三組數組代表四個坐標,建立個xy坐標系,把每一個坐標畫出來,然后連線就出現了方塊為s形狀。這樣就產生了一個方塊。利用這個函數固定(gdng)隨機產生方塊位置為窗口中央,然后開始畫出方塊。4.2.3 游戲進行階段(檢測碰撞(pn zhun)、旋轉)檢測碰撞(pn zhun)是否下落 產生方塊后方塊需要落下,這時方塊落下的

22、條件就是檢測每一個方塊組每一個小方塊是否可以移動往某一個方向移動一格。利用這個函數,將重新定以后的x,y進行檢測,是否越界。當都不滿足上述條件時,重新賦值,畫出圖形。方塊的旋轉在.cpp先判斷每一個菱形是否為方塊,然后調用上述函數,將方塊組每一個方塊的y賦給x,將-x在賦給y,坐標變化,完成旋轉。4.2.4 消除(xioch)計分(滿行消除、計分)將要消除的行的上一行代替消除行檢測22行每行進行檢測小方塊個數滿行消除(xioch)將記錄滿行的行消除記錄滿行的行標方塊落下流程圖:記錄得分程序文字(wnz)簡述:利用上述語句,從上到下,對每一行的每一格進行檢測,是否有方塊,當每一個都有方塊時記錄行標。檢測完畢后消除記錄的行,利用后面的函數,用上一行代替要消除的那一行,依次代替。計分:下落一個為7分,消除一行得

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論