《基于Qt的俄羅斯方塊游戲》由會(huì)員分享,可在線閱讀,更多相關(guān)《基于Qt的俄羅斯方塊游戲(27頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、基于Qt的俄羅斯方塊游戲開發(fā)湖南工學(xué)院電氣與信息工程學(xué)院答辯人:曾奇凡專業(yè):電子信息工程指導(dǎo)老師:戴日光 設(shè)計(jì)任務(wù)與要求可行性研究Qt簡(jiǎn)要介紹游戲詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)游戲整體測(cè)試程序設(shè)計(jì)流程致謝 設(shè)計(jì)任務(wù)要求游戲的開始,停止,暫停,繼續(xù)游戲難度的設(shè)計(jì)分?jǐn)?shù)統(tǒng)計(jì)游戲顯示 可行性研究操作系統(tǒng):Microsoft Windows 7 Ultimate(32位)內(nèi)存:2G硬盤:320GCPU:奔騰P6100交互工具:鍵盤/鼠標(biāo) 顯示器:WXGA顯示器開發(fā)工具:Qt 4.7.4開 發(fā) 環(huán) 境 接 口 控 制本游戲通過鍵盤進(jìn)行操作,在Windows的操作系統(tǒng)下,利用鍵盤的上、下、左、右鍵對(duì)方塊進(jìn)行移動(dòng)變形,要使用
2、鍵盤的接口事件。 Qt簡(jiǎn)介 Qt是一個(gè)跨平臺(tái)的C+圖形用戶界面的應(yīng)用開發(fā)框架。它支持windows、linux/unix平臺(tái)、macintosh、Embedded平臺(tái)等,所以Qt所開發(fā)的應(yīng)用具有良好地可移植性。 Qt的 優(yōu) 良 特 性可移植性國際化 面向?qū)ο罂捎脩艋耐庥^ 獨(dú)有的Signal Slot機(jī)制開發(fā)程序的方便性強(qiáng)大的功能 高性能的工具 信號(hào)與槽的連接原理圖 定義一個(gè)枚舉類型,表示方塊的七種形狀,通過圖形實(shí)體類TetrixPiece的setRandomShape()方法隨機(jī)產(chǎn)生一個(gè)初值,用于產(chǎn)生圖形的某種狀態(tài),如圖:隨 機(jī) 產(chǎn) 生 一 個(gè) 數(shù)隨 機(jī) 數(shù) Z字 形 S字 形 直 線 型
3、T字 形 正 方 形 L字 形 反 L型 游戲詳細(xì)設(shè)計(jì)圖 形 的 產(chǎn) 生 每個(gè)形狀由4個(gè)小方塊組成,這里每行的四個(gè)坐標(biāo)即4個(gè)小方塊的坐標(biāo),其中橫向?yàn)閄,縱向?yàn)閅,上圖分別為Z字形、S字形、直線型、T字形、正方形、L字形和反L字形,各個(gè)圖形的坐標(biāo)依次如 下: 0, -1 , 0, 0 , -1, 0 , -1, 1 , 0, -1 , 0, 0 , 1, 0 , 1, 1 , 0, -1 , 0, 0 , 0, 1 , 0, 2 , -1, 0 , 0, 0 , 1, 0 , 0, 1 , 0, 0 , 1, 0 , 0, 1 , 1, 1 , -1, -1 , 0, -1 , 0, 0 , 0
4、, 1 , 1, -1 , 0, -1 , 0, 0 , 0, 1 圖 形 的 旋 轉(zhuǎn)圖形的旋轉(zhuǎn)是通過繪制4 個(gè)方向的方塊,在不同旋轉(zhuǎn)角度顯示不同方向的方塊來實(shí)現(xiàn)的。定義一個(gè)函數(shù)rotatedLeft() const,當(dāng)每次響應(yīng)鍵盤向上的方向鍵時(shí),方塊順時(shí)針旋轉(zhuǎn)90度,同時(shí)畫布刷新一次,這樣,方塊的變形就實(shí)現(xiàn)了。 方塊下移功能:判斷圖形能否向下移動(dòng),顯示下移后的界面,或者游戲結(jié)束。實(shí)現(xiàn):先向下移動(dòng)一步,此時(shí)并不在界面上顯示下移后的界面,判斷是否到底,若到底則消行記錄分?jǐn)?shù)、出現(xiàn)下一個(gè)圖形;判斷是否是否一開始就與其它圖形重合,若是則游戲結(jié)束;經(jīng)過以上判斷,此時(shí)方可顯示一下一步后的界面,并進(jìn)入下一次
5、計(jì)時(shí),流程圖如圖所示: 滿行及消行判斷功能:判斷是否有已滿行,然后把該行消去。實(shí)現(xiàn):游戲在方塊下移到底后,利用循環(huán)判斷有幾行已滿,并對(duì)已滿行進(jìn)行清零和進(jìn)行加分操作,同時(shí)更新窗口,從而實(shí)現(xiàn)消行的效果。 繪 制 游 戲 區(qū) 域 及 方 塊通過調(diào)用QPainter的drawLine的方法繪制游戲網(wǎng)格,調(diào)用QPainter的drawPixmap和drawRect繪制方塊背景和邊框。 鍵 盤 事 件 響 應(yīng) 俄羅斯方塊是通過上下左右來控制游戲的運(yùn)行,鍵盤響應(yīng)事件功能圖如圖所示: 鍵盤事件功能圖具體代碼實(shí)現(xiàn):通過重新實(shí)現(xiàn)虛函數(shù)QWidget:keyPressEvent來響應(yīng)相應(yīng)的鍵盤按鍵事件。判 斷 按
6、鍵判 斷 可 否 變形 , 圖 形 變化 調(diào) 用 函 數(shù) 判 斷 可 否移 動(dòng) 。 可以 則 移 動(dòng) 判 斷 可 否移 動(dòng) 。 可以 則 移 動(dòng) 可 以 則 默 認(rèn)下 移 一 步 ,否 則 下 到 底 不 是 這 4個(gè) 按鍵 , 則 接 收其 他 按 鍵 。 游戲主窗體的實(shí)現(xiàn)游 戲 主 窗 體 是 整 個(gè) 游 戲 的 顯 示 部 分 , 主 要 用 于放 置 繪 制 好 的 游 戲 區(qū) 域 , 顯 示 游 戲 玩 家 的 得 分情 況 、 關(guān) 卡 和 其 它 基 本 信 息 。 游 戲 區(qū) 域 的 寬 分成 10等 分 , 高 分 成 22等 分 , 也 就 是 說 每 行 有 10小 矩 形
7、 , 總 共 有 22行 ( BoardWidth = 10, BoardHeight = 22) 。 左 邊 是 LCD的 顯 示 部 分 ,LCD的 顯 示 最 大 為 五 位 數(shù) 。 分 為 得 分( scoreLcd) 、 關(guān) 卡 ( levelLcd) 、 消 行( linesLcd) 。 另 外 , 主 窗 體 還 設(shè) 計(jì) 了 游 戲 的選 項(xiàng) 按 鈕 , 方 便 游 戲 者 的 操 作 。游 戲 的 設(shè) 計(jì) 是 在 Qt中 整 個(gè) 工 程 下 完 成 的 , 游 戲設(shè) 計(jì) 完 成 后 , 系 統(tǒng) 源 文 件 布 局 如 圖 所 示 : 系統(tǒng)源文件布局圖 整體測(cè)試游戲基本功能測(cè)試游
8、 戲 設(shè) 計(jì) 完 成 后 經(jīng) 過 我 的 測(cè) 試 , 基 本 的 功 能 全 部都 已 經(jīng) 實(shí) 現(xiàn) , 點(diǎn) 擊 “ 開 始 ” 按 鈕 后 , 游 戲 的 界 面 如下 圖 : 操 作 演 示 圖 游 戲 基 本 信 息 顯 示 游戲可移植性的測(cè)試由于Qt是一個(gè)跨平臺(tái)的開發(fā)工具,利用Qt開發(fā)的程序具有可移植性,為了驗(yàn)證游戲能在不同的系統(tǒng)下運(yùn)行,我將游戲移植到Cent OS5.6下進(jìn)行測(cè)試,發(fā)現(xiàn)游戲能夠完美運(yùn)行,且不用作任何更改,運(yùn)行結(jié)果如圖下: 游 戲 在 Cent OS上 的 測(cè) 試 測(cè)試結(jié)果分析 經(jīng)過測(cè)試,俄羅斯方塊游戲能在不同的操作平臺(tái)上運(yùn)行,并且游戲的基本功能都已經(jīng)實(shí)現(xiàn)了,不過整體功能還不是很強(qiáng)大,作為游戲開發(fā)的初級(jí)版本,游戲在很多方面還需要進(jìn)一步完善。 謝謝觀看!Thanks!