




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 前言1.1項(xiàng)目的目的與意義 現(xiàn)代科學(xué)技術(shù)的發(fā)展,改變了人類的生活,作為新世紀(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í)踐于該游戲設(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),其中包括對
2、程序的調(diào)試、運(yùn)行、保存等知識的運(yùn)用,還包括提高程序開發(fā)功能,能運(yùn)用合理的方法簡化C程序的操作,開發(fā)過程中應(yīng)培養(yǎng)分析問題、解決問題的能力。 基于QT組件技術(shù)的拼圖游戲軟件是一款具有娛樂性、益智性、便捷性的游戲軟件。此軟件可以使用戶放松心情,享受于拼圖游戲的樂趣之中。該游戲軟件可以讓用戶選擇適合自己的主題與難度,根據(jù)用戶的不同水平,鍛煉其圖片記憶能力以及拼湊還原能力。游戲結(jié)束后亦可讓用戶清晰了解到自己的游戲狀態(tài)水平,便于調(diào)整自己對這款游戲的新的難度要求。另外要求軟件設(shè)計精致,畫面親和,人機(jī)交互高效快捷,能夠給用戶帶來人性化的服務(wù)。軟件面向的主流群體集中在兒童,但也適宜青年人或者老人使用,提供了適宜
3、各類用戶群體的圖片風(fēng)格與難度設(shè)置。不論是旨在輕松娛樂,還是益智教育的目的,該軟件都是一款家庭生活中以及學(xué)習(xí)生活的必備軟件。 設(shè)計并實(shí)現(xiàn)基于QT組件技術(shù)的拼圖游戲軟件作為自己的畢業(yè)課題設(shè)計是對學(xué)?;A(chǔ)課程、專業(yè)課程以及實(shí)踐課程的一次綜合性考查,旨在通過此次實(shí)踐環(huán)節(jié)的訓(xùn)練,使我們能夠更加全面地掌握 游戲設(shè)計的整體策劃以及系統(tǒng)地掌握游戲設(shè)計的體系結(jié)構(gòu)。通過 對我們所做游戲進(jìn)行的類型確定、前期分析、整體策劃以及設(shè)計 制作過程中所涉及的相關(guān)技術(shù)的學(xué)習(xí)和掌握,提高了我們的實(shí)踐能力,為我們在計算機(jī)技術(shù)的應(yīng)用上拓寬了道 路,對進(jìn)入游戲設(shè)計這一領(lǐng)域的深入研究做了準(zhǔn)備。此外,QT組件在界面開發(fā)上的應(yīng)用一直處于熱門
4、,這次的系統(tǒng)全面的實(shí)踐可以說是一次很好的鍛煉,會對以后工作生活帶來積極的影響。1.2系統(tǒng)開發(fā)方法介紹目前比較成熟的系統(tǒng)開發(fā)方法有:生命周期法、原型法、面向?qū)ο蠓ǖ?。生命周期法:把一個信息系統(tǒng)從其提出、分析、設(shè)計和使用,直到停止使用的整個生存期視為一個生命周期。整個生命周期劃分為五個主要工作階段:可行性分析階段、系統(tǒng)分析階段、系統(tǒng)設(shè)計階段、系統(tǒng)實(shí)施階段和系統(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)?!敖Y(jié)構(gòu)化
5、分析方法(Structured Method,結(jié)構(gòu)化方法)是面向過程的程序設(shè)計的方法,是強(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ā)者在初步了解用戶
6、需求的基礎(chǔ)上,開發(fā)出能實(shí)現(xiàn)系統(tǒng)最基本功能的一個原型,再根據(jù)用戶對原型使用與評價的意見,提出修改方案,修改完善原型,如此反復(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ù)和容許的操作組成的封裝體,與客觀實(shí)體有直接對應(yīng)關(guān)系,一個對象類定義了具有相似性質(zhì)的一組對象。而每繼承性是對具有層次關(guān)系的類的屬性和操作進(jìn)行
7、共享的一種方式。所謂面向?qū)ο缶褪腔趯ο蟾拍?,以對象為中心,以類和繼承為構(gòu)造機(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)系,確定對象彼此間傳遞的消息;
8、 設(shè)計對象的消息模式,消息模式和處理能力共同構(gòu)成對象的外部特性;分析各個對象的外部特性,將具有相同外部特性的對象歸為一類,從而確定所需要的類;確定類間的繼承關(guān)系,將各對象的公共性質(zhì)放在較上層的類中描述,通過繼承來共享對公共性質(zhì)的描述;設(shè)計每個類關(guān)于對象外部特性的描述;設(shè)計每個類的內(nèi)部實(shí)現(xiàn)(數(shù)據(jù)結(jié)構(gòu)和方法);創(chuàng)建所需的對象(類的實(shí)例),實(shí)現(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è)計可行性。第四部分為
9、總體設(shè)計,包括了功能需求,總體設(shè)計方案,系統(tǒng)流程設(shè)計,功能模塊的設(shè)計。第五部分為詳細(xì)設(shè)計,包括設(shè)計當(dāng)中涉及到的相關(guān)算法,模塊命名,系統(tǒng)快照。第六部分為測試部分,包括了所涉及的測試用例,測試方法。2 項(xiàng)目開發(fā)語言及開發(fā)環(huán)境2.1 C語言C語言是一種HYPERLINK /view/2561555.htm計算機(jī)程序設(shè)計語言,它既具有HYPERLINK /view/14900.htm高級語言的特點(diǎn),又具有HYPERLINK /view/49.htm匯編語言的特點(diǎn)。它由美國貝爾HYPERLINK /view/182409.htm實(shí)驗(yàn)室的Dennis M. Ritchie于1972年推出,1978年后,C
10、語言已先后被移植到大、中、小及微型機(jī)上,它可以作為工作系統(tǒng)設(shè)計語言,編寫HYPERLINK /view/25302.htm系統(tǒng)HYPERLINK /view/330120.htm應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計語言,編寫不依賴計算機(jī)硬件的應(yīng)用程序。它的應(yīng)用范圍廣泛,具備很強(qiáng)的HYPERLINK /subview/38752/8058697.htm數(shù)據(jù)處理能力,不僅僅是在軟件開發(fā)上,而且各類科研都需要用到C語言,適于編寫系統(tǒng)軟件、三維、二維圖形和動畫,具體應(yīng)用例如HYPERLINK /view/1012.htm單片機(jī)以及HYPERLINK /view/657641.htm嵌入式系統(tǒng)開發(fā)。2.1.
11、1設(shè)計特性C是一種融合了控制特性的現(xiàn)代語言,而在計算機(jī)科學(xué)的理論與實(shí)踐中,控制特性是很重要的。其設(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)行速度快。事實(shí)上,C可以表現(xiàn)出通常只有匯編語言才具有的精細(xì)的控制能力。如果愿意,可以細(xì)調(diào)程
12、序以獲得最大的速度或最大的內(nèi)存使用率。C語言的數(shù)據(jù)類型有整型、實(shí)型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等。這些數(shù)據(jù)類型能用來實(shí)現(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)算符可以實(shí)現(xiàn)在其他高級語言中難以實(shí)現(xiàn)的運(yùn)算。C語言的一個語句可完成多項(xiàng)操作,一個表達(dá)式也可以完成多項(xiàng)操作。書寫簡練,源程序短,因而輸入程序工作量小。2.1.3可移植性C是一種可移植語言。這意味著,在一
13、個系統(tǒng)上編寫的C程序經(jīng)過很少改動或不經(jīng)修改就可以在其他系統(tǒng)上運(yùn)行。如果修改是必須的,則通常只須改變伴隨主程序的一個頭文件中的幾項(xiàng)內(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編譯器。所以不論使用的是家用計算機(jī)、專業(yè)工作站還是大型機(jī),
14、都很容易得到對您的特定系統(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)存中的特定位。它具有豐富的運(yùn)算符供選擇,能夠簡潔地表達(dá)自己的意圖。在限制所能
15、做的事情方面,C不如Pascal這樣的語言嚴(yán)格。這種靈活性是優(yōu)點(diǎn),同時也是一種危險。優(yōu)點(diǎn)在于:許多任務(wù)在C中都簡單的多。危險在于:使用C時,可能會犯在使用其他語言時不會犯的錯誤。C給予更多的自由,但同時也會承擔(dān)更大的風(fēng)險。另外,多數(shù)C實(shí)現(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.0.1處理器:Pentium(R) Dual-C
16、ore 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 收購后推出的一款新的輕量級HYPERLINK /view/14867.htm集成開發(fā)環(huán)境(IDE)。此 IDE 能夠跨平臺運(yùn)行,支持的系統(tǒng)包括 Linux(32 位及 64 位)、Mac OS X 以及 Window
17、s。根據(jù)官方描述,Qt Creator 的設(shè)計目標(biāo)是使開發(fā)人員能夠利用 Qt 這個HYPERLINK /view/330120.htm應(yīng)用程序框架更加快速及輕易的完成開發(fā)任務(wù)。Qt Creator 包括項(xiàng)目生成向?qū)А⒏呒壍?C+ 代碼HYPERLINK /view/499644.htm編輯器、瀏覽文件及類的工具、集成了 Qt Designer、Qt Assistant、Qt Linguist、圖形化的 GDB 調(diào)試前端,集成 qmake 構(gòu)建工具等。QtCreator 主要是為了幫助新 Qt 用戶更快速入門并運(yùn)行項(xiàng)目,還可提高有經(jīng)驗(yàn)的 Qt 開發(fā)人員的工作效率。語法標(biāo)識和代碼完成功能輸入時進(jìn)行
18、靜態(tài)代碼檢驗(yàn)以及提示樣式上下文相關(guān)的幫助代碼折疊括號匹配和括號選擇模式高級編輯功能。集成了領(lǐng)先的HYPERLINK /view/2942399.htm版本控制軟件,包括 Git、Perforce 和 Subversion開放式文件,無須知曉確切的名稱或位置搜索類和文件跨不同位置或文件沿用符號在頭文件和源文件,或在聲明和定義之間切換集成了特定于 Qt 的功能,如信號與槽 (Signals & Slots)圖示調(diào)試器, 對 Qt 類結(jié)構(gòu)可一目了然集成了 Qt Designer 可視化布局和格式構(gòu)建器只需單擊一下就可生成和運(yùn)行 Qt 項(xiàng)目。2.4 嵌入式開發(fā)HYPERLINK /view/6115.
19、htm嵌入式系統(tǒng)無疑是當(dāng)前最熱門最有發(fā)展前途的IT應(yīng)用領(lǐng)域之一。HYPERLINK /view/6115.htm嵌入式系統(tǒng)用在一些特定專用設(shè)備上,通常這些設(shè)備的硬件資源(如處理器、HYPERLINK /view/87697.htm存儲器等)非常有限,并且對成本很敏感,有時對實(shí)時響應(yīng)要求很高等。特別是隨著消費(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ī)、HYPERLINK /view/1360
20、.htm路由器、數(shù)控設(shè)備或儀表、汽車電子、家電控制系統(tǒng)、醫(yī)療儀器、航天航空設(shè)備等等都是典型的HYPERLINK /view/6115.htm嵌入式系統(tǒng)。嵌入式系統(tǒng)是用來控制或者HYPERLINK /subview/758002/8058759.htm監(jiān)視機(jī)器、裝置、工廠等大規(guī)模HYPERLINK /view/209665.htm設(shè)備的系統(tǒng)。嵌入式系統(tǒng)以應(yīng)用為中心、以HYPERLINK /view/62176.htm計算機(jī)技術(shù)為基礎(chǔ)、軟硬件可裁剪、功能、可靠性、成本、體積、HYPERLINK /view/720038.htm功耗嚴(yán)格要求的專用計算機(jī)系統(tǒng)。嵌入式系統(tǒng)是一種專用的HYPERLINK
21、/view/1130583.htm計算機(jī)系統(tǒng),作為裝置或HYPERLINK /view/209665.htm設(shè)備的一部分。通常,嵌入式系統(tǒng)是一個控制程序存儲在HYPERLINK /subview/15546/11756847.htmROM中的嵌入式HYPERLINK /view/50152.htm處理器HYPERLINK /view/3459860.htm控制板。事實(shí)上,所有帶有數(shù)字接口的設(shè)備,如手表、微波爐、錄像機(jī)、汽車等,都使用嵌入式系統(tǒng),有些嵌入式系統(tǒng)還包含操作系統(tǒng),但大多數(shù)嵌入式系統(tǒng)都是由單個程序?qū)崿F(xiàn)整個控制邏輯。嵌入式開發(fā)一般具有以下特點(diǎn):可裁剪性。支持開放性和可伸縮性的HYPERL
22、INK /view/1188494.htm體系結(jié)構(gòu)。強(qiáng)實(shí)時性。EOS實(shí)時性一般較強(qiáng),可用于各種設(shè)備控制中。統(tǒng)一的接口。提供設(shè)備統(tǒng)一的驅(qū)動接口。操作方便、簡單、提供友好的圖形GUI和圖形界面,追求易學(xué)易用。提供強(qiáng)大的網(wǎng)絡(luò)功能,支持TCP/IP協(xié)議及其他協(xié)議,提供TCP/UDP/IP/PPPHYPERLINK /view/63557.htm協(xié)議支持及統(tǒng)一的MAC訪問層接口,為各種移動計算設(shè)備預(yù)留接口。強(qiáng)穩(wěn)定性,弱HYPERLINK /view/4889540.htm交互性。HYPERLINK /view/6115.htm嵌入式系統(tǒng)一旦開始運(yùn)行就不需要用戶過多的干預(yù)、這就要負(fù)責(zé)系統(tǒng)管理的EOS具有較
23、強(qiáng)的穩(wěn)定性。HYPERLINK /view/18554.htm嵌入式操作系統(tǒng)的HYPERLINK /view/1309799.htm用戶接口一般不提供操作命令,它通過系統(tǒng)的調(diào)用命令向HYPERLINK /view/1976812.htm用戶程序提供服務(wù)。固化代碼。在HYPERLINK /view/6115.htm嵌入式系統(tǒng)中,HYPERLINK /view/18554.htm嵌入式操作系統(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)入市場,具有較長的生命周期
24、。3 可行性分析3.1可行性分析所采用的方法和步驟可行性分析是通過對HYPERLINK /view/25183.htm項(xiàng)目的主要內(nèi)容和配套條件,如市場需求、資源供應(yīng)、建設(shè)規(guī)模、工藝路線、設(shè)備選型、環(huán)境影響、資金籌措、盈利能力等,從技術(shù)、經(jīng)濟(jì)、工程等方面進(jìn)行調(diào)查研究和分析比較,并對項(xiàng)目建成以后可能取得的財務(wù)、HYPERLINK /view/188272.htm經(jīng)濟(jì)效益及社會環(huán)境影響進(jìn)行預(yù)測,從而提出該項(xiàng)目是否值得投資和如何進(jìn)行建設(shè)的咨詢意見,為HYPERLINK /view/1334011.htm項(xiàng)目決策提供依據(jù)的一種綜合性的HYPERLINK /view/532763.htm系統(tǒng)分析方法。可行
25、性分析應(yīng)具有預(yù)見性、公正性、可靠性、科學(xué)性的特點(diǎn)。我國HYPERLINK /view/117853.htm可行性研究存在的主要問題,一是工程技術(shù)方案的研究論證深度不夠。按照國外的通常做法,HYPERLINK /view/117853.htm可行性研究階段的研究深度應(yīng)能達(dá)到定方案的程度,因此要求在工程技術(shù)方案論證,應(yīng)達(dá)到Basic Design或Concept Design的程度,基本相當(dāng)于我國的初步設(shè)計應(yīng)達(dá)到的水平,應(yīng)提出明確的設(shè)備清單;二是HYPERLINK /view/591181.htm財務(wù)評價就項(xiàng)目論項(xiàng)目,這與國外利用企業(yè)理財?shù)睦碚摵头椒ㄟM(jìn)行資本預(yù)算管理,對HYPERLINK /vie
26、w/1741329.htm投資項(xiàng)目進(jìn)行HYPERLINK /view/1478470.htm投資決策和HYPERLINK /view/1250741.htm融資決策的通行做法存在重大差異,并且在HYPERLINK /view/1015416.htm經(jīng)濟(jì)評價方面不恰當(dāng)?shù)厥褂昧藝窠?jīng)濟(jì)評價的概念,由此引起一系列的認(rèn)識誤區(qū);三是在市場分析、組織機(jī)構(gòu)分析等方面與國外差別較大,研究深度嚴(yán)重不足;四是不重視多方案的比選及項(xiàng)目HYPERLINK /view/551082.htm風(fēng)險分析,或者分析的內(nèi)容、深度嚴(yán)重不足,缺乏項(xiàng)目周期各階段風(fēng)險管理的統(tǒng)一籌劃及策略論證。通過研究分析拼圖游戲所具備的能力及實(shí)現(xiàn)的方法
27、來確定主體結(jié)構(gòu)。利用現(xiàn)階段我所能達(dá)到的能力,以最簡潔、最容易的辦法,邊開發(fā)邊測試邊修改,實(shí)現(xiàn)一個初級游戲軟件。3.2可行性分析由于本游戲是畢業(yè)設(shè)計,不過分強(qiáng)調(diào)直接的經(jīng)濟(jì)效益和其日后的發(fā)展方向,只在注重自身水平和能力的提高,同時對自身的經(jīng)濟(jì)要求也不高,只要有一臺能運(yùn)行Java軟件的電腦便可,所以基本上不用考慮到經(jīng)濟(jì)問題??捎门c本游戲的編程語言有VB,Java,C等,考慮到用于編寫程序的困難度,和對語言的了解程度,選擇C作為編程語言。需要對變量定義、變量初始化、界面初始化、游戲初始化、然后進(jìn)入游戲、處理游戲過程中的各種操作。本游戲的開發(fā)作為畢業(yè)設(shè)計,目的在于鞏固先前所學(xué)的知識,以個人為單位,僅供個
28、人平常娛樂所用,無須考慮社會影響,不用考慮法律、版權(quán)等社會因素,且此軟件的開發(fā)不觸犯法律,所以在這方面是完全可行的。3.3穩(wěn)定性現(xiàn)在做出來的只是一個拼圖游戲的核心部分,這些代碼經(jīng)過許多測試和修改穩(wěn)定性也比較強(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)單擊圖塊邊緣時明明是單擊的這個圖塊,卻由于計算偏差
29、選中了另一個圖塊。這些精確的計算也都是通過了軟件的精確性測試通過了的。4 總體設(shè)計即對有關(guān)系統(tǒng)全局問題的設(shè)計,也就是設(shè)計系統(tǒng)總的處理方案,又稱系統(tǒng)概要設(shè)計。它包括:HYPERLINK /view/3314.htm計算機(jī)配置設(shè)計、系統(tǒng)模塊結(jié)構(gòu)設(shè)計、數(shù)據(jù)庫和文件設(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. 實(shí)現(xiàn)程序GUI圖形界面;
30、2. 實(shí)現(xiàn)游戲開始、退出等功能;3. 實(shí)現(xiàn)鼠標(biāo)或鍵盤事件響應(yīng)模塊的功能;4. 實(shí)現(xiàn)可選難度等級功能;5. 實(shí)現(xiàn)輸贏自動判別功能;6. 實(shí)現(xiàn)游戲圖片更換功能;7. 實(shí)現(xiàn)進(jìn)行游戲同時可以查看原圖功能;8. 實(shí)現(xiàn)游戲內(nèi)圖片更換、重玩、返回界面、退出功能;4.2總體設(shè)計方案在開始游戲界面后,設(shè)計本程序能夠載入默認(rèn)圖片(用戶也可以選擇想要的其它圖片),程序默認(rèn)難度為9宮格(用戶也可以選擇想要的其他難度),還設(shè)計實(shí)現(xiàn)背景音樂的播放功能等。在本程序中,對于圖片的分割、拼湊、判斷圖片是否可以移動等都是設(shè)計的關(guān)鍵??傮w設(shè)計方案中主要說明前期工作中對于分割圖片以及判斷拼圖是否成功這兩點(diǎn)的設(shè)計。對于分割圖片是用像素
31、點(diǎn)來實(shí)現(xiàn)的,同時對圖片進(jìn)行了自動縮放,這樣一來就可以使得圖片分割后看起來更連貫。拆分圖片后,把分好的圖片存儲到一個image數(shù)組中,對于可移動的塊其實(shí)是按鈕,每個按鈕上都有一個icon,通過隨機(jī)把image數(shù)組中的圖片通過imageIcon的轉(zhuǎn)化后附給一個按鈕,并將按鈕數(shù)組首先附給一個向量,然后用隨機(jī)數(shù)來確定對應(yīng)向量的值,然后再附給對應(yīng)數(shù)組按鈕,同時去除該值。也就是說在附值的時候圖片順序不變,變的而是數(shù)組按鈕的順序。對于圖片的是否拼圖成功的提示,主要是在每個按鈕中加個String的屬性值,而且對于正確的排序的值與正在排的各個值比較,一旦所有的按鈕對應(yīng)的值與正確的排序一致,則為成功。4.3系統(tǒng)流
32、程設(shè)計圖4-1流程圖符號在繪制程序框圖時,使用的符號說明如圖4-1所示,拼圖游戲系統(tǒng)處理方式的合理選擇,其實(shí)就是一個處理過程的設(shè)計問題。選擇處理方式實(shí)際上就是根據(jù)系統(tǒng)的任務(wù)、目標(biāo)和環(huán)境條件,合理地選擇信息活動的形態(tài)及具體方法。程序流程圖又稱為方框圖。表示方法簡明直觀,是用來描述程序執(zhí)行的邏輯過程的。它把程序的基本步驟歸納為:處理、判斷、輸入/輸出、開始和結(jié)束等幾個基本功能,并用不同的記號加以表示,從而描述程序的執(zhí)行過程。系統(tǒng)流程圖表達(dá)的是系統(tǒng)各部件的流動情況,而不是表示對信息進(jìn)行加工處理的控制過程。系統(tǒng)流程圖的作用表現(xiàn)在以下幾個方面:1,制作系統(tǒng)流程圖的過程是HYPERLINK /view/1
33、27321.htm系統(tǒng)分析員全面了解系統(tǒng)業(yè)務(wù)處理概況的過程,它是系統(tǒng)分析員做進(jìn)一步分析的依據(jù)。2,系統(tǒng)流程圖是HYPERLINK /view/127321.htm系統(tǒng)分析員、HYPERLINK /view/315045.htm管理員、業(yè)務(wù)操作員相互交流的工具。3,HYPERLINK /view/127321.htm系統(tǒng)分析員可直接在系統(tǒng)流程圖上畫出可以有計算機(jī)處理的部分。4,可利用系統(tǒng)流程圖來分析業(yè)務(wù)流程的合理性。首先我在進(jìn)行軟件代碼的編寫設(shè)計之前對于軟件的整體流程有一個大致的思路,如圖4-2,即先將圖片進(jìn)行打散,然后即可進(jìn)行拼圖的過程,然后可對于拼圖成功進(jìn)行判斷。圖4-2拼圖游戲流程圖4.4
34、功能模塊設(shè)計關(guān)于該拼圖游戲的功能木模塊設(shè)計,從邏輯上分析,該拼圖游戲主要分成2塊,也就是主要的兩個窗體,分別為游戲界面部分和游戲部分,下面對該款拼圖游戲進(jìn)行功能設(shè)計分析。游戲功能分為圖片打散流程以及拼圖流程,如圖4-3和圖4-4。圖4-3 拼圖游戲隨機(jī)打散圖片流程圖4-4 拼圖游戲拼圖流程首先,我需要對HYPERLINK /view/8343.htm軟件系統(tǒng)進(jìn)行HYPERLINK /view/551728.htm概要設(shè)計,即HYPERLINK /view/170106.htm系統(tǒng)設(shè)計。HYPERLINK /view/551728.htm概要設(shè)計需要對HYPERLINK /view/8343.h
35、tm軟件系統(tǒng)的設(shè)計進(jìn)行考慮,包括系統(tǒng)的HYPERLINK /view/3738006.htm基本處理流程、系統(tǒng)的組織結(jié)構(gòu)、模塊劃分、功能分配、接口設(shè)計、運(yùn)行設(shè)計、HYPERLINK /view/9900.htm數(shù)據(jù)結(jié)構(gòu)設(shè)計和出錯處理設(shè)計等,為軟件的HYPERLINK /view/228950.htm詳細(xì)設(shè)計提供基礎(chǔ)。在HYPERLINK /view/551728.htm概要設(shè)計的基礎(chǔ)上,我需要進(jìn)行HYPERLINK /view/8343.htm軟件系統(tǒng)的詳細(xì)設(shè)計。在HYPERLINK /view/228950.htm詳細(xì)設(shè)計中,描述實(shí) 現(xiàn)具體模塊所涉及到的主要算法、HYPERLINK /vie
36、w/9900.htm數(shù)據(jù)結(jié)構(gòu)、類的HYPERLINK /view/420833.htm層次結(jié)構(gòu)及調(diào)用關(guān)系,需要說明HYPERLINK /view/8343.htm軟件系統(tǒng)各個層次中的每一個程序(每個模塊或HYPERLINK /view/933538.htm子程序)的設(shè)計考慮,以便進(jìn)行編碼和測試。應(yīng)當(dāng)保證軟件的需求完全分配給整個軟件。HYPERLINK /view/228950.htm詳細(xì)設(shè)計應(yīng)當(dāng)足夠詳細(xì),能夠根據(jù)詳細(xì)設(shè)計報告進(jìn)行編碼。在HYPERLINK /view/178766.htm軟件編碼階段,根據(jù)概要設(shè)計中對HYPERLINK /view/9900.htm數(shù)據(jù)結(jié)構(gòu)、HYPERLINK
37、/view/757280.htm算法分析和模塊實(shí)現(xiàn)等方面的設(shè)計要求,開始具體的編寫程序工作,分別實(shí)現(xiàn)各模塊的功能,從而實(shí)現(xiàn)對目標(biāo)系統(tǒng)的功能、性能、接口、界面等方面的要求。在規(guī)范化的研發(fā)流程中,編碼工作在整個項(xiàng)目流程里最多不會超過1/2,通常在1/3的時間,所謂磨刀不誤砍柴功,設(shè)計過程完成的好,編碼效率就會極大提高,編碼時不同模塊之間的進(jìn)度協(xié)調(diào)和協(xié)作是最需要小心的,也許一個小模塊的問題就可能影響了整體進(jìn)度,讓很多程序員因此被迫停下工作等待,這種問題在很多研發(fā)過程中都出現(xiàn)過。5 詳細(xì)設(shè)計5.1關(guān)鍵算法的設(shè)計與實(shí)現(xiàn)對于一個拼圖游戲的核心來說,主要的模塊就是圖片的隨機(jī)打散模塊和拼圖模塊。我將屏幕窗口分
38、成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ù)及一個空格隨機(jī)的擺放在其中的格子里。現(xiàn)在要求實(shí)現(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
39、,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ù)組我們就可以解出它的結(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)算
40、,才能保證圖片拆分后,經(jīng)過用戶的拼湊,最終可以完成整個拼圖游戲,而不會無解。5.1.1圖片隨機(jī)分割問題我們將圖像也分成和屏幕窗口一樣的9塊,如圖5-2所示。圖5-2 圖像分割在Qt中,視口是物理坐標(biāo)系下指定的任意矩形,窗口指的是同一矩形,只不過是邏輯坐標(biāo)系下的。我們先將視口設(shè)置成屏幕上的一塊,然后窗口設(shè)置成一塊大小和一塊圖像的大小一樣的矩形,我們將一塊圖像繪制到窗口中,經(jīng)過窗口-視口變換后就繪制到了視口所對應(yīng)的屏幕上。為了實(shí)現(xiàn)圖像的隨機(jī)打散,使用一個全局的映射數(shù)組map33,map數(shù)組中存放的數(shù)字只能是08之間的數(shù)(包括0和8)。map00對應(yīng)屏幕的0塊,map01對應(yīng)屏幕的1塊,依次類推,m
41、ap33對應(yīng)屏幕的8塊。如果map00里面存放的數(shù)是8,那么我們就將圖像的第8塊繪制到屏幕的第0塊。如果map數(shù)組中的數(shù)字是隨機(jī)打亂的,那么我們通過這個映射數(shù)組將圖像繪制到屏幕上后,屏幕上將會是打亂的圖像。為了方便代碼的重用,我們將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求余的到
42、兩個9以內(nèi)(即08且包括0和8)的隨機(jī)數(shù)randData1和randData2,然后對maprandData1/3randData1%3和maprandData2/3randData2%3進(jìn)行交換。通過循環(huán)將這樣的交換多進(jìn)行幾輪,然后就得到了一個隨機(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(
43、) % 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 = maprand
44、Data/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:ran
45、dom() 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(QPe
46、n(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 = i
47、mage.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.setView
48、port(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);
49、painter.drawLine(2*spaceX,0,2*spaceX,460); painter.drawLine(0,spaceY,473,spaceY); painter.drawLine(0,2*spaceY,473,2*spaceY); / 選中的圖像 if (selected.x != -1 & selected.y != -1) painter.setViewport(20+selected.x * spaceX, 20+selected.y * spaceY, spaceX, spaceY); painter.setWindow(0, 0, spaceX, spaceY);/
50、凸顯選中圖像 painter.setPen(QPen(Qt:yellow,3); painter.drawRect(0, 0, spaceX, spaceY); 對于拼圖區(qū)中坐標(biāo)的計算代碼:/ 157*3+20=491 153*3+20=479 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) * space
51、W, (mapij%3) * spaceH, spaceW, spaceH); / 117*4+20=491 114*4+20=479 for (int i = 0; i 4; +i) for (int j = 0; j 4; +j) painter.setViewport(20 + i * spaceX + 1, 20 + j * spaceY + 1, spaceX, spaceY); painter.drawImage(0, 0, image, (mapij/4) * spaceW, (mapij%4) * spaceH,spaceW, spaceH); / 94*5+20=491 91
52、*5+20=479 for (int i = 0; i 5; +i) for (int j = 0; j pos().x();int y = event-pos().y(); /進(jìn)行坐標(biāo)范圍的判定if(20 x & x 491 & 20 y & y 479) / 157*3+20=491 153*3+20=479int indX = (x - 20) / 157;int indY = (y - 20) / 153;if(-1 selected.x & selected.x 3 & -1 selected.y & selected.y 3)if (indX = selected.x & -2 i
53、ndY - selected.y & indY - selected.y 2) |(-2 indX - selected.x & indX - selected.x 2 & indY = selected.y)/ 可以交換就交換int temp = mapindXindY;mapindXindY = mapselected.xselected.y;mapselected.xselected.y = temp;selected.x = -1;selected.y = -1;elseselected.x = indX;selected.y = indY;elseselected.x = indX;
54、selected.y = indY;elseselected.x = -1;selected.y = -1;update();/ 判斷是否成功,成功的話就彈出提示成功了int i = 0;for (; i 9; +i)if (mapi/3i%3 = i); else break;if(i = 9)emit success();如果空白label的x坐標(biāo)與傳入的labell的x坐標(biāo)相等,即說明要移動的圖片在空白label的上放或者下方,空白label的y坐標(biāo)減去傳入labell的y坐標(biāo)的絕對值等于空白label的的高度時返回true; 即可以移動;如果空白label的y坐標(biāo)與傳入的labell的
55、y坐標(biāo)相等,即說明要移動的圖片咋空白label的左側(cè)或者右側(cè),空白label的x坐標(biāo)減去傳入labell的x坐標(biāo)的絕對值等于空白label的的寬度時返回true; 即可以移動。我將判斷游戲是否成功也放在了這個函數(shù)中,但是在模塊的劃分中,這是單獨(dú)的一塊,只是實(shí)現(xiàn)時為了實(shí)現(xiàn)方便將兩個模塊結(jié)合到了單獨(dú)的一個函數(shù)中。5.1.3更改圖片 進(jìn)行對文件名稱strImg進(jìn)行全局變量的定義QString并對其賦初值 QString strImg = “:/images/myImage1.jpg” void PintuWindow2:changeimage() /cout 123 endl;/使用字符串的連接 s
56、trImg2 = :/images/myImage; /產(chǎn)生隨機(jī)數(shù) int num = qrand()%4+1; strImg2 +=QString:number(num); strImg2 +=.jpg; /QImage image(str); repaint();5.2模塊命名規(guī)則整個游戲我用一個類PintuWindow進(jìn)行描述。這個類繼承自QMainWindow,其頭文件為pintuwindow.h,實(shí)現(xiàn)文件為pintuwindow.cpp。在PintuWindow類中,自定義了一個信號void success(),然后兩個私有槽void random()和void succeed()。
57、在Pintu類的構(gòu)造函數(shù)中,我將success()信號連接到槽succeed()以便在發(fā)射success()信號的時候可以自動執(zhí)行secceed()槽。那么在每次兩個圖塊交換后我就判斷游戲是否成功,如果成功,就會發(fā)射success()信號。random()實(shí)現(xiàn)圖塊的隨機(jī)打算,secceed()實(shí)現(xiàn)游戲成功的處理。重新實(shí)現(xiàn)了兩個虛函數(shù)void paintEvent(QPaintEvent *event)和void mousePressEvent(QMouseEvent *event)以實(shí)現(xiàn)繪圖和鼠標(biāo)操作。然后是一個描述映射的數(shù)組int map33,一個描述選中的情況的結(jié)構(gòu)體struct pair
58、 selected和一個指向成功時彈出的那個對話框的指針SuccessDialog *successDialog等私有成員。游戲窗口的代碼:#include#includesuccessdialog.h#include #include #include struct pair int x; int y;class PintuWindow : public QWidget Q_OBJECTpublic: PintuWindow();signals: void success(); void showMainWidget();private slots:/定義槽函數(shù) void random();
59、 void succeed(); void closeWidget(); void changeimage();private:/定義繪圖事件,鼠標(biāo)事件/定義按鈕 void paintEvent(QPaintEvent *event); void mousePressEvent(QMouseEvent *event); /QPixmap *image; QPushButton *replaygame; QPushButton *backmenu; QPushButton *change; QPushButton *overgame; int map33; struct pair selecte
60、d; SuccessDialog *successDialog;SuccessDialog類是在游戲成功時顯示的一個對話框,繼承自QDialog,其頭文件是sucessdialog.h,實(shí)現(xiàn)文件時successdialog.cpp。在這個類中自定義了兩個信號void replay()和void exit()。重新實(shí)現(xiàn)了void paintEvent(QPaintEvent *event)用以在對話框中插入一張圖片。然后就是一個QLabel *succ指向顯示祝賀語的QLable,一個指向QPushButton重玩按鈕的QPushButton *buttonReplay和一個指向QPushBut
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 南丁格爾精神作文
- 血清C反應(yīng)蛋白、降鈣素原及白細(xì)胞計數(shù)檢測對小兒支氣管炎病情及復(fù)發(fā)的評估價值
- 2024-2025學(xué)年新教材高中生物 第三章 遺傳的分子基礎(chǔ) 第四節(jié) 基因控制蛋白質(zhì)合成教學(xué)實(shí)錄(2)浙科版必修2
- DB3715-T 21-2022 日光溫室秋延遲番茄水肥一體化生產(chǎn)技術(shù)規(guī)程
- 2024年五年級英語下冊 Unit 1 Going to Beijing Lesson 3 Who Is Singing教學(xué)實(shí)錄 冀教版(三起)
- 2023七年級數(shù)學(xué)下冊 第8章 一元一次方程8.2 解一元一次不等式1不等式的解集教學(xué)實(shí)錄 (新版)華東師大版
- 2024-2025學(xué)年高中政治 第四單元 發(fā)展社會主義市場經(jīng)濟(jì) 第十一課 第二框 積極參與國際經(jīng)濟(jì)競爭與合作教學(xué)實(shí)錄 新人教版必修1
- 2023七年級語文下冊 第六單元 課外古詩詞誦讀配套教學(xué)實(shí)錄 新人教版
- 2024年五年級語文上冊 第一單元 4 珍珠鳥配套教學(xué)實(shí)錄 新人教版
- 17賽小車(教學(xué)設(shè)計)-2023-2024學(xué)年科學(xué)三年級下冊人教鄂教版
- TCCIIP 001-2024 綠色低碳園區(qū)標(biāo)準(zhǔn)
- GB/T 20972.2-2025石油天然氣工業(yè)油氣開采中用于含硫化氫環(huán)境的材料第2部分:抗開裂碳鋼、低合金鋼和鑄鐵
- 美團(tuán)供應(yīng)鏈管理案例分析
- 2025廣東深圳證券交易所及其下屬單位信息技術(shù)專業(yè)人員招聘筆試參考題庫附帶答案詳解
- 陜西省西安市西咸新區(qū)2024年九年級下學(xué)期中考一模數(shù)學(xué)試題(含答案)
- 2025年內(nèi)蒙古烏蘭察布盟單招職業(yè)適應(yīng)性測試題庫新版
- 2025年宜春幼兒師范高等專科學(xué)校單招職業(yè)傾向性測試題庫含答案
- 《鈉離子電池產(chǎn)業(yè)發(fā)展白皮書》
- 全國交管12123駕駛證學(xué)法減分考試題附答案
- 2025中考作文預(yù)測
- 油氣田開發(fā)專業(yè)危害因素辨識與風(fēng)險防控
評論
0/150
提交評論