版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、找畢業(yè)設(shè)計、項目源碼、編程視頻,就上碼農(nóng)網(wǎng)manong365嵌入式拼圖游戲摘要拼圖游戲是一種可變性很高且耐玩的游戲,在平時空閑的時候可以自己制定圖片然后享受智力拼圖,空閑之余不妨放松一下。拼圖是一種大人與小孩都能玩的游戲,它可以開發(fā)智力且?guī)椭蠹姨岣邉幽X解決問題的能力。玩拼圖還有助于手眼協(xié)調(diào),玩家能訓(xùn)練和了解“部分”與“全部”的關(guān)系,可以知道許多的“部分”能拼湊出一個“全部”,以及一個“全部”是由許多“部分”所組成的。本課題主要是在Linux環(huán)境下用嵌入式C語言及QT對一小型游戲進(jìn)行開發(fā)。選擇一個游戲的拼圖圖片,單擊方框可使圖片移動,從而能夠拼出一幅完整的圖片,這類游戲主要考察玩家的反應(yīng)能力,
2、在游戲之余提高觀察和應(yīng)變能力。本游戲中通過分析C游戲的開發(fā)流程,對功能進(jìn)行設(shè)計。該游戲主要實現(xiàn)了開始游戲,更改圖片,游戲難度選擇(9宮初級,16宮中級和25宮高級),戰(zhàn)況成績統(tǒng)計,成績排名,背景音樂等功能。游戲界面美觀,操作簡單,功能齊全,是廣大游戲愛好者都喜歡的一款游戲,具有一定的復(fù)雜性和可玩性。關(guān)鍵詞:拼圖游戲;嵌入式;Linux;QTEmbedded puzzle gameAbstractPuzzle game is a kind of high variability and playable game, in the usual idle time can develop their
3、 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
4、 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
5、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, chang
6、e 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
7、complexity and playability.Key words: puzzle game;Embedded ; Linux;QTii目錄摘要iAbstractii1 前言11.1項目的目的與意義11.2系統(tǒng)開發(fā)方法介紹11.3本文結(jié)構(gòu)32 項目開發(fā)語言及開發(fā)環(huán)境42.1 C語言42.1.1設(shè)計特性42.1.2高效性42.1.3可移植性52.1.4強(qiáng)大的功能和靈活性52.1.5面向編程人員52.1.6缺點(diǎn)52.2開發(fā)環(huán)境62.3 QT Creator62.4 嵌入式開發(fā)63 可行性分析83.1可行性分析所采用的方法和步驟83.2可行性分析83.3穩(wěn)定性94 總體設(shè)計104.1功能需求1
8、04.2總體設(shè)計方案104.3系統(tǒng)流程設(shè)計114.4功能模塊設(shè)計125 詳細(xì)設(shè)計155.1關(guān)鍵算法的設(shè)計與實現(xiàn)155.1.1圖片隨機(jī)分割問題165.1.2判斷圖片是否可以交換215.1.3更改圖片235.2模塊命名規(guī)則235.3 QSS文件275.4 用戶界面快照設(shè)計概述276 軟件測試296.1測試的目的及相關(guān)問題296.2測試方法306.3部分測試用例326.3.1拼圖測試326.3.2游戲難度測試336.3.3拼圖游戲窗體外觀測試336.4測試分析和總結(jié)34結(jié) 論35參考文獻(xiàn)37致謝38外文原文39中文原文501 前言1.1項目的目的與意義 現(xiàn)代科學(xué)技術(shù)的發(fā)展,改變了人類的生活,作為新世
9、紀(jì)的大學(xué)生,應(yīng)該站在時代發(fā)展的前沿,掌握最先進(jìn)的現(xiàn)代科學(xué)技術(shù)知識,以適應(yīng)社會的發(fā)展,應(yīng)能夠獨(dú)立地完成各種應(yīng)要面臨的任務(wù),成為一名有創(chuàng)新意識的新型人才。 目前,很多技術(shù)領(lǐng)域依舊都涉及到了C語言。C語言是面向過程編程,并涉及到網(wǎng)絡(luò)、多線程等重要的基礎(chǔ)知識。該課題的主要目的是使C游戲開發(fā)者深入理解所學(xué)的C語言,并實踐于該游戲設(shè)計中,深刻體會以前所學(xué)的有關(guān)C程序設(shè)計方面的語言基礎(chǔ)、事件處理、應(yīng)用程序以及圖形用戶界面設(shè)計等方面的知識,加深對結(jié)構(gòu)化設(shè)計思想的理解,能對系統(tǒng)功能進(jìn)行分析,并設(shè)計合理的結(jié)構(gòu)等。學(xué)會使用C系統(tǒng),其中包括對程序的調(diào)試、運(yùn)行、保存等知識的運(yùn)用,還包括提高程序開發(fā)功能,能運(yùn)用合理的方法
10、簡化C程序的操作,開發(fā)過程中應(yīng)培養(yǎng)分析問題、解決問題的能力。 基于QT組件技術(shù)的拼圖游戲軟件是一款具有娛樂性、益智性、便捷性的游戲軟件。此軟件可以使用戶放松心情,享受于拼圖游戲的樂趣之中。該游戲軟件可以讓用戶選擇適合自己的主題與難度,根據(jù)用戶的不同水平,鍛煉其圖片記憶能力以及拼湊還原能力。游戲結(jié)束后亦可讓用戶清晰了解到自己的游戲狀態(tài)水平,便于調(diào)整自己對這款游戲的新的難度要求。另外要求軟件設(shè)計精致,畫面親和,人機(jī)交互高效快捷,能夠給用戶帶來人性化的服務(wù)。軟件面向的主流群體集中在兒童,但也適宜青年人或者老人使用,提供了適宜各類用戶群體的圖片風(fēng)格與難度設(shè)置。不論是旨在輕松娛樂,還是益智教育的目的,該
11、軟件都是一款家庭生活中以及學(xué)習(xí)生活的必備軟件。 設(shè)計并實現(xiàn)基于QT組件技術(shù)的拼圖游戲軟件作為自己的畢業(yè)課題設(shè)計是對學(xué)?;A(chǔ)課程、專業(yè)課程以及實踐課程的一次綜合性考查,旨在通過此次實踐環(huán)節(jié)的訓(xùn)練,使我們能夠更加全面地掌握 游戲設(shè)計的整體策劃以及系統(tǒng)地掌握游戲設(shè)計的體系結(jié)構(gòu)。通過 對我們所做游戲進(jìn)行的類型確定、前期分析、整體策劃以及設(shè)計 制作過程中所涉及的相關(guān)技術(shù)的學(xué)習(xí)和掌握,提高了我們的實踐能力,為我們在計算機(jī)技術(shù)的應(yīng)用上拓寬了道 路,對進(jìn)入游戲設(shè)計這一領(lǐng)域的深入研究做了準(zhǔn)備。此外,QT組件在界面開發(fā)上的應(yīng)用一直處于熱門,這次的系統(tǒng)全面的實踐可以說是一次很好的鍛煉,會對以后工作生活帶來積極的影響
12、。1.2系統(tǒng)開發(fā)方法介紹目前比較成熟的系統(tǒng)開發(fā)方法有:生命周期法、原型法、面向?qū)ο蠓ǖ?。生命周期法:把一個信息系統(tǒng)從其提出、分析、設(shè)計和使用,直到停止使用的整個生存期視為一個生命周期。整個生命周期劃分為五個主要工作階段:可行性分析階段、系統(tǒng)分析階段、系統(tǒng)設(shè)計階段、系統(tǒng)實施階段和系統(tǒng)運(yùn)行、維護(hù)與評價階段。通常采用結(jié)構(gòu)化系統(tǒng)分析和系統(tǒng)設(shè)計方法,自上而下分析、設(shè)計,強(qiáng)調(diào)開發(fā)過程的整體性和全局性;開發(fā)過程在時間上基本按階段進(jìn)行,任務(wù)明確;結(jié)合用戶需求進(jìn)行開發(fā);開發(fā)周期長,維護(hù)不方便。適用于開發(fā)需求較明確固定的信息系統(tǒng)。“結(jié)構(gòu)化分析方法(Structured Method,結(jié)構(gòu)化方法)是面向過程的程序設(shè)
13、計的方法,是強(qiáng)調(diào)開發(fā)方法的結(jié)構(gòu)合理性以及所開發(fā)軟件的結(jié)構(gòu)合理性的軟件開發(fā)方法。結(jié)構(gòu)是指系統(tǒng)內(nèi)各個組成要素之間的相互聯(lián)系、相互作用的框架。結(jié)構(gòu)化開發(fā)方法提出了一組提高軟件結(jié)構(gòu)合理性的準(zhǔn)則,如分解與抽象、模塊獨(dú)立性、信息隱蔽等。針對軟件生存周期各個不同的階段,它有結(jié)構(gòu)化分析(SA)、結(jié)構(gòu)化設(shè)計(SD)和結(jié)構(gòu)化程序設(shè)計(SP)等方法。結(jié)構(gòu)化分析方法給出一組幫助系統(tǒng)分析人員產(chǎn)生功能規(guī)約的原理與技術(shù)。它一般利用圖形表達(dá)用戶需求,使用的手段主要有數(shù)據(jù)流圖、數(shù)據(jù)字典、結(jié)構(gòu)化語言、判定表以及判定樹等。原型法:是系統(tǒng)開發(fā)者在初步了解用戶需求的基礎(chǔ)上,開發(fā)出能實現(xiàn)系統(tǒng)最基本功能的一個原型,再根據(jù)用戶對原型使用與評
14、價的意見,提出修改方案,修改完善原型,如此反復(fù)多次,直到得到用戶滿意的最終系統(tǒng)為止。開發(fā)過程以用戶為中心,開發(fā)周期短。適用于開發(fā)需求不夠明確或不斷變化的軟件。 面向?qū)ο蠓椒?Object-Oriented Method)是一種把面向?qū)ο蟮乃枷霊?yīng)用于軟件開發(fā)過程中,指導(dǎo)開發(fā)活動的系統(tǒng)方法,簡稱OO (Object-Oriented)方法,是建立在“對象”概念基礎(chǔ)上的方法學(xué)。對象是由數(shù)據(jù)和容許的操作組成的封裝體,與客觀實體有直接對應(yīng)關(guān)系,一個對象類定義了具有相似性質(zhì)的一組對象。而每繼承性是對具有層次關(guān)系的類的屬性和操作進(jìn)行共享的一種方式。所謂面向?qū)ο缶褪腔趯ο蟾拍睿詫ο鬄橹行?,以類和繼承為構(gòu)造
15、機(jī)制,來認(rèn)識、理解、刻畫客觀世界和設(shè)計、構(gòu)建相應(yīng)的軟件系統(tǒng)。面向過程方法的開發(fā)過程:分析當(dāng)前的情況,做出反映當(dāng)前物理模型的DFD; 推導(dǎo)出等價的邏輯模型的DFD; 設(shè)計新的邏輯系統(tǒng),生成數(shù)據(jù)字典和基元描述; 建立人機(jī)接口,提出可供選擇的目標(biāo)系統(tǒng)物理模型的DFD; 確定各種方案的成本和風(fēng)險等級,據(jù)此對各種方案進(jìn)行分析; 選擇一種方案; 建立完整的需求規(guī)約。面向?qū)ο蠓椒ǖ拈_發(fā)過程:分析確定在問題空間和解空間出現(xiàn)的全部對象及其屬性;確定應(yīng)施加于每個對象的操作,即對象固有的處理能力;分析對象間的聯(lián)系,確定對象彼此間傳遞的消息; 設(shè)計對象的消息模式,消息模式和處理能力共同構(gòu)成對象的外部特性;分析各個對象
16、的外部特性,將具有相同外部特性的對象歸為一類,從而確定所需要的類;確定類間的繼承關(guān)系,將各對象的公共性質(zhì)放在較上層的類中描述,通過繼承來共享對公共性質(zhì)的描述;設(shè)計每個類關(guān)于對象外部特性的描述;設(shè)計每個類的內(nèi)部實現(xiàn)(數(shù)據(jù)結(jié)構(gòu)和方法);創(chuàng)建所需的對象(類的實例),實現(xiàn)對象間應(yīng)有的聯(lián)系(發(fā)消息)。1.3本文結(jié)構(gòu) 本文第一部分主要以前言為主,說明了文章的研究背景、主要工作,概要說明了所做的工作。第二部分主要是C語言以及相應(yīng)開發(fā)工具的相關(guān)知識介紹,介紹了C語言,開發(fā)環(huán)境,QT Creator。第三部分?jǐn)⑹隽嗽O(shè)計可行性。第四部分為總體設(shè)計,包括了功能需求,總體設(shè)計方案,系統(tǒng)流程設(shè)計,功能模塊的設(shè)計。第五部
17、分為詳細(xì)設(shè)計,包括設(shè)計當(dāng)中涉及到的相關(guān)算法,模塊命名,系統(tǒng)快照。第六部分為測試部分,包括了所涉及的測試用例,測試方法。2 項目開發(fā)語言及開發(fā)環(huán)境2.1 C語言C語言是一種計算機(jī)程序設(shè)計語言,它既具有高級語言的特點(diǎn),又具有匯編語言的特點(diǎn)。它由美國貝爾實驗室的Dennis M. Ritchie于1972年推出,1978年后,C語言已先后被移植到大、中、小及微型機(jī)上,它可以作為工作系統(tǒng)設(shè)計語言,編寫系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計語言,編寫不依賴計算機(jī)硬件的應(yīng)用程序。它的應(yīng)用范圍廣泛,具備很強(qiáng)的數(shù)據(jù)處理能力,不僅僅是在軟件開發(fā)上,而且各類科研都需要用到C語言,適于編寫系統(tǒng)軟件、三維、二維圖形和動
18、畫,具體應(yīng)用例如單片機(jī)以及嵌入式系統(tǒng)開發(fā)。2.1.1設(shè)計特性C是一種融合了控制特性的現(xiàn)代語言,而在計算機(jī)科學(xué)的理論與實踐中,控制特性是很重要的。其設(shè)計使得用戶可以自然地采用自頂而下的規(guī)劃、結(jié)構(gòu)化的編程,以及模塊化的設(shè)計。這種做法使得編寫出的程序更可靠、更易懂。C語言是種通用的、面向過程的程序語言。它具有高效、靈活、功能豐富、表達(dá)力強(qiáng)和較高的移植性等特點(diǎn),在程序員中備受青睞。下面只介紹了c語言最容易理解的一般特點(diǎn),由于C語言的這些優(yōu)點(diǎn),使c語言應(yīng)用面很廣。2.1.2高效性C是一種高效的語言。在設(shè)計上它充分利用了當(dāng)前計算機(jī)在能力上的優(yōu)點(diǎn)。C程序往往很緊湊且運(yùn)行速度快。事實上,C可以表現(xiàn)出通常只有匯
19、編語言才具有的精細(xì)的控制能力。如果愿意,可以細(xì)調(diào)程序以獲得最大的速度或最大的內(nèi)存使用率。C語言的數(shù)據(jù)類型有整型、實型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等。這些數(shù)據(jù)類型能用來實現(xiàn)各種復(fù)雜的數(shù)據(jù)結(jié)構(gòu)(如鏈表、樹、棧等)的運(yùn)算,尤其是指針類型數(shù)據(jù),使用起來比趴sc從更為靈活、多樣;c語言的運(yùn)算符包含的范圍很廣,共有34種運(yùn)算符。c把括號、賦值、強(qiáng)制類型轉(zhuǎn)換等都作為運(yùn)算符處理,從而使c的運(yùn)算類型極其豐富,表達(dá)式類型多樣化。靈活使用各種運(yùn)算符可以實現(xiàn)在其他高級語言中難以實現(xiàn)的運(yùn)算。C語言的一個語句可完成多項操作,一個表達(dá)式也可以完成多項操作。書寫簡練,源程序短,因而輸入程序工作量小。2
20、.1.3可移植性C是一種可移植語言。這意味著,在一個系統(tǒng)上編寫的C程序經(jīng)過很少改動或不經(jīng)修改就可以在其他系統(tǒng)上運(yùn)行。如果修改是必須的,則通常只須改變伴隨主程序的一個頭文件中的幾項內(nèi)容即可。C在可移植性方面處于領(lǐng)先地位。C編譯器在大約40中系統(tǒng)上可用,包括從使用8位微處理器的計算機(jī)到Cary超級計算機(jī)。不過,程序中為訪問特定硬件設(shè)備或操作系統(tǒng)的特殊功能而專門編寫的部分,通常是不能移植的。由于C與UNIX的緊密聯(lián)系,UNIX系統(tǒng)通常都帶有一個C編譯器作為程序包的一部分。Linxu中同樣也包括一個C編譯器。個人計算機(jī),包括運(yùn)行不同版本的Windows和Macintosh的PC,可使用若干種C編譯器。
21、所以不論使用的是家用計算機(jī)、專業(yè)工作站還是大型機(jī),都很容易得到對您的特定系統(tǒng)的C編譯器。2.1.4強(qiáng)大的功能和靈活性C強(qiáng)大而又靈活。例如強(qiáng)大而靈活的UNIX操作系統(tǒng)的大部分便是C編寫的。其他語言(如FORTANT、Perl、Python、Pascal、LISP、Logo和BASIC)的許多編譯器和解釋器也都是C編寫的。C程序一般只比匯編程序生成的目標(biāo)代碼的執(zhí)行效率低10一20卻比其他高級語言的執(zhí)行效率高。c語言的移植性好。主要表現(xiàn)在只要對這種語言稍加修改,使可以適應(yīng)個向型號的機(jī)器或各類操作系統(tǒng)。2.1.5面向編程人員C面向編程人員的需要。它允許您訪問硬件,并可以操縱內(nèi)存中的特定位。它具有豐富的
22、運(yùn)算符供選擇,能夠簡潔地表達(dá)自己的意圖。在限制所能做的事情方面,C不如Pascal這樣的語言嚴(yán)格。這種靈活性是優(yōu)點(diǎn),同時也是一種危險。優(yōu)點(diǎn)在于:許多任務(wù)在C中都簡單的多。危險在于:使用C時,可能會犯在使用其他語言時不會犯的錯誤。C給予更多的自由,但同時也會承擔(dān)更大的風(fēng)險。另外,多數(shù)C實現(xiàn)都有一個大型的庫,其中包含有用的C函數(shù)。這些函數(shù)能夠處理編程人員通常面對的許多需求。2.1.6缺點(diǎn)C也有一些缺點(diǎn),如C在表達(dá)自由方便的自由會增加風(fēng)險。尤其是C對指針的使用,意味著可能會犯難以追蹤的編程錯誤。C的簡潔性與豐富的運(yùn)算符相結(jié)合,使其可能會編寫出極難理解的代碼。2.2開發(fā)環(huán)境操作系統(tǒng):Ubuntu 12
23、.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 能夠跨平臺運(yùn)行,支持的系統(tǒng)包括 Linux(32 位及 64 位)、Mac OS X 以及 Window
24、s。根據(jù)官方描述,Qt Creator 的設(shè)計目標(biāo)是使開發(fā)人員能夠利用 Qt 這個應(yīng)用程序框架更加快速及輕易的完成開發(fā)任務(wù)。Qt Creator 包括項目生成向?qū)?、高級?C+ 代碼編輯器、瀏覽文件及類的工具、集成了 Qt Designer、Qt Assistant、Qt Linguist、圖形化的 GDB 調(diào)試前端,集成 qmake 構(gòu)建工具等。QtCreator 主要是為了幫助新 Qt 用戶更快速入門并運(yùn)行項目,還可提高有經(jīng)驗的 Qt 開發(fā)人員的工作效率。語法標(biāo)識和代碼完成功能輸入時進(jìn)行靜態(tài)代碼檢驗以及提示樣式上下文相關(guān)的幫助代碼折疊括號匹配和括號選擇模式高級編輯功能。集成了領(lǐng)先的版本控制
25、軟件,包括 Git、Perforce 和 Subversion開放式文件,無須知曉確切的名稱或位置搜索類和文件跨不同位置或文件沿用符號在頭文件和源文件,或在聲明和定義之間切換集成了特定于 Qt 的功能,如信號與槽 (Signals & Slots)圖示調(diào)試器, 對 Qt 類結(jié)構(gòu)可一目了然集成了 Qt Designer 可視化布局和格式構(gòu)建器只需單擊一下就可生成和運(yùn)行 Qt 項目。2.4 嵌入式開發(fā)嵌入式系統(tǒng)無疑是當(dāng)前最熱門最有發(fā)展前途的IT應(yīng)用領(lǐng)域之一。嵌入式系統(tǒng)用在一些特定專用設(shè)備上,通常這些設(shè)備的硬件資源(如處理器、存儲器等)非常有限,并且對成本很敏感,有時對實時響應(yīng)要求很高等。特別是隨著
26、消費(fèi)家電的智能化,嵌入式更顯重要。像我們平常見到的手機(jī)、PDA、電子字典、可視電話、VCD/DVD/MP3 Player、數(shù)字相機(jī)(DC)、數(shù)字?jǐn)z像機(jī)(DV)、U-Disk、機(jī)頂盒(Set Top Box)、高清電視(HDTV)、游戲機(jī)、智能玩具、交換機(jī)、路由器、數(shù)控設(shè)備或儀表、汽車電子、家電控制系統(tǒng)、醫(yī)療儀器、航天航空設(shè)備等等都是典型的嵌入式系統(tǒng)。嵌入式系統(tǒng)是用來控制或者監(jiān)視機(jī)器、裝置、工廠等大規(guī)模設(shè)備的系統(tǒng)。嵌入式系統(tǒng)以應(yīng)用為中心、以計算機(jī)技術(shù)為基礎(chǔ)、軟硬件可裁剪、功能、可靠性、成本、體積、功耗嚴(yán)格要求的專用計算機(jī)系統(tǒng)。嵌入式系統(tǒng)是一種專用的計算機(jī)系統(tǒng),作為裝置或設(shè)備的一部分。通常,嵌入式
27、系統(tǒng)是一個控制程序存儲在ROM中的嵌入式處理器控制板。事實上,所有帶有數(shù)字接口的設(shè)備,如手表、微波爐、錄像機(jī)、汽車等,都使用嵌入式系統(tǒng),有些嵌入式系統(tǒng)還包含操作系統(tǒng),但大多數(shù)嵌入式系統(tǒng)都是由單個程序?qū)崿F(xiàn)整個控制邏輯。嵌入式開發(fā)一般具有以下特點(diǎn):可裁剪性。支持開放性和可伸縮性的體系結(jié)構(gòu)。強(qiáng)實時性。EOS實時性一般較強(qiáng),可用于各種設(shè)備控制中。統(tǒng)一的接口。提供設(shè)備統(tǒng)一的驅(qū)動接口。操作方便、簡單、提供友好的圖形GUI和圖形界面,追求易學(xué)易用。提供強(qiáng)大的網(wǎng)絡(luò)功能,支持TCP/IP協(xié)議及其他協(xié)議,提供TCP/UDP/IP/PPP協(xié)議支持及統(tǒng)一的MAC訪問層接口,為各種移動計算設(shè)備預(yù)留接口。強(qiáng)穩(wěn)定性,弱交互
28、性。嵌入式系統(tǒng)一旦開始運(yùn)行就不需要用戶過多的干預(yù)、這就要負(fù)責(zé)系統(tǒng)管理的EOS具有較強(qiáng)的穩(wěn)定性。嵌入式操作系統(tǒng)的用戶接口一般不提供操作命令,它通過系統(tǒng)的調(diào)用命令向用戶程序提供服務(wù)。固化代碼。在嵌入式系統(tǒng)中,嵌入式操作系統(tǒng)和應(yīng)用軟件被固化在嵌入式系統(tǒng)計算機(jī)的ROM中。更好的硬件適應(yīng)性,也就是良好的移植性。嵌入式系統(tǒng)和具體應(yīng)用有機(jī)地結(jié)合在一起,它的升級換代也是和具體產(chǎn)品同步進(jìn)行,因此嵌入式系統(tǒng)產(chǎn)品一旦進(jìn)入市場,具有較長的生命周期。3 可行性分析3.1可行性分析所采用的方法和步驟可行性分析是通過對項目的主要內(nèi)容和配套條件,如市場需求、資源供應(yīng)、建設(shè)規(guī)模、工藝路線、設(shè)備選型、環(huán)境影響、資金籌措、盈利能力
29、等,從技術(shù)、經(jīng)濟(jì)、工程等方面進(jìn)行調(diào)查研究和分析比較,并對項目建成以后可能取得的財務(wù)、經(jīng)濟(jì)效益及社會環(huán)境影響進(jìn)行預(yù)測,從而提出該項目是否值得投資和如何進(jìn)行建設(shè)的咨詢意見,為項目決策提供依據(jù)的一種綜合性的系統(tǒng)分析方法??尚行苑治鰬?yīng)具有預(yù)見性、公正性、可靠性、科學(xué)性的特點(diǎn)。我國可行性研究存在的主要問題,一是工程技術(shù)方案的研究論證深度不夠。按照國外的通常做法,可行性研究階段的研究深度應(yīng)能達(dá)到定方案的程度,因此要求在工程技術(shù)方案論證,應(yīng)達(dá)到Basic Design或Concept Design的程度,基本相當(dāng)于我國的初步設(shè)計應(yīng)達(dá)到的水平,應(yīng)提出明確的設(shè)備清單;二是財務(wù)評價就項目論項目,這與國外利用企業(yè)理
30、財?shù)睦碚摵头椒ㄟM(jìn)行資本預(yù)算管理,對投資項目進(jìn)行投資決策和融資決策的通行做法存在重大差異,并且在經(jīng)濟(jì)評價方面不恰當(dāng)?shù)厥褂昧藝窠?jīng)濟(jì)評價的概念,由此引起一系列的認(rèn)識誤區(qū);三是在市場分析、組織機(jī)構(gòu)分析等方面與國外差別較大,研究深度嚴(yán)重不足;四是不重視多方案的比選及項目風(fēng)險分析,或者分析的內(nèi)容、深度嚴(yán)重不足,缺乏項目周期各階段風(fēng)險管理的統(tǒng)一籌劃及策略論證。通過研究分析拼圖游戲所具備的能力及實現(xiàn)的方法來確定主體結(jié)構(gòu)。利用現(xiàn)階段我所能達(dá)到的能力,以最簡潔、最容易的辦法,邊開發(fā)邊測試邊修改,實現(xiàn)一個初級游戲軟件。3.2可行性分析由于本游戲是畢業(yè)設(shè)計,不過分強(qiáng)調(diào)直接的經(jīng)濟(jì)效益和其日后的發(fā)展方向,只在注重自身水
31、平和能力的提高,同時對自身的經(jīng)濟(jì)要求也不高,只要有一臺能運(yùn)行Java軟件的電腦便可,所以基本上不用考慮到經(jīng)濟(jì)問題。可用與本游戲的編程語言有VB,Java,C等,考慮到用于編寫程序的困難度,和對語言的了解程度,選擇C作為編程語言。需要對變量定義、變量初始化、界面初始化、游戲初始化、然后進(jìn)入游戲、處理游戲過程中的各種操作。本游戲的開發(fā)作為畢業(yè)設(shè)計,目的在于鞏固先前所學(xué)的知識,以個人為單位,僅供個人平常娛樂所用,無須考慮社會影響,不用考慮法律、版權(quán)等社會因素,且此軟件的開發(fā)不觸犯法律,所以在這方面是完全可行的。3.3穩(wěn)定性現(xiàn)在做出來的只是一個拼圖游戲的核心部分,這些代碼經(jīng)過許多測試和修改穩(wěn)定性也比較
32、強(qiáng)了。開始時鼠標(biāo)單擊會選中拼圖區(qū)之外的圖塊,經(jīng)過修改后鼠標(biāo)不會選中拼圖區(qū)之外的任何部分,map映射數(shù)組和selected結(jié)構(gòu)在使用前都需要經(jīng)過測試保證其正確,然后才使用的。保證map數(shù)組不會出現(xiàn)越界錯誤,map數(shù)組和selected結(jié)構(gòu)不會存入不正確的數(shù)據(jù)。這些都是經(jīng)過測試通過了的。鼠標(biāo)單擊圖塊邊緣時選中的圖塊也是經(jīng)過精確的計算的到,不會出現(xiàn)單擊圖塊邊緣時明明是單擊的這個圖塊,卻由于計算偏差選中了另一個圖塊。這些精確的計算也都是通過了軟件的精確性測試通過了的。4 總體設(shè)計即對有關(guān)系統(tǒng)全局問題的設(shè)計,也就是設(shè)計系統(tǒng)總的處理方案,又稱系統(tǒng)概要設(shè)計。它包括:計算機(jī)配置設(shè)計、系統(tǒng)模塊結(jié)構(gòu)設(shè)計、數(shù)據(jù)庫和
33、文件設(shè)計、代碼設(shè)計以及系統(tǒng)可靠性與內(nèi)部控制設(shè)計等內(nèi)容。軟件功能分解屬于下列軟件開發(fā)中的總體設(shè)計階段。它包括:計算機(jī)配置設(shè)計、系統(tǒng)模塊結(jié)構(gòu)設(shè)計、數(shù)據(jù)庫和文件設(shè)計、代碼設(shè)計以及系統(tǒng)可靠性與內(nèi)部控制設(shè)計等內(nèi)容。軟件功能分解屬于下列軟件開發(fā)中的總體設(shè)計階段。4.1功能需求用戶對于該拼圖游戲軟件的需求主要體現(xiàn)在以下幾個功能:1. 實現(xiàn)程序GUI圖形界面;2. 實現(xiàn)游戲開始、退出等功能;3. 實現(xiàn)鼠標(biāo)或鍵盤事件響應(yīng)模塊的功能;4. 實現(xiàn)可選難度等級功能;5. 實現(xiàn)輸贏自動判別功能;6. 實現(xiàn)游戲圖片更換功能;7. 實現(xiàn)進(jìn)行游戲同時可以查看原圖功能;8. 實現(xiàn)游戲內(nèi)圖片更換、重玩、返回界面、退出功能;4.2
34、總體設(shè)計方案在開始游戲界面后,設(shè)計本程序能夠載入默認(rèn)圖片(用戶也可以選擇想要的其它圖片),程序默認(rèn)難度為9宮格(用戶也可以選擇想要的其他難度),還設(shè)計實現(xiàn)背景音樂的播放功能等。在本程序中,對于圖片的分割、拼湊、判斷圖片是否可以移動等都是設(shè)計的關(guān)鍵??傮w設(shè)計方案中主要說明前期工作中對于分割圖片以及判斷拼圖是否成功這兩點(diǎn)的設(shè)計。對于分割圖片是用像素點(diǎn)來實現(xiàn)的,同時對圖片進(jìn)行了自動縮放,這樣一來就可以使得圖片分割后看起來更連貫。拆分圖片后,把分好的圖片存儲到一個image數(shù)組中,對于可移動的塊其實是按鈕,每個按鈕上都有一個icon,通過隨機(jī)把image數(shù)組中的圖片通過imageIcon的轉(zhuǎn)化后附給一
35、個按鈕,并將按鈕數(shù)組首先附給一個向量,然后用隨機(jī)數(shù)來確定對應(yīng)向量的值,然后再附給對應(yīng)數(shù)組按鈕,同時去除該值。也就是說在附值的時候圖片順序不變,變的而是數(shù)組按鈕的順序。對于圖片的是否拼圖成功的提示,主要是在每個按鈕中加個String的屬性值,而且對于正確的排序的值與正在排的各個值比較,一旦所有的按鈕對應(yīng)的值與正確的排序一致,則為成功。4.3系統(tǒng)流程設(shè)計圖4-1流程圖符號在繪制程序框圖時,使用的符號說明如圖4-1所示,拼圖游戲系統(tǒng)處理方式的合理選擇,其實就是一個處理過程的設(shè)計問題。選擇處理方式實際上就是根據(jù)系統(tǒng)的任務(wù)、目標(biāo)和環(huán)境條件,合理地選擇信息活動的形態(tài)及具體方法。程序流程圖又稱為方框圖。表示
36、方法簡明直觀,是用來描述程序執(zhí)行的邏輯過程的。它把程序的基本步驟歸納為:處理、判斷、輸入/輸出、開始和結(jié)束等幾個基本功能,并用不同的記號加以表示,從而描述程序的執(zhí)行過程。系統(tǒng)流程圖表達(dá)的是系統(tǒng)各部件的流動情況,而不是表示對信息進(jìn)行加工處理的控制過程。系統(tǒng)流程圖的作用表現(xiàn)在以下幾個方面:1,制作系統(tǒng)流程圖的過程是系統(tǒng)分析員全面了解系統(tǒng)業(yè)務(wù)處理概況的過程,它是系統(tǒng)分析員做進(jìn)一步分析的依據(jù)。2,系統(tǒng)流程圖是系統(tǒng)分析員、管理員、業(yè)務(wù)操作員相互交流的工具。3,系統(tǒng)分析員可直接在系統(tǒng)流程圖上畫出可以有計算機(jī)處理的部分。4,可利用系統(tǒng)流程圖來分析業(yè)務(wù)流程的合理性。首先我在進(jìn)行軟件代碼的編寫設(shè)計之前對于軟件的
37、整體流程有一個大致的思路,如圖4-2,即先將圖片進(jìn)行打散,然后即可進(jìn)行拼圖的過程,然后可對于拼圖成功進(jìn)行判斷。圖4-2拼圖游戲流程圖4.4功能模塊設(shè)計關(guān)于該拼圖游戲的功能木模塊設(shè)計,從邏輯上分析,該拼圖游戲主要分成2塊,也就是主要的兩個窗體,分別為游戲界面部分和游戲部分,下面對該款拼圖游戲進(jìn)行功能設(shè)計分析。游戲功能分為圖片打散流程以及拼圖流程,如圖4-3和圖4-4。圖4-3 拼圖游戲隨機(jī)打散圖片流程圖4-4 拼圖游戲拼圖流程首先,我需要對軟件系統(tǒng)進(jìn)行概要設(shè)計,即系統(tǒng)設(shè)計。概要設(shè)計需要對軟件系統(tǒng)的設(shè)計進(jìn)行考慮,包括系統(tǒng)的基本處理流程、系統(tǒng)的組織結(jié)構(gòu)、模塊劃分、功能分配、接口設(shè)計、運(yùn)行設(shè)計、數(shù)據(jù)結(jié)
38、構(gòu)設(shè)計和出錯處理設(shè)計等,為軟件的詳細(xì)設(shè)計提供基礎(chǔ)。在概要設(shè)計的基礎(chǔ)上,我需要進(jìn)行軟件系統(tǒng)的詳細(xì)設(shè)計。在詳細(xì)設(shè)計中,描述實 現(xiàn)具體模塊所涉及到的主要算法、數(shù)據(jù)結(jié)構(gòu)、類的層次結(jié)構(gòu)及調(diào)用關(guān)系,需要說明軟件系統(tǒng)各個層次中的每一個程序(每個模塊或子程序)的設(shè)計考慮,以便進(jìn)行編碼和測試。應(yīng)當(dāng)保證軟件的需求完全分配給整個軟件。詳細(xì)設(shè)計應(yīng)當(dāng)足夠詳細(xì),能夠根據(jù)詳細(xì)設(shè)計報告進(jìn)行編碼。在軟件編碼階段,根據(jù)概要設(shè)計中對數(shù)據(jù)結(jié)構(gòu)、算法分析和模塊實現(xiàn)等方面的設(shè)計要求,開始具體的編寫程序工作,分別實現(xiàn)各模塊的功能,從而實現(xiàn)對目標(biāo)系統(tǒng)的功能、性能、接口、界面等方面的要求。在規(guī)范化的研發(fā)流程中,編碼工作在整個項目流程里最多不會
39、超過1/2,通常在1/3的時間,所謂磨刀不誤砍柴功,設(shè)計過程完成的好,編碼效率就會極大提高,編碼時不同模塊之間的進(jìn)度協(xié)調(diào)和協(xié)作是最需要小心的,也許一個小模塊的問題就可能影響了整體進(jìn)度,讓很多程序員因此被迫停下工作等待,這種問題在很多研發(fā)過程中都出現(xiàn)過。5 詳細(xì)設(shè)計5.1關(guān)鍵算法的設(shè)計與實現(xiàn)對于一個拼圖游戲的核心來說,主要的模塊就是圖片的隨機(jī)打散模塊和拼圖模塊。我將屏幕窗口分成9塊,如圖5-1所示。圖5-1 拼圖區(qū)窗口關(guān)于八數(shù)碼問題,是該程序設(shè)計的一個難點(diǎn),也是首要突破的一的難點(diǎn),搞清楚八數(shù)碼函數(shù)的運(yùn)算邏輯是該程序設(shè)計的關(guān)鍵。八數(shù)碼問題(九宮問題)在一個3*3的九宮中有1-8這8個數(shù)及一個空格隨
40、機(jī)的擺放在其中的格子里?,F(xiàn)在要求實現(xiàn)這個問題:將打亂的九宮格調(diào)整為與圖片吻合的形式。調(diào)整的規(guī)則是:每次只能將與空格(上、下、或左、右)相鄰的一個數(shù)字平移到空格中。具體分析,九宮問題中,程序產(chǎn)生的隨機(jī)排列轉(zhuǎn)換成目標(biāo)共有兩種可能,而且這兩種不可能同時成立,也就是奇數(shù)排列和偶數(shù)排列。我們可以把一個隨機(jī)排列的數(shù)組從左到右從上到下用一個一維數(shù)組表示,我們就可以表示成8,7,1,5,2,6,3,4,0其中0代表空格。狀態(tài)為: 8 7 1 5 2 6 3 4 0在這個數(shù)組中我們首先計算它能夠重排列出來的結(jié)果,公式是:(),其中()就是一個數(shù)他前面比這個數(shù)小的數(shù)的個數(shù),為奇數(shù)和偶數(shù)各有一種解法。那么上面的數(shù)組
41、我們就可以解出它的結(jié)果。(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ù),所以進(jìn)行偶數(shù)排列。八數(shù)碼問題是該游戲軟件的設(shè)計重點(diǎn),理解八數(shù)碼函數(shù)是程序設(shè)計的關(guān)鍵。八數(shù)碼問題用于拼圖游戲中圖片的拆分方法。也就是說,當(dāng)運(yùn)用到八數(shù)碼問題后,按照八數(shù)碼函數(shù)進(jìn)行運(yùn)算,才能保證圖片拆分后,經(jīng)過用戶的拼湊,最終可以完成整個拼圖游戲,而不會無解。5.1.1圖片隨機(jī)分割問題我們將圖像也分成和屏幕窗口一樣的9塊,如圖5-2所示。圖5-2 圖像分割在Qt中,視口是物理坐標(biāo)系下指定的任意矩形,窗口指
42、的是同一矩形,只不過是邏輯坐標(biāo)系下的。我們先將視口設(shè)置成屏幕上的一塊,然后窗口設(shè)置成一塊大小和一塊圖像的大小一樣的矩形,我們將一塊圖像繪制到窗口中,經(jīng)過窗口-視口變換后就繪制到了視口所對應(yīng)的屏幕上。為了實現(xiàn)圖像的隨機(jī)打散,使用一個全局的映射數(shù)組map33,map數(shù)組中存放的數(shù)字只能是08之間的數(shù)(包括0和8)。map00對應(yīng)屏幕的0塊,map01對應(yīng)屏幕的1塊,依次類推,map33對應(yīng)屏幕的8塊。如果map00里面存放的數(shù)是8,那么我們就將圖像的第8塊繪制到屏幕的第0塊。如果map數(shù)組中的數(shù)字是隨機(jī)打亂的,那么我們通過這個映射數(shù)組將圖像繪制到屏幕上后,屏幕上將會是打亂的圖像。為了方便代碼的重用
43、,我們將map數(shù)組的隨機(jī)打亂編寫到一個函數(shù)random()中,這樣游戲再玩一次的時候就可以直接再調(diào)用一次這個函數(shù)重新打散一次映射數(shù)組就可以了。map數(shù)組在初始化的時候,我們給map00map33依次放進(jìn)去08,然后再調(diào)用一次random()函數(shù)后將圖像繪制到屏幕上去生成最初的打亂的圖像。random()函數(shù)的算法是這樣的,首先產(chǎn)生兩個隨機(jī)數(shù),然后再將這兩個隨機(jī)數(shù)對9求余的到兩個9以內(nèi)(即08且包括0和8)的隨機(jī)數(shù)randData1和randData2,然后對maprandData1/3randData1%3和maprandData2/3randData2%3進(jìn)行交換。通過循環(huán)將這樣的交換多進(jìn)行
44、幾輪,然后就得到了一個隨機(jī)打散的映射數(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/3randD
45、ata2%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
46、; 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/gameb
47、ackground.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 s
48、paceY = 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
49、); 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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025屆高考語文二輪復(fù)習(xí)壓縮語段專項訓(xùn)練六含解析
- 2025年長春貨運(yùn)從業(yè)資格證題庫年答案
- 中國錦滌斜條絨項目投資可行性研究報告
- 中國檳榔包裝袋項目投資可行性研究報告
- 螺旋浴巾行業(yè)深度研究報告
- 2025資產(chǎn)擔(dān)保合同
- 2025北京市建材買賣合同(衛(wèi)浴潔具類)
- 上海視覺藝術(shù)學(xué)院《氣力輸送與廠內(nèi)運(yùn)輸》2023-2024學(xué)年第一學(xué)期期末試卷
- 上海視覺藝術(shù)學(xué)院《電子信息工程專業(yè)綜合設(shè)計》2023-2024學(xué)年第一學(xué)期期末試卷
- 上海商學(xué)院《護(hù)理臨床思維訓(xùn)練》2023-2024學(xué)年第一學(xué)期期末試卷
- 其他常見疾病的康復(fù)
- 例談實驗教學(xué)的強(qiáng)化與優(yōu)化(吳加澍)(共39張)
- 【建模教程】-數(shù)學(xué)建模題目及答案-數(shù)學(xué)建模100題
- 水上通航安全維護(hù)方案
- 幼兒口頭作文800字(通用范文6篇)
- 2023年高考真題-地理(浙江卷)含答案
- 泥水平衡機(jī)械頂管施工專項方案設(shè)計
- 2023年高校財務(wù)處長述職報告范文
- 體系年度工作總結(jié)培訓(xùn)課件
- YY/T 0506.6-2009病人、醫(yī)護(hù)人員和器械用手術(shù)單、手術(shù)衣和潔凈服第6部分:阻濕態(tài)微生物穿透試驗方法
- GB/T 28799.2-2020冷熱水用耐熱聚乙烯(PE-RT)管道系統(tǒng)第2部分:管材
評論
0/150
提交評論