拼圖游戲計算機畢業(yè)設計論文.doc_第1頁
拼圖游戲計算機畢業(yè)設計論文.doc_第2頁
拼圖游戲計算機畢業(yè)設計論文.doc_第3頁
拼圖游戲計算機畢業(yè)設計論文.doc_第4頁
拼圖游戲計算機畢業(yè)設計論文.doc_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

找畢業(yè)設計、項目源碼、編程視頻,就上碼農(nóng)網(wǎng)manong365嵌入式拼圖游戲摘要拼圖游戲是一種可變性很高且耐玩的游戲,在平時空閑的時候可以自己制定圖片然后享受智力拼圖,空閑之余不妨放松一下。拼圖是一種大人與小孩都能玩的游戲,它可以開發(fā)智力且?guī)椭蠹姨岣邉幽X解決問題的能力。玩拼圖還有助于手眼協(xié)調(diào),玩家能訓練和了解“部分”與“全部”的關系,可以知道許多的“部分”能拼湊出一個“全部”,以及一個“全部”是由許多“部分”所組成的。本課題主要是在Linux環(huán)境下用嵌入式C語言及QT對一小型游戲進行開發(fā)。選擇一個游戲的拼圖圖片,單擊方框可使圖片移動,從而能夠拼出一幅完整的圖片,這類游戲主要考察玩家的反應能力,在游戲之余提高觀察和應變能力。本游戲中通過分析C游戲的開發(fā)流程,對功能進行設計。該游戲主要實現(xiàn)了開始游戲,更改圖片,游戲難度選擇(9宮初級,16宮中級和25宮高級),戰(zhàn)況成績統(tǒng)計,成績排名,背景音樂等功能。游戲界面美觀,操作簡單,功能齊全,是廣大游戲愛好者都喜歡的一款游戲,具有一定的復雜性和可玩性。關鍵詞:拼圖游戲;嵌入式;Linux;QTEmbedded puzzle gameAbstractPuzzle game is a kind of high variability and playable game, in the usual idle time can develop their own pictures and enjoy intellectual puzzles, more than the idle wish to relax. Jigsaw is an adults and children can play the game, it can develop intelligence and ability to help people improve their brains to solve problems. Puzzles also help hand-eye coordination, players can train and learn some relationship with the All, you can know that many parts can piece together an All, as well as an All is composed of many partial composed. The main subject is embedded in the Linux environment using C language and QT for a small game development. Select a picture puzzle game, click the box to make the picture move, which can spell a complete picture, mainly on the type of game the players ability to respond to observe and improve the resilience of the remaining games.By analyzing this game C game development process, functional design. The main achievement of the game to start the game, change the image, select game difficulty (9 Palace beginner, 16 intermediate and 25 Palace Palace senior), fighting performance statistics, standings, background music and other functions. Game beautiful interface, easy operation, complete functions, is the majority of gamers like a game, with a certain complexity and playability.Key words: puzzle game;Embedded ; Linux;QTii目錄摘要iAbstractii1 前言11.1項目的目的與意義11.2系統(tǒng)開發(fā)方法介紹11.3本文結構32 項目開發(fā)語言及開發(fā)環(huán)境42.1 C語言42.1.1設計特性42.1.2高效性42.1.3可移植性52.1.4強大的功能和靈活性52.1.5面向編程人員52.1.6缺點52.2開發(fā)環(huán)境62.3 QT Creator62.4 嵌入式開發(fā)63 可行性分析83.1可行性分析所采用的方法和步驟83.2可行性分析83.3穩(wěn)定性94 總體設計104.1功能需求104.2總體設計方案104.3系統(tǒng)流程設計114.4功能模塊設計125 詳細設計155.1關鍵算法的設計與實現(xiàn)155.1.1圖片隨機分割問題165.1.2判斷圖片是否可以交換215.1.3更改圖片235.2模塊命名規(guī)則235.3 QSS文件275.4 用戶界面快照設計概述276 軟件測試296.1測試的目的及相關問題296.2測試方法306.3部分測試用例326.3.1拼圖測試326.3.2游戲難度測試336.3.3拼圖游戲窗體外觀測試336.4測試分析和總結34結 論35參考文獻37致謝38外文原文39中文原文501 前言1.1項目的目的與意義 現(xiàn)代科學技術的發(fā)展,改變了人類的生活,作為新世紀的大學生,應該站在時代發(fā)展的前沿,掌握最先進的現(xiàn)代科學技術知識,以適應社會的發(fā)展,應能夠獨立地完成各種應要面臨的任務,成為一名有創(chuàng)新意識的新型人才。 目前,很多技術領域依舊都涉及到了C語言。C語言是面向過程編程,并涉及到網(wǎng)絡、多線程等重要的基礎知識。該課題的主要目的是使C游戲開發(fā)者深入理解所學的C語言,并實踐于該游戲設計中,深刻體會以前所學的有關C程序設計方面的語言基礎、事件處理、應用程序以及圖形用戶界面設計等方面的知識,加深對結構化設計思想的理解,能對系統(tǒng)功能進行分析,并設計合理的結構等。學會使用C系統(tǒng),其中包括對程序的調(diào)試、運行、保存等知識的運用,還包括提高程序開發(fā)功能,能運用合理的方法簡化C程序的操作,開發(fā)過程中應培養(yǎng)分析問題、解決問題的能力。 基于QT組件技術的拼圖游戲軟件是一款具有娛樂性、益智性、便捷性的游戲軟件。此軟件可以使用戶放松心情,享受于拼圖游戲的樂趣之中。該游戲軟件可以讓用戶選擇適合自己的主題與難度,根據(jù)用戶的不同水平,鍛煉其圖片記憶能力以及拼湊還原能力。游戲結束后亦可讓用戶清晰了解到自己的游戲狀態(tài)水平,便于調(diào)整自己對這款游戲的新的難度要求。另外要求軟件設計精致,畫面親和,人機交互高效快捷,能夠給用戶帶來人性化的服務。軟件面向的主流群體集中在兒童,但也適宜青年人或者老人使用,提供了適宜各類用戶群體的圖片風格與難度設置。不論是旨在輕松娛樂,還是益智教育的目的,該軟件都是一款家庭生活中以及學習生活的必備軟件。 設計并實現(xiàn)基于QT組件技術的拼圖游戲軟件作為自己的畢業(yè)課題設計是對學校基礎課程、專業(yè)課程以及實踐課程的一次綜合性考查,旨在通過此次實踐環(huán)節(jié)的訓練,使我們能夠更加全面地掌握 游戲設計的整體策劃以及系統(tǒng)地掌握游戲設計的體系結構。通過 對我們所做游戲進行的類型確定、前期分析、整體策劃以及設計 制作過程中所涉及的相關技術的學習和掌握,提高了我們的實踐能力,為我們在計算機技術的應用上拓寬了道 路,對進入游戲設計這一領域的深入研究做了準備。此外,QT組件在界面開發(fā)上的應用一直處于熱門,這次的系統(tǒng)全面的實踐可以說是一次很好的鍛煉,會對以后工作生活帶來積極的影響。1.2系統(tǒng)開發(fā)方法介紹目前比較成熟的系統(tǒng)開發(fā)方法有:生命周期法、原型法、面向對象法等。生命周期法:把一個信息系統(tǒng)從其提出、分析、設計和使用,直到停止使用的整個生存期視為一個生命周期。整個生命周期劃分為五個主要工作階段:可行性分析階段、系統(tǒng)分析階段、系統(tǒng)設計階段、系統(tǒng)實施階段和系統(tǒng)運行、維護與評價階段。通常采用結構化系統(tǒng)分析和系統(tǒng)設計方法,自上而下分析、設計,強調(diào)開發(fā)過程的整體性和全局性;開發(fā)過程在時間上基本按階段進行,任務明確;結合用戶需求進行開發(fā);開發(fā)周期長,維護不方便。適用于開發(fā)需求較明確固定的信息系統(tǒng)?!敖Y構化分析方法(Structured Method,結構化方法)是面向過程的程序設計的方法,是強調(diào)開發(fā)方法的結構合理性以及所開發(fā)軟件的結構合理性的軟件開發(fā)方法。結構是指系統(tǒng)內(nèi)各個組成要素之間的相互聯(lián)系、相互作用的框架。結構化開發(fā)方法提出了一組提高軟件結構合理性的準則,如分解與抽象、模塊獨立性、信息隱蔽等。針對軟件生存周期各個不同的階段,它有結構化分析(SA)、結構化設計(SD)和結構化程序設計(SP)等方法。結構化分析方法給出一組幫助系統(tǒng)分析人員產(chǎn)生功能規(guī)約的原理與技術。它一般利用圖形表達用戶需求,使用的手段主要有數(shù)據(jù)流圖、數(shù)據(jù)字典、結構化語言、判定表以及判定樹等。原型法:是系統(tǒng)開發(fā)者在初步了解用戶需求的基礎上,開發(fā)出能實現(xiàn)系統(tǒng)最基本功能的一個原型,再根據(jù)用戶對原型使用與評價的意見,提出修改方案,修改完善原型,如此反復多次,直到得到用戶滿意的最終系統(tǒng)為止。開發(fā)過程以用戶為中心,開發(fā)周期短。適用于開發(fā)需求不夠明確或不斷變化的軟件。 面向對象方法(Object-Oriented Method)是一種把面向對象的思想應用于軟件開發(fā)過程中,指導開發(fā)活動的系統(tǒng)方法,簡稱OO (Object-Oriented)方法,是建立在“對象”概念基礎上的方法學。對象是由數(shù)據(jù)和容許的操作組成的封裝體,與客觀實體有直接對應關系,一個對象類定義了具有相似性質(zhì)的一組對象。而每繼承性是對具有層次關系的類的屬性和操作進行共享的一種方式。所謂面向對象就是基于對象概念,以對象為中心,以類和繼承為構造機制,來認識、理解、刻畫客觀世界和設計、構建相應的軟件系統(tǒng)。面向過程方法的開發(fā)過程:分析當前的情況,做出反映當前物理模型的DFD; 推導出等價的邏輯模型的DFD; 設計新的邏輯系統(tǒng),生成數(shù)據(jù)字典和基元描述; 建立人機接口,提出可供選擇的目標系統(tǒng)物理模型的DFD; 確定各種方案的成本和風險等級,據(jù)此對各種方案進行分析; 選擇一種方案; 建立完整的需求規(guī)約。面向對象方法的開發(fā)過程:分析確定在問題空間和解空間出現(xiàn)的全部對象及其屬性;確定應施加于每個對象的操作,即對象固有的處理能力;分析對象間的聯(lián)系,確定對象彼此間傳遞的消息; 設計對象的消息模式,消息模式和處理能力共同構成對象的外部特性;分析各個對象的外部特性,將具有相同外部特性的對象歸為一類,從而確定所需要的類;確定類間的繼承關系,將各對象的公共性質(zhì)放在較上層的類中描述,通過繼承來共享對公共性質(zhì)的描述;設計每個類關于對象外部特性的描述;設計每個類的內(nèi)部實現(xiàn)(數(shù)據(jù)結構和方法);創(chuàng)建所需的對象(類的實例),實現(xiàn)對象間應有的聯(lián)系(發(fā)消息)。1.3本文結構 本文第一部分主要以前言為主,說明了文章的研究背景、主要工作,概要說明了所做的工作。第二部分主要是C語言以及相應開發(fā)工具的相關知識介紹,介紹了C語言,開發(fā)環(huán)境,QT Creator。第三部分敘述了設計可行性。第四部分為總體設計,包括了功能需求,總體設計方案,系統(tǒng)流程設計,功能模塊的設計。第五部分為詳細設計,包括設計當中涉及到的相關算法,模塊命名,系統(tǒng)快照。第六部分為測試部分,包括了所涉及的測試用例,測試方法。2 項目開發(fā)語言及開發(fā)環(huán)境2.1 C語言C語言是一種計算機程序設計語言,它既具有高級語言的特點,又具有匯編語言的特點。它由美國貝爾實驗室的Dennis M. Ritchie于1972年推出,1978年后,C語言已先后被移植到大、中、小及微型機上,它可以作為工作系統(tǒng)設計語言,編寫系統(tǒng)應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬件的應用程序。它的應用范圍廣泛,具備很強的數(shù)據(jù)處理能力,不僅僅是在軟件開發(fā)上,而且各類科研都需要用到C語言,適于編寫系統(tǒng)軟件、三維、二維圖形和動畫,具體應用例如單片機以及嵌入式系統(tǒng)開發(fā)。2.1.1設計特性C是一種融合了控制特性的現(xiàn)代語言,而在計算機科學的理論與實踐中,控制特性是很重要的。其設計使得用戶可以自然地采用自頂而下的規(guī)劃、結構化的編程,以及模塊化的設計。這種做法使得編寫出的程序更可靠、更易懂。C語言是種通用的、面向過程的程序語言。它具有高效、靈活、功能豐富、表達力強和較高的移植性等特點,在程序員中備受青睞。下面只介紹了c語言最容易理解的一般特點,由于C語言的這些優(yōu)點,使c語言應用面很廣。2.1.2高效性C是一種高效的語言。在設計上它充分利用了當前計算機在能力上的優(yōu)點。C程序往往很緊湊且運行速度快。事實上,C可以表現(xiàn)出通常只有匯編語言才具有的精細的控制能力。如果愿意,可以細調(diào)程序以獲得最大的速度或最大的內(nèi)存使用率。C語言的數(shù)據(jù)類型有整型、實型、字符型、數(shù)組類型、指針類型、結構體類型、共用體類型等。這些數(shù)據(jù)類型能用來實現(xiàn)各種復雜的數(shù)據(jù)結構(如鏈表、樹、棧等)的運算,尤其是指針類型數(shù)據(jù),使用起來比趴sc從更為靈活、多樣;c語言的運算符包含的范圍很廣,共有34種運算符。c把括號、賦值、強制類型轉換等都作為運算符處理,從而使c的運算類型極其豐富,表達式類型多樣化。靈活使用各種運算符可以實現(xiàn)在其他高級語言中難以實現(xiàn)的運算。C語言的一個語句可完成多項操作,一個表達式也可以完成多項操作。書寫簡練,源程序短,因而輸入程序工作量小。2.1.3可移植性C是一種可移植語言。這意味著,在一個系統(tǒng)上編寫的C程序經(jīng)過很少改動或不經(jīng)修改就可以在其他系統(tǒng)上運行。如果修改是必須的,則通常只須改變伴隨主程序的一個頭文件中的幾項內(nèi)容即可。C在可移植性方面處于領先地位。C編譯器在大約40中系統(tǒng)上可用,包括從使用8位微處理器的計算機到Cary超級計算機。不過,程序中為訪問特定硬件設備或操作系統(tǒng)的特殊功能而專門編寫的部分,通常是不能移植的。由于C與UNIX的緊密聯(lián)系,UNIX系統(tǒng)通常都帶有一個C編譯器作為程序包的一部分。Linxu中同樣也包括一個C編譯器。個人計算機,包括運行不同版本的Windows和Macintosh的PC,可使用若干種C編譯器。所以不論使用的是家用計算機、專業(yè)工作站還是大型機,都很容易得到對您的特定系統(tǒng)的C編譯器。2.1.4強大的功能和靈活性C強大而又靈活。例如強大而靈活的UNIX操作系統(tǒng)的大部分便是C編寫的。其他語言(如FORTANT、Perl、Python、Pascal、LISP、Logo和BASIC)的許多編譯器和解釋器也都是C編寫的。C程序一般只比匯編程序生成的目標代碼的執(zhí)行效率低10一20卻比其他高級語言的執(zhí)行效率高。c語言的移植性好。主要表現(xiàn)在只要對這種語言稍加修改,使可以適應個向型號的機器或各類操作系統(tǒng)。2.1.5面向編程人員C面向編程人員的需要。它允許您訪問硬件,并可以操縱內(nèi)存中的特定位。它具有豐富的運算符供選擇,能夠簡潔地表達自己的意圖。在限制所能做的事情方面,C不如Pascal這樣的語言嚴格。這種靈活性是優(yōu)點,同時也是一種危險。優(yōu)點在于:許多任務在C中都簡單的多。危險在于:使用C時,可能會犯在使用其他語言時不會犯的錯誤。C給予更多的自由,但同時也會承擔更大的風險。另外,多數(shù)C實現(xiàn)都有一個大型的庫,其中包含有用的C函數(shù)。這些函數(shù)能夠處理編程人員通常面對的許多需求。2.1.6缺點C也有一些缺點,如C在表達自由方便的自由會增加風險。尤其是C對指針的使用,意味著可能會犯難以追蹤的編程錯誤。C的簡潔性與豐富的運算符相結合,使其可能會編寫出極難理解的代碼。2.2開發(fā)環(huán)境操作系統(tǒng):Ubuntu 12.0.1處理器:Pentium(R) Dual-Core CPU E6300 2.8GHz 2.8GH安裝內(nèi)存(RAM): 2.00GB編譯器:minGW移植到windows下的gcc編譯器調(diào)試器:minGW移植到windows下的gdb調(diào)試器Make:minGW中的mingw32-makeQt C+ GUI2.3 QT CreatorQt Creator是跨平臺的 Qt IDE, Qt Creator 是 Qt 被 Nokia 收購后推出的一款新的輕量級集成開發(fā)環(huán)境(IDE)。此 IDE 能夠跨平臺運行,支持的系統(tǒng)包括 Linux(32 位及 64 位)、Mac OS X 以及 Windows。根據(jù)官方描述,Qt Creator 的設計目標是使開發(fā)人員能夠利用 Qt 這個應用程序框架更加快速及輕易的完成開發(fā)任務。Qt Creator 包括項目生成向導、高級的 C+ 代碼編輯器、瀏覽文件及類的工具、集成了 Qt Designer、Qt Assistant、Qt Linguist、圖形化的 GDB 調(diào)試前端,集成 qmake 構建工具等。QtCreator 主要是為了幫助新 Qt 用戶更快速入門并運行項目,還可提高有經(jīng)驗的 Qt 開發(fā)人員的工作效率。語法標識和代碼完成功能輸入時進行靜態(tài)代碼檢驗以及提示樣式上下文相關的幫助代碼折疊括號匹配和括號選擇模式高級編輯功能。集成了領先的版本控制軟件,包括 Git、Perforce 和 Subversion開放式文件,無須知曉確切的名稱或位置搜索類和文件跨不同位置或文件沿用符號在頭文件和源文件,或在聲明和定義之間切換集成了特定于 Qt 的功能,如信號與槽 (Signals & Slots)圖示調(diào)試器, 對 Qt 類結構可一目了然集成了 Qt Designer 可視化布局和格式構建器只需單擊一下就可生成和運行 Qt 項目。2.4 嵌入式開發(fā)嵌入式系統(tǒng)無疑是當前最熱門最有發(fā)展前途的IT應用領域之一。嵌入式系統(tǒng)用在一些特定專用設備上,通常這些設備的硬件資源(如處理器、存儲器等)非常有限,并且對成本很敏感,有時對實時響應要求很高等。特別是隨著消費家電的智能化,嵌入式更顯重要。像我們平常見到的手機、PDA、電子字典、可視電話、VCD/DVD/MP3 Player、數(shù)字相機(DC)、數(shù)字攝像機(DV)、U-Disk、機頂盒(Set Top Box)、高清電視(HDTV)、游戲機、智能玩具、交換機、路由器、數(shù)控設備或儀表、汽車電子、家電控制系統(tǒng)、醫(yī)療儀器、航天航空設備等等都是典型的嵌入式系統(tǒng)。嵌入式系統(tǒng)是用來控制或者監(jiān)視機器、裝置、工廠等大規(guī)模設備的系統(tǒng)。嵌入式系統(tǒng)以應用為中心、以計算機技術為基礎、軟硬件可裁剪、功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統(tǒng)。嵌入式系統(tǒng)是一種專用的計算機系統(tǒng),作為裝置或設備的一部分。通常,嵌入式系統(tǒng)是一個控制程序存儲在ROM中的嵌入式處理器控制板。事實上,所有帶有數(shù)字接口的設備,如手表、微波爐、錄像機、汽車等,都使用嵌入式系統(tǒng),有些嵌入式系統(tǒng)還包含操作系統(tǒng),但大多數(shù)嵌入式系統(tǒng)都是由單個程序實現(xiàn)整個控制邏輯。嵌入式開發(fā)一般具有以下特點:可裁剪性。支持開放性和可伸縮性的體系結構。強實時性。EOS實時性一般較強,可用于各種設備控制中。統(tǒng)一的接口。提供設備統(tǒng)一的驅動接口。操作方便、簡單、提供友好的圖形GUI和圖形界面,追求易學易用。提供強大的網(wǎng)絡功能,支持TCP/IP協(xié)議及其他協(xié)議,提供TCP/UDP/IP/PPP協(xié)議支持及統(tǒng)一的MAC訪問層接口,為各種移動計算設備預留接口。強穩(wěn)定性,弱交互性。嵌入式系統(tǒng)一旦開始運行就不需要用戶過多的干預、這就要負責系統(tǒng)管理的EOS具有較強的穩(wěn)定性。嵌入式操作系統(tǒng)的用戶接口一般不提供操作命令,它通過系統(tǒng)的調(diào)用命令向用戶程序提供服務。固化代碼。在嵌入式系統(tǒng)中,嵌入式操作系統(tǒng)和應用軟件被固化在嵌入式系統(tǒng)計算機的ROM中。更好的硬件適應性,也就是良好的移植性。嵌入式系統(tǒng)和具體應用有機地結合在一起,它的升級換代也是和具體產(chǎn)品同步進行,因此嵌入式系統(tǒng)產(chǎn)品一旦進入市場,具有較長的生命周期。3 可行性分析3.1可行性分析所采用的方法和步驟可行性分析是通過對項目的主要內(nèi)容和配套條件,如市場需求、資源供應、建設規(guī)模、工藝路線、設備選型、環(huán)境影響、資金籌措、盈利能力等,從技術、經(jīng)濟、工程等方面進行調(diào)查研究和分析比較,并對項目建成以后可能取得的財務、經(jīng)濟效益及社會環(huán)境影響進行預測,從而提出該項目是否值得投資和如何進行建設的咨詢意見,為項目決策提供依據(jù)的一種綜合性的系統(tǒng)分析方法??尚行苑治鰬哂蓄A見性、公正性、可靠性、科學性的特點。我國可行性研究存在的主要問題,一是工程技術方案的研究論證深度不夠。按照國外的通常做法,可行性研究階段的研究深度應能達到定方案的程度,因此要求在工程技術方案論證,應達到Basic Design或Concept Design的程度,基本相當于我國的初步設計應達到的水平,應提出明確的設備清單;二是財務評價就項目論項目,這與國外利用企業(yè)理財?shù)睦碚摵头椒ㄟM行資本預算管理,對投資項目進行投資決策和融資決策的通行做法存在重大差異,并且在經(jīng)濟評價方面不恰當?shù)厥褂昧藝窠?jīng)濟評價的概念,由此引起一系列的認識誤區(qū);三是在市場分析、組織機構分析等方面與國外差別較大,研究深度嚴重不足;四是不重視多方案的比選及項目風險分析,或者分析的內(nèi)容、深度嚴重不足,缺乏項目周期各階段風險管理的統(tǒng)一籌劃及策略論證。通過研究分析拼圖游戲所具備的能力及實現(xiàn)的方法來確定主體結構。利用現(xiàn)階段我所能達到的能力,以最簡潔、最容易的辦法,邊開發(fā)邊測試邊修改,實現(xiàn)一個初級游戲軟件。3.2可行性分析由于本游戲是畢業(yè)設計,不過分強調(diào)直接的經(jīng)濟效益和其日后的發(fā)展方向,只在注重自身水平和能力的提高,同時對自身的經(jīng)濟要求也不高,只要有一臺能運行Java軟件的電腦便可,所以基本上不用考慮到經(jīng)濟問題。可用與本游戲的編程語言有VB,Java,C等,考慮到用于編寫程序的困難度,和對語言的了解程度,選擇C作為編程語言。需要對變量定義、變量初始化、界面初始化、游戲初始化、然后進入游戲、處理游戲過程中的各種操作。本游戲的開發(fā)作為畢業(yè)設計,目的在于鞏固先前所學的知識,以個人為單位,僅供個人平常娛樂所用,無須考慮社會影響,不用考慮法律、版權等社會因素,且此軟件的開發(fā)不觸犯法律,所以在這方面是完全可行的。3.3穩(wěn)定性現(xiàn)在做出來的只是一個拼圖游戲的核心部分,這些代碼經(jīng)過許多測試和修改穩(wěn)定性也比較強了。開始時鼠標單擊會選中拼圖區(qū)之外的圖塊,經(jīng)過修改后鼠標不會選中拼圖區(qū)之外的任何部分,map映射數(shù)組和selected結構在使用前都需要經(jīng)過測試保證其正確,然后才使用的。保證map數(shù)組不會出現(xiàn)越界錯誤,map數(shù)組和selected結構不會存入不正確的數(shù)據(jù)。這些都是經(jīng)過測試通過了的。鼠標單擊圖塊邊緣時選中的圖塊也是經(jīng)過精確的計算的到,不會出現(xiàn)單擊圖塊邊緣時明明是單擊的這個圖塊,卻由于計算偏差選中了另一個圖塊。這些精確的計算也都是通過了軟件的精確性測試通過了的。4 總體設計即對有關系統(tǒng)全局問題的設計,也就是設計系統(tǒng)總的處理方案,又稱系統(tǒng)概要設計。它包括:計算機配置設計、系統(tǒng)模塊結構設計、數(shù)據(jù)庫和文件設計、代碼設計以及系統(tǒng)可靠性與內(nèi)部控制設計等內(nèi)容。軟件功能分解屬于下列軟件開發(fā)中的總體設計階段。它包括:計算機配置設計、系統(tǒng)模塊結構設計、數(shù)據(jù)庫和文件設計、代碼設計以及系統(tǒng)可靠性與內(nèi)部控制設計等內(nèi)容。軟件功能分解屬于下列軟件開發(fā)中的總體設計階段。4.1功能需求用戶對于該拼圖游戲軟件的需求主要體現(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)圖片更換、重玩、返回界面、退出功能;4.2總體設計方案在開始游戲界面后,設計本程序能夠載入默認圖片(用戶也可以選擇想要的其它圖片),程序默認難度為9宮格(用戶也可以選擇想要的其他難度),還設計實現(xiàn)背景音樂的播放功能等。在本程序中,對于圖片的分割、拼湊、判斷圖片是否可以移動等都是設計的關鍵。總體設計方案中主要說明前期工作中對于分割圖片以及判斷拼圖是否成功這兩點的設計。對于分割圖片是用像素點來實現(xiàn)的,同時對圖片進行了自動縮放,這樣一來就可以使得圖片分割后看起來更連貫。拆分圖片后,把分好的圖片存儲到一個image數(shù)組中,對于可移動的塊其實是按鈕,每個按鈕上都有一個icon,通過隨機把image數(shù)組中的圖片通過imageIcon的轉化后附給一個按鈕,并將按鈕數(shù)組首先附給一個向量,然后用隨機數(shù)來確定對應向量的值,然后再附給對應數(shù)組按鈕,同時去除該值。也就是說在附值的時候圖片順序不變,變的而是數(shù)組按鈕的順序。對于圖片的是否拼圖成功的提示,主要是在每個按鈕中加個String的屬性值,而且對于正確的排序的值與正在排的各個值比較,一旦所有的按鈕對應的值與正確的排序一致,則為成功。4.3系統(tǒng)流程設計圖4-1流程圖符號在繪制程序框圖時,使用的符號說明如圖4-1所示,拼圖游戲系統(tǒng)處理方式的合理選擇,其實就是一個處理過程的設計問題。選擇處理方式實際上就是根據(jù)系統(tǒng)的任務、目標和環(huán)境條件,合理地選擇信息活動的形態(tài)及具體方法。程序流程圖又稱為方框圖。表示方法簡明直觀,是用來描述程序執(zhí)行的邏輯過程的。它把程序的基本步驟歸納為:處理、判斷、輸入/輸出、開始和結束等幾個基本功能,并用不同的記號加以表示,從而描述程序的執(zhí)行過程。系統(tǒng)流程圖表達的是系統(tǒng)各部件的流動情況,而不是表示對信息進行加工處理的控制過程。系統(tǒng)流程圖的作用表現(xiàn)在以下幾個方面:1,制作系統(tǒng)流程圖的過程是系統(tǒng)分析員全面了解系統(tǒng)業(yè)務處理概況的過程,它是系統(tǒng)分析員做進一步分析的依據(jù)。2,系統(tǒng)流程圖是系統(tǒng)分析員、管理員、業(yè)務操作員相互交流的工具。3,系統(tǒng)分析員可直接在系統(tǒng)流程圖上畫出可以有計算機處理的部分。4,可利用系統(tǒng)流程圖來分析業(yè)務流程的合理性。首先我在進行軟件代碼的編寫設計之前對于軟件的整體流程有一個大致的思路,如圖4-2,即先將圖片進行打散,然后即可進行拼圖的過程,然后可對于拼圖成功進行判斷。圖4-2拼圖游戲流程圖4.4功能模塊設計關于該拼圖游戲的功能木模塊設計,從邏輯上分析,該拼圖游戲主要分成2塊,也就是主要的兩個窗體,分別為游戲界面部分和游戲部分,下面對該款拼圖游戲進行功能設計分析。游戲功能分為圖片打散流程以及拼圖流程,如圖4-3和圖4-4。圖4-3 拼圖游戲隨機打散圖片流程圖4-4 拼圖游戲拼圖流程首先,我需要對軟件系統(tǒng)進行概要設計,即系統(tǒng)設計。概要設計需要對軟件系統(tǒng)的設計進行考慮,包括系統(tǒng)的基本處理流程、系統(tǒng)的組織結構、模塊劃分、功能分配、接口設計、運行設計、數(shù)據(jù)結構設計和出錯處理設計等,為軟件的詳細設計提供基礎。在概要設計的基礎上,我需要進行軟件系統(tǒng)的詳細設計。在詳細設計中,描述實 現(xiàn)具體模塊所涉及到的主要算法、數(shù)據(jù)結構、類的層次結構及調(diào)用關系,需要說明軟件系統(tǒng)各個層次中的每一個程序(每個模塊或子程序)的設計考慮,以便進行編碼和測試。應當保證軟件的需求完全分配給整個軟件。詳細設計應當足夠詳細,能夠根據(jù)詳細設計報告進行編碼。在軟件編碼階段,根據(jù)概要設計中對數(shù)據(jù)結構、算法分析和模塊實現(xiàn)等方面的設計要求,開始具體的編寫程序工作,分別實現(xiàn)各模塊的功能,從而實現(xiàn)對目標系統(tǒng)的功能、性能、接口、界面等方面的要求。在規(guī)范化的研發(fā)流程中,編碼工作在整個項目流程里最多不會超過1/2,通常在1/3的時間,所謂磨刀不誤砍柴功,設計過程完成的好,編碼效率就會極大提高,編碼時不同模塊之間的進度協(xié)調(diào)和協(xié)作是最需要小心的,也許一個小模塊的問題就可能影響了整體進度,讓很多程序員因此被迫停下工作等待,這種問題在很多研發(fā)過程中都出現(xiàn)過。5 詳細設計5.1關鍵算法的設計與實現(xiàn)對于一個拼圖游戲的核心來說,主要的模塊就是圖片的隨機打散模塊和拼圖模塊。我將屏幕窗口分成9塊,如圖5-1所示。圖5-1 拼圖區(qū)窗口關于八數(shù)碼問題,是該程序設計的一個難點,也是首要突破的一的難點,搞清楚八數(shù)碼函數(shù)的運算邏輯是該程序設計的關鍵。八數(shù)碼問題(九宮問題)在一個3*3的九宮中有1-8這8個數(shù)及一個空格隨機的擺放在其中的格子里。現(xiàn)在要求實現(xiàn)這個問題:將打亂的九宮格調(diào)整為與圖片吻合的形式。調(diào)整的規(guī)則是:每次只能將與空格(上、下、或左、右)相鄰的一個數(shù)字平移到空格中。具體分析,九宮問題中,程序產(chǎn)生的隨機排列轉換成目標共有兩種可能,而且這兩種不可能同時成立,也就是奇數(shù)排列和偶數(shù)排列。我們可以把一個隨機排列的數(shù)組從左到右從上到下用一個一維數(shù)組表示,我們就可以表示成8,7,1,5,2,6,3,4,0其中0代表空格。狀態(tài)為: 8 7 1 5 2 6 3 4 0在這個數(shù)組中我們首先計算它能夠重排列出來的結果,公式是:(),其中()就是一個數(shù)他前面比這個數(shù)小的數(shù)的個數(shù),為奇數(shù)和偶數(shù)各有一種解法。那么上面的數(shù)組我們就可以解出它的結果。(8)0;(數(shù)字8前沒有比其小的數(shù)字)(7)0;(1)0;(5)1;(數(shù)字5前有一個比其小的數(shù)字“1”)(2)1;(6)3;(3)2;(4)3;0001132310Y為偶數(shù),所以進行偶數(shù)排列。八數(shù)碼問題是該游戲軟件的設計重點,理解八數(shù)碼函數(shù)是程序設計的關鍵。八數(shù)碼問題用于拼圖游戲中圖片的拆分方法。也就是說,當運用到八數(shù)碼問題后,按照八數(shù)碼函數(shù)進行運算,才能保證圖片拆分后,經(jīng)過用戶的拼湊,最終可以完成整個拼圖游戲,而不會無解。5.1.1圖片隨機分割問題我們將圖像也分成和屏幕窗口一樣的9塊,如圖5-2所示。圖5-2 圖像分割在Qt中,視口是物理坐標系下指定的任意矩形,窗口指的是同一矩形,只不過是邏輯坐標系下的。我們先將視口設置成屏幕上的一塊,然后窗口設置成一塊大小和一塊圖像的大小一樣的矩形,我們將一塊圖像繪制到窗口中,經(jīng)過窗口-視口變換后就繪制到了視口所對應的屏幕上。為了實現(xiàn)圖像的隨機打散,使用一個全局的映射數(shù)組map33,map數(shù)組中存放的數(shù)字只能是08之間的數(shù)(包括0和8)。map00對應屏幕的0塊,map01對應屏幕的1塊,依次類推,map33對應屏幕的8塊。如果map00里面存放的數(shù)是8,那么我們就將圖像的第8塊繪制到屏幕的第0塊。如果map數(shù)組中的數(shù)字是隨機打亂的,那么我們通過這個映射數(shù)組將圖像繪制到屏幕上后,屏幕上將會是打亂的圖像。為了方便代碼的重用,我們將map數(shù)組的隨機打亂編寫到一個函數(shù)random()中,這樣游戲再玩一次的時候就可以直接再調(diào)用一次這個函數(shù)重新打散一次映射數(shù)組就可以了。map數(shù)組在初始化的時候,我們給map00map33依次放進去08,然后再調(diào)用一次random()函數(shù)后將圖像繪制到屏幕上去生成最初的打亂的圖像。random()函數(shù)的算法是這樣的,首先產(chǎn)生兩個隨機數(shù),然后再將這兩個隨機數(shù)對9求余的到兩個9以內(nèi)(即08且包括0和8)的隨機數(shù)randData1和randData2,然后對maprandData1/3randData1%3和maprandData2/3randData2%3進行交換。通過循環(huán)將這樣的交換多進行幾輪,然后就得到了一個隨機打散的映射數(shù)組map。代碼:算法1void PintuWindow:random()int temp = -1;int randData1 = -1;int randData2 = -1;srand(time(NULL);for (int i = 0; i 9; +i)randData1 = rand() % 9;randData2 = rand() % 9;temp = maprandData1/3randData1%3;maprandData1/3randData1%3 = maprandData2/3randData2%3;maprandData2/3randData2%3 = temp;update();算法2void PintuWindow:random() int temp = -1; int randData = -1; for (int i = 0; i 3; +i) for (int j = 0; j 3; +j) randData = rand() % 9; temp = mapij; mapij = maprandData/3randData%3; maprandData/3randData%3 = temp; 打散44void PintuWindow:random() int temp = -1; int randData = -1; for (int i = 0; i 3; +i) for (int j = 0; j 3; +j) randData = rand() % 9; temp = mapij; mapij = maprandData/3randData%3; maprandData/3randData%3 = temp; update();打散55void PintuWindow2:random() int temp = -1; int randData = -1; for (int i = 0; i 5; +i) for (int j = 0; j rect(),QPixmap(:/images/gamebackground.jpg); / 整體框架 painter.drawRect(10,10,980,480); painter.drawRect(15,15,970,470); painter.drawLine(498,15,498,485); painter.drawLine(502,15,502,485); / 繪圖區(qū)和原圖區(qū)的繪制 painter.setPen(QPen(Qt:white,2); painter.drawRect(20,20,473,460); painter.drawRect(507,20,473,460); / 窗口間距 int spaceX = 157; int spaceY = 153; / 加載圖像/* QString str = :/images/myImage; int num = qrand()%3+1; str +=QString:number(num); str +=.jpg; */ QImage image(strImg); /高、寬 int imageW = image.width(); int imageH = image.height(); /窗口間距 int spaceW = imageW / 3; int spaceH = imageH / 3; /原圖視窗體 painter.setViewport(507,20,473,460); painter.setWindow(0,0,imageW,imageH); /對比圖描繪 painter.drawImage(0,0,image); /拼圖區(qū)圖像 painter.setWindow(0,0,spaceW,spaceH); for (int i = 0; i 3; +i) for (int j = 0; j 3; +j) painter.setViewport(20 + i * spaceX + 1, 20 + j * spaceY + 1, spaceX, spaceY); painter.drawImage(0, 0, image, (mapij/3) * spaceW, (mapij%3) * spaceH, spaceW, spaceH); / 描繪網(wǎng)格線 painter.setViewport(20,20,473,460); painter.setWindow(0,0,473,460); painter.setPen(QPen(Qt:white,1); painter.drawLine(spaceX,0,spaceX,460);

溫馨提示

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

評論

0/150

提交評論