




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、武漢工程大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院綜合設(shè)計(jì)報(bào)告設(shè)計(jì)名稱(chēng): 系統(tǒng)軟件綜合設(shè)計(jì) 設(shè)計(jì)題目: 飛行棋游戲的設(shè)計(jì)與實(shí)現(xiàn) 學(xué)生學(xué)號(hào): 1005090226 專(zhuān)業(yè)班級(jí): 2010級(jí)計(jì)算機(jī)科學(xué)與技術(shù) (計(jì)算機(jī)科學(xué)方向)02班 學(xué)生姓名: 張小朗 學(xué)生成績(jī): 指導(dǎo)教師(職稱(chēng)): 徐銀霞(講師) 課題工作時(shí)間: 2013.12.30 至 2014.1.10 說(shuō)明:1、報(bào)告中的第一、二、三項(xiàng)由指導(dǎo)教師在綜合設(shè)計(jì)開(kāi)始前填寫(xiě)并發(fā)給每個(gè)學(xué)生;四、五兩項(xiàng)(中英文摘要)由學(xué)生在完成綜合設(shè)計(jì)后填寫(xiě)。2、學(xué)生成績(jī)由指導(dǎo)教師根據(jù)學(xué)生的設(shè)計(jì)情況給出各項(xiàng)分值及總評(píng)成績(jī)。3、指導(dǎo)教師評(píng)語(yǔ)一欄由指導(dǎo)教師就學(xué)生在整個(gè)設(shè)計(jì)期間的平時(shí)表現(xiàn)、設(shè)
2、計(jì)完成情況、報(bào)告的質(zhì)量及答辯情況,給出客觀、全面的評(píng)價(jià)。4、所有學(xué)生必須參加綜合設(shè)計(jì)的答辯環(huán)節(jié),凡不參加答辯者,其成績(jī)一律按不及格處理。答辯小組成員應(yīng)由2人及以上教師組成。5、報(bào)告正文字?jǐn)?shù)一般應(yīng)不少于5000字,也可由指導(dǎo)教師根據(jù)本門(mén)綜合設(shè)計(jì)的情況另行規(guī)定。6、平時(shí)表現(xiàn)成績(jī)低于6分的學(xué)生,其綜合設(shè)計(jì)成績(jī)按不及格處理。7、此表格式為武漢工程大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院提供的基本格式(適用于學(xué)院各類(lèi)綜合設(shè)計(jì)),各教研室可根據(jù)本門(mén)綜合設(shè)計(jì)的特點(diǎn)及內(nèi)容做適當(dāng)?shù)恼{(diào)整,并上報(bào)學(xué)院批準(zhǔn)。成績(jī)?cè)u(píng)定表學(xué)生姓名: 張小朗 學(xué)號(hào): 1005090226 班級(jí): 10計(jì)科02班 類(lèi)別合計(jì)分值各項(xiàng)分值評(píng)分標(biāo)準(zhǔn)實(shí)際得分合計(jì)得
3、分備注平時(shí)表現(xiàn)1010按時(shí)參加綜合設(shè)計(jì),無(wú)曠課、遲到、早退、違反實(shí)驗(yàn)室紀(jì)律等情況。完成情況3020按設(shè)計(jì)任務(wù)書(shū)的要求完成了全部任務(wù),能完整演示其設(shè)計(jì)內(nèi)容,符合要求。10能對(duì)其設(shè)計(jì)內(nèi)容進(jìn)行詳細(xì)、完整的介紹,并能就指導(dǎo)教師提出的問(wèn)題進(jìn)行正確的回答。報(bào)告質(zhì)量3510報(bào)告文字通順,內(nèi)容翔實(shí),論述充分、完整,立論正確,結(jié)構(gòu)嚴(yán)謹(jǐn)合理;報(bào)告字?jǐn)?shù)符合相關(guān)要求,工整規(guī)范,整齊劃一。5課題背景介紹清楚,綜述分析充分。5設(shè)計(jì)方案合理、可行,論證嚴(yán)謹(jǐn),邏輯性強(qiáng),具有說(shuō)服力。5符號(hào)統(tǒng)一;圖表完備、符合規(guī)范要求。5能對(duì)整個(gè)設(shè)計(jì)過(guò)程進(jìn)行全面的總結(jié),得出有價(jià)值的結(jié)論或結(jié)果。5參考文獻(xiàn)數(shù)量在3篇以上,格式符合要求,在正文中正確
4、引用。答辯情況2510在規(guī)定時(shí)間內(nèi)能就所設(shè)計(jì)的內(nèi)容進(jìn)行闡述,言簡(jiǎn)意明,重點(diǎn)突出,論點(diǎn)正確,條理清晰。15在規(guī)定時(shí)間內(nèi)能準(zhǔn)確、完整、流利地回答教師所提出的問(wèn)題??傇u(píng)成績(jī): 分 補(bǔ)充說(shuō)明: 指導(dǎo)教師: (簽字)日 期: 年 月 日答辯記錄表學(xué)生姓名: 張小朗 學(xué)號(hào): 1005090226 班級(jí): 10計(jì)科02班 答辯地點(diǎn): 計(jì)算機(jī)大樓419 答辯內(nèi)容記錄:答辯成績(jī)合計(jì)分值各項(xiàng)分值評(píng)分標(biāo)準(zhǔn)實(shí)際得分合計(jì)得分備注2510在規(guī)定時(shí)間內(nèi)能就所設(shè)計(jì)的內(nèi)容進(jìn)行闡述,言簡(jiǎn)意明,重點(diǎn)突出,論點(diǎn)正確,條理清晰。15在規(guī)定時(shí)間內(nèi)能準(zhǔn)確、完整、流利地回答教師所提出的問(wèn)題。答辯小組成員(簽字): 年 月 日指導(dǎo)教師評(píng)語(yǔ)指導(dǎo)
5、教師: (簽字)日 期: 年 月 日一、綜合設(shè)計(jì)目的、條件、任務(wù)和內(nèi)容要求: 目的:通過(guò)C+面向?qū)ο蟪绦蛟O(shè)計(jì),實(shí)現(xiàn)飛行棋游戲的設(shè)計(jì)。旨在提高分析解決實(shí)際問(wèn)題的能力,更進(jìn)一步的掌握和理解所學(xué)的知識(shí)。條件:PC機(jī)一臺(tái) Microsoft visual C+ 6.0任務(wù):1、根據(jù)功能要求,設(shè)計(jì)總體方案; 2、根據(jù)總體方案進(jìn)行編程實(shí)現(xiàn); 3、進(jìn)行軟件測(cè)試; 4、書(shū)寫(xiě)綜合設(shè)計(jì)報(bào)告。 內(nèi)容要求:利用C+程序設(shè)計(jì)實(shí)現(xiàn)飛行棋游戲設(shè)計(jì)。 指導(dǎo)教師簽字: 年 月 日二、進(jìn)度安排:1. 總體方案設(shè)計(jì) (12天)2. 代碼編寫(xiě)與調(diào)試(56天)3. 結(jié)果分析及書(shū)寫(xiě)報(bào)告(23天)三、應(yīng)收集資料及主要參考文獻(xiàn):1 王浩.
6、Visual C+游戲開(kāi)發(fā)經(jīng)典案例詳解M.北京:清華大學(xué)出版社.2010.2 劉宇軍. C+程序設(shè)計(jì)教程M.北京:清華大學(xué)出版社.2008.3 任哲. MFC Windows應(yīng)用程序設(shè)計(jì)M.北京:清華大學(xué)出版社.2007.4 A.Reinefeld. An Improvement of the Scout Tree Search AlgorithmJ. IccAJournal,VOL.6.No.4,1983.四、摘要:目前,以計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)技術(shù)為核心的現(xiàn)代網(wǎng)絡(luò)技術(shù)已在現(xiàn)實(shí)生活和生產(chǎn)中得以廣泛的使用,休閑類(lèi)網(wǎng)絡(luò)游戲集趣味性,娛樂(lè)性,互動(dòng)性和益智性于一體,已經(jīng)成為多數(shù)人群的休閑方式。本次課程設(shè)計(jì)
7、是關(guān)于飛行棋的設(shè)計(jì)與實(shí)現(xiàn),飛行棋是起源于中國(guó)古代的傳統(tǒng)傳統(tǒng)游戲之一。和現(xiàn)代飛行棋所不同的是,當(dāng)年的飛行棋并沒(méi)有飛機(jī)而是馬車(chē),但玩法一模一樣?,F(xiàn)代飛行棋已經(jīng)成為休閑娛樂(lè)的好項(xiàng)目,它的廣為流傳和它的娛樂(lè)性、休閑性是密切相關(guān)的。本次課程設(shè)計(jì)實(shí)現(xiàn)了兩個(gè)不同陣營(yíng)中的兩架飛機(jī)飛出大本營(yíng),走過(guò)相同或不同的路徑,相同陣營(yíng)飛機(jī)相遇疊加,不同陣營(yíng)飛機(jī)相遇碰撞回大本營(yíng)以及到達(dá)終點(diǎn)等功能。分了四章節(jié)來(lái)介紹本次飛行棋的課程設(shè)計(jì),第一章是飛行器的背景簡(jiǎn)介,第二章是系統(tǒng)總體介紹,第三章是對(duì)飛行棋功能實(shí)現(xiàn)的具體介紹,第四章是對(duì)程序的測(cè)試,確保程序的健壯性。本游戲在 Visual C+6.0環(huán)境下使用MFC開(kāi)發(fā)設(shè)計(jì)的,設(shè)計(jì)過(guò)程
8、遵從一般棋牌類(lèi)游戲的開(kāi)發(fā)原理,并且實(shí)現(xiàn)了飛行棋的基本要求。關(guān)鍵詞:飛行棋 ;MFC ;Visual C+五、Abstract:Modern network technology, computer technology and network technology as the core has to be in real life and the production of widespread use of casual game set interesting, entertaining, interactive and educational one, has become the m
9、ajority population of leisure.This course is designed to design and implementation on the flight chess.Flying Chess originated in ancient China, the traditional one of the traditional game. And modern flight chess, flight chess and aircraft, but the carriage, but the games are played exactly the sam
10、e. Modern flight chess has become a recreational project, it spread far and wide and it's entertaining, and casual sex are closely related.This course is designed to achieve two different camps in the two planes flying stronghold, the same or different paths through the same camp overlay planes
11、meet, encounter different camps plane crash back to base camp and reach the finish line functions. Of the four chapters to introduce this flight chess curriculum design, the first chapter is the aircraft Background Introduction, Chapter II is a system overview, the third chapter is an introduction t
12、o flight chess specific functions to achieve, is the fourth chapter testing procedures to ensure the robustness of the program.This game use MFC Visual C + + 6.0 environment, development and design, the design process to comply with the principle of the development of the chess game.Keywords: Flying
13、 Chess;MFC;Visual C+武漢工程大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院 綜合設(shè)計(jì)報(bào)告目 錄摘 要 IIAbstract . III第一章 飛行棋概述. 11.1 飛行棋背景與研究意義 .11.2 主要工作和報(bào)告結(jié)構(gòu) .1第二章系統(tǒng)總體設(shè)計(jì).32.1 需求分析.32.2飛行棋系統(tǒng)功能與結(jié)構(gòu).32.2.1 飛行棋功能.32.2.2 飛行棋結(jié)構(gòu).4第三章飛行棋系統(tǒng)詳細(xì)設(shè)計(jì). 63.1 飛行棋棋盤(pán)設(shè)計(jì).63.2 細(xì)節(jié)設(shè)計(jì).63.3 飛機(jī)撞機(jī)、并列、飛出.83.4函數(shù)設(shè)計(jì)與分析.83.4.1 全局變量分析.83.4.2程序函數(shù)的設(shè)計(jì)與分析.9第四章系統(tǒng)測(cè)試與結(jié)果分析.104.1 系統(tǒng)主界面.104.2
14、飛機(jī)飛行過(guò)程測(cè)試與分析.104.3 撞機(jī),疊機(jī).114.4 到達(dá)終點(diǎn).124.5 性能測(cè)試.13總 結(jié).14 致 謝 .15 參考文獻(xiàn) .16附錄 主要程序代碼 .17 摘 要目前,以計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)技術(shù)為核心的現(xiàn)代網(wǎng)絡(luò)技術(shù)已在現(xiàn)實(shí)生活和生產(chǎn)中得以廣泛的使用,休閑類(lèi)網(wǎng)絡(luò)游戲集趣味性,娛樂(lè)性,互動(dòng)性和益智性于一體,已經(jīng)成為多數(shù)人群的休閑方式。本次課程設(shè)計(jì)是關(guān)于飛行棋的設(shè)計(jì)與實(shí)現(xiàn),飛行棋是起源于中國(guó)古代的傳統(tǒng)傳統(tǒng)游戲之一。和現(xiàn)代飛行棋所不同的是,當(dāng)年的飛行棋并沒(méi)有飛機(jī)而是馬車(chē),但玩法一模一樣?,F(xiàn)代飛行棋已經(jīng)成為休閑娛樂(lè)的好項(xiàng)目,它的廣為流傳和它的娛樂(lè)性、休閑性是密切相關(guān)的。本次課程設(shè)計(jì)實(shí)現(xiàn)了兩個(gè)不
15、同陣營(yíng)中的兩架飛機(jī)飛出大本營(yíng),走過(guò)相同或不同的路徑,相同陣營(yíng)飛機(jī)相遇疊加,不同陣營(yíng)飛機(jī)相遇碰撞回大本營(yíng)以及到達(dá)終點(diǎn)等功能。分了四章節(jié)來(lái)介紹本次飛行棋的課程設(shè)計(jì),第一章是飛行器的背景簡(jiǎn)介,第二章是系統(tǒng)總體介紹,第三章是對(duì)飛行棋功能實(shí)現(xiàn)的具體介紹,第四章是對(duì)程序的測(cè)試,確保程序的健壯性。本游戲在 Visual C+6.0環(huán)境下使用MFC開(kāi)發(fā)設(shè)計(jì)的,設(shè)計(jì)過(guò)程遵從一般棋牌類(lèi)游戲的開(kāi)發(fā)原理,并且實(shí)現(xiàn)了飛行棋的基本要求。關(guān)鍵詞:飛行棋 ;MFC ;Visual C+AbstractModern network technology, computer technology and network tech
16、nology as the core has to be in real life and the production of widespread use of casual game set interesting, entertaining, interactive and educational one, has become the majority population of leisure.This course is designed to design and implementation on the flight chess.Flying Chess originated
17、 in ancient China, the traditional one of the traditional game. And modern flight chess, flight chess and aircraft, but the carriage, but the games are played exactly the same. Modern flight chess has become a recreational project, it spread far and wide and it's entertaining, and casual sex are
18、 closely related.This course is designed to achieve two different camps in the two planes flying stronghold, the same or different paths through the same camp overlay planes meet, encounter different camps plane crash back to base camp and reach the finish line functions. Of the four chapters to int
19、roduce this flight chess curriculum design, the first chapter is the aircraft Background Introduction, Chapter II is a system overview, the third chapter is an introduction to flight chess specific functions to achieve, is the fourth chapter testing procedures to ensure the robustness of the program
20、.This game use MFC Visual C + + 6.0 environment, development and design, the design process to comply with the principle of the development of the chess game.Keywords: Flying Chess;MFC;Visual C+II武漢工程大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院 綜合設(shè)計(jì)報(bào)告第一章 飛行棋概述1.1飛行棋背景和研究意義 如今外國(guó)游戲已經(jīng)在中國(guó)市場(chǎng)占有很重要的地位,使得中國(guó)的文化環(huán)境逐漸改變,民族文化已經(jīng)不能吸引玩家,尤其近年來(lái)屢屢的事
21、件和媒體輿論的影響,已經(jīng)讓網(wǎng)絡(luò)游戲成為大眾眼中毒害青少年的精神毒品。而宣傳中國(guó)傳統(tǒng)文化,引導(dǎo)青少年健康游戲、快樂(lè)游戲應(yīng)該是每個(gè)游戲工作者的責(zé)任和義務(wù)。棋類(lèi)游戲是中華民族文化的瑰寶,被人們稱(chēng)為“智慧的體操”,是老少皆宜的競(jìng)賽游戲。幼兒園中班教育教學(xué)中,引入融趣味性、益智性于一體的飛行棋游戲,讓孩子們?cè)谟螒蛑袑W(xué)習(xí)下棋,體驗(yàn)下棋帶來(lái)的愉悅與成就感,不僅可以開(kāi)發(fā)兒童智力、訓(xùn)練兒童思維,還可以培養(yǎng)兒童的專(zhuān)注力、意志力、合作能力以及規(guī)則意識(shí)、創(chuàng)新意識(shí)等,養(yǎng)成做事認(rèn)真、專(zhuān)注的好習(xí)慣,促進(jìn)兒童的全面發(fā)展。而飛行棋作為一種常見(jiàn)的、富有趣味性、益智性、玩法簡(jiǎn)單、易學(xué)的棋類(lèi)游戲,在兒童教育教學(xué)階段開(kāi)展,不僅讓孩子們
22、在游戲中學(xué)習(xí)下棋,體驗(yàn)下棋帶來(lái)的愉悅與成就感,開(kāi)發(fā)兒童智力、訓(xùn)練兒童思維,還可以培養(yǎng)兒童的專(zhuān)注力、意志力、合作能力以及規(guī)則意識(shí)、創(chuàng)新意識(shí)等,養(yǎng)成做事認(rèn)真、專(zhuān)注的好習(xí)慣,促進(jìn)兒童的全面發(fā)展。飛行棋這種轉(zhuǎn)圈式的路程設(shè)計(jì)來(lái)自于空戰(zhàn)中的“拉弗伯雷圓圈”。法國(guó)人拉弗伯雷對(duì)德國(guó)的"大圓圈編隊(duì)"戰(zhàn)術(shù)作了改進(jìn),使參加編隊(duì)的飛機(jī)不但保持在一個(gè)水平面上飛行,而且可繞圓圈盤(pán)旋爬高。這樣就可以利用防御隊(duì)形進(jìn)行盤(pán)旋以取得高度優(yōu)勢(shì),伺機(jī)進(jìn)行攻擊。這就是著名的"拉弗伯雷大圓圈"。當(dāng)時(shí)人們發(fā)明這種棋,是用一種先進(jìn)的空戰(zhàn)戰(zhàn)術(shù)。 本次課程設(shè)計(jì)的意義在于掌握對(duì)于MFC編程的綜合運(yùn)用,怎樣通過(guò)
23、圖形界面控制繪圖實(shí)現(xiàn)游戲的一些基本功能,對(duì)于MFC的學(xué)習(xí)有很大幫助。界面設(shè)計(jì)應(yīng)該是游戲設(shè)計(jì)中非常重要的一個(gè)環(huán)節(jié),玩家與游戲系統(tǒng)的直接交互就是通過(guò)界面系統(tǒng)完成的。游戲的界面跟產(chǎn)品的外觀和功能一樣,要能吸引玩家并且易用。在設(shè)計(jì)界面的過(guò)程中,要一直注重易用性設(shè)計(jì)原則,并且充分考慮用戶(hù)感受,隨時(shí)調(diào)整和修改界面的設(shè)計(jì)細(xì)節(jié)。 游戲界面既具有界面設(shè)計(jì)的一般規(guī)律,更有游戲這一特殊領(lǐng)域的個(gè)性設(shè)計(jì)原則。在界面的設(shè)計(jì)制作過(guò)程中,應(yīng)在掌握基本游戲框架設(shè)定能力和對(duì)用戶(hù)需求分析能力的基礎(chǔ)上,了解并掌握游戲開(kāi)發(fā)機(jī)制尤其是游戲界面的實(shí)現(xiàn)原理以及設(shè)計(jì)中 常 用 的 技 術(shù),例 如 :界 面 風(fēng) 格 制 定、美 術(shù) 需 求 文
24、檔 制 作、界 面 原 型 制 作、程 序 坐標(biāo)圖制作等技術(shù)。1.2主要工作和報(bào)告結(jié)構(gòu)本次課程設(shè)計(jì)的主要工作是完成飛行旗游戲的設(shè)計(jì)以及具體實(shí)現(xiàn)過(guò)程。其主要設(shè)計(jì)分為棋盤(pán)的設(shè)計(jì),隨機(jī)數(shù)的產(chǎn)生(模擬骰子),飛機(jī)在飛行中的起步、飛行、疊加、撞機(jī)、到達(dá)終點(diǎn)等,具體介紹參照第三章。本次課程設(shè)計(jì)報(bào)告的結(jié)構(gòu)如表1-1所示:表1-1 論文結(jié)構(gòu)表概要包括游戲以及設(shè)計(jì)介紹游戲設(shè)計(jì)包括界面以及玩法游戲具體實(shí)現(xiàn)包括游戲核心算法功能測(cè)試包括游戲測(cè)評(píng)及總結(jié)本次課程設(shè)計(jì)大致分為四個(gè)部分,第一章概要,介紹了飛行棋的發(fā)展背景和研究意義,并描述了本次課程設(shè)計(jì)報(bào)告的內(nèi)容結(jié)構(gòu)。第二章系統(tǒng)總體設(shè)計(jì),介紹了需求分析、系統(tǒng)功能及結(jié)構(gòu),說(shuō)明了
25、整個(gè)游戲的大致設(shè)計(jì)框架,游戲控制流程等,部分重要細(xì)節(jié)通過(guò)圖表的形式進(jìn)行了描述。第三章系統(tǒng)詳細(xì)設(shè)計(jì),介紹了棋盤(pán)設(shè)計(jì)、細(xì)節(jié)設(shè)計(jì),細(xì)節(jié)設(shè)計(jì)中詳細(xì)介紹了游戲過(guò)程中的游戲功能和功能函數(shù)的實(shí)現(xiàn)。第四章設(shè)計(jì)結(jié)果及分析,介紹了棋盤(pán)界面初始化、游戲進(jìn)行過(guò)程中的出現(xiàn)的缺陷以及相應(yīng)的優(yōu)化方案。第二章 系統(tǒng)總體設(shè)計(jì)2.1 需求分析飛行棋游戲是一個(gè)比較流行的游戲,本次實(shí)驗(yàn)設(shè)計(jì)主要是對(duì)它進(jìn)行簡(jiǎn)化設(shè)計(jì)。但是仍然保留了它大多數(shù)的基本功能?;拘枨笕缦拢菏紫龋w行棋游戲是一個(gè)在棋盤(pán)上進(jìn)行的游戲。所以其需要用一個(gè)總體棋盤(pán)來(lái)表示飛機(jī)的軌道,在該棋盤(pán)上主要對(duì)飛機(jī)進(jìn)行游戲規(guī)則限定;其次,飛行棋玩家本次設(shè)計(jì)主要限定為兩個(gè)玩家。故在這里需
26、要設(shè)計(jì)兩個(gè)大本營(yíng)來(lái)代表兩個(gè)玩家的角色;再次需要設(shè)計(jì)一個(gè)文本框來(lái)顯示游戲玩家所搖出來(lái)的數(shù)字以模擬骰子。最后,游戲需要有一個(gè)終點(diǎn),當(dāng)玩家的飛機(jī)抵達(dá)終點(diǎn)時(shí)進(jìn)行判斷游戲是否終止。本次課程設(shè)計(jì)所安排的玩家角色為兩人,在地圖上呈對(duì)角分布,玩家行走路線(xiàn)為逆時(shí)針。每個(gè)玩家擁有兩架飛機(jī)進(jìn)行游戲。詳細(xì)游戲規(guī)則如下: 飛機(jī)出動(dòng)規(guī)則:首先由玩家A點(diǎn)擊“開(kāi)始”按鈕搖骰子,顯示數(shù)字N,當(dāng)數(shù)字框顯示的數(shù)字N=6時(shí)才允許出動(dòng)一架飛機(jī),如果沒(méi)有搖到數(shù)字6則由玩家B進(jìn)行相同的操作。輪流操作,直到有飛機(jī)從基地中出發(fā)。當(dāng)某個(gè)基地中存在一架飛機(jī)時(shí),游戲玩家通過(guò)鼠標(biāo)選擇飛機(jī)進(jìn)行游戲,例如:當(dāng)搖出的數(shù)字為非6時(shí),可以選擇已經(jīng)出動(dòng)的飛機(jī)進(jìn)行
27、游戲,數(shù)字為幾就前進(jìn)幾步;若為數(shù)字為6時(shí)可以選擇未出動(dòng)的飛機(jī),使飛機(jī)出基地。當(dāng)基地中不存在飛機(jī)時(shí),搖出數(shù)字后玩家通過(guò)鼠標(biāo)選擇希望前進(jìn)的飛機(jī)進(jìn)行游戲,數(shù)字為幾就前進(jìn)幾步。飛機(jī)在地圖中前進(jìn)時(shí)的規(guī)則:點(diǎn)擊“開(kāi)始”按鈕,數(shù)字顯示后,通過(guò)鼠標(biāo)選擇需要前進(jìn)的飛機(jī),數(shù)字為幾就前進(jìn)幾步。當(dāng)飛機(jī)在地圖上前進(jìn)時(shí),若兩個(gè)玩家的飛機(jī)均落在了同一個(gè)地點(diǎn),那么后去的飛機(jī)將把前一個(gè)落在該地點(diǎn)的飛機(jī)彈回飛機(jī)本來(lái)的基地中,被彈回的飛機(jī)需要玩家根據(jù)“飛機(jī)出動(dòng)規(guī)則”再次出動(dòng)飛機(jī)。飛機(jī)到達(dá)目的地規(guī)則:玩家需要將自己基地中的飛機(jī)通過(guò)指定的路線(xiàn)進(jìn)入目的地,在到達(dá)目的地之前,如果搖出的數(shù)字剛好使得飛機(jī)進(jìn)入目的地,則該飛機(jī)成功完成任務(wù)。如果
28、搖出的數(shù)字M多出飛機(jī)到達(dá)目的地本應(yīng)該對(duì)應(yīng)的數(shù)字N時(shí),則飛機(jī)從目的地倒退M-N步,直到某個(gè)玩家的飛機(jī)全部到達(dá)終點(diǎn),該玩家獲勝,游戲結(jié)束。游戲的界面元素: 對(duì)一個(gè)游戲而言,游戲界面是一個(gè)相當(dāng)重要的部分,界面的美觀直接影響到玩家對(duì)游戲喜愛(ài)程度,下面主要介紹界面中的一些主要元素。游戲界面元素有:地圖、骰子、兩方棋子(每方2個(gè)共4個(gè)角色)。2.2 飛行棋系統(tǒng)功能與結(jié)構(gòu)2.2.1 飛行棋功能本次設(shè)計(jì)的系統(tǒng)大致上能夠?qū)崿F(xiàn)飛行棋的一些基本操作,諸如擲骰子,然后根據(jù)點(diǎn)數(shù)判斷是否出飛機(jī)或走動(dòng)飛機(jī),以及飛機(jī)撞機(jī)后的處理,并嚴(yán)格按照飛行棋的游戲規(guī)則進(jìn)行走動(dòng)。用戶(hù)只能在特定的區(qū)域來(lái)擲骰子以及控制飛機(jī)的移動(dòng)。最后當(dāng)其中一
29、方所有的飛機(jī)都已經(jīng)到達(dá)終點(diǎn)則會(huì)彈出消息框提示勝利,至此,一輪游戲結(jié)束。2.2.2 飛行棋結(jié)構(gòu)飛行棋游戲由棋盤(pán),飛機(jī)A1、A2,B1、B2,骰子和相關(guān)的后臺(tái)控制程序組成。游戲框架結(jié)構(gòu)如圖2.1所示:圖2.1 框架結(jié)構(gòu)如圖2.1所示,在游戲進(jìn)行時(shí),由鼠標(biāo)操作,棋盤(pán)界面變化,游戲控制模塊三部分相結(jié)合來(lái)實(shí)現(xiàn)游戲的具體內(nèi)容。具體操作為:通過(guò)鼠標(biāo)在棋盤(pán)界面上進(jìn)行點(diǎn)擊操作,執(zhí)行搖骰以及選擇飛機(jī)的功能。其中可操作的對(duì)象為一個(gè)“搖一搖”骰子和4架飛機(jī)分別是A1、A2、B1、B2,通過(guò)鼠標(biāo)點(diǎn)擊骰子可以產(chǎn)生隨機(jī)數(shù),點(diǎn)擊飛機(jī)可以選擇出動(dòng)飛機(jī)的類(lèi)型。在通過(guò)鼠標(biāo)操作后,圖形界面將相應(yīng)的數(shù)據(jù)輸入后臺(tái)程序,通過(guò)游戲規(guī)則進(jìn)行判
30、斷飛機(jī)處于哪種狀態(tài),并將相應(yīng)的數(shù)據(jù)通過(guò)邏輯運(yùn)算得到最后的結(jié)果,最終結(jié)果再由圖形界面的棋盤(pán)進(jìn)行輸出顯示。整個(gè)程序流程大致如圖2.2所示: 圖2.2 飛行棋流程圖 在整個(gè)程序中首先對(duì)所有的變量(所有的飛機(jī)的ID號(hào))進(jìn)行初始化并且賦值為0,初始化后,點(diǎn)擊“開(kāi)始”按鈕,得到行走的步數(shù)賦值給step,通過(guò)if-else語(yǔ)句判斷step是否等于6,并按照游戲規(guī)則進(jìn)行游戲。當(dāng)step為6時(shí),玩家可以按照游戲規(guī)則,讓大本營(yíng)中未出動(dòng)的飛機(jī)飛出,或者讓處于棋盤(pán)上的飛機(jī)向前飛行6步;當(dāng)step不為6時(shí),玩家只能讓處于棋盤(pán)上的飛機(jī)向前飛行,若玩家沒(méi)有飛機(jī)處于棋盤(pán)上,則由下一位玩家搖骰。直到某一位玩家的所有飛機(jī)都到達(dá)終
31、點(diǎn),那么該玩家獲勝,游戲結(jié)束。 在用VC+6.0建工程時(shí),系統(tǒng)會(huì)自帶CAboutDlg,,CFXQApp, CFXQDoc,CFXQView,CMainFrame五個(gè)類(lèi),為了實(shí)現(xiàn)本次課程設(shè)計(jì)的功能,新建了一個(gè)CGameDlg類(lèi)如圖2.3所示: 圖2.3 飛行棋工程類(lèi) 圖2.4 主要函數(shù)同時(shí),在新建的CGameDlg類(lèi)中,根據(jù)需要添加了Onbegin(),OnBtnA1(),OnBtnA2(),OnBtnB1(),OnBtnB2()五個(gè)功能函數(shù),每個(gè)函數(shù)現(xiàn)實(shí)了每個(gè)對(duì)應(yīng)按鈕的功能。其中OnBegin()函數(shù)就是一個(gè)控制游戲開(kāi)始的函數(shù),在里面主要涉及了對(duì)游戲用戶(hù)的飛機(jī)控制調(diào)用函數(shù)集判斷表達(dá)式。OnB
32、tnA1()是玩家A的一號(hào)飛機(jī)控制函數(shù),在里面有一些主要算法用來(lái)判斷各個(gè)飛機(jī)所處各自狀態(tài)下的所遇到的情況進(jìn)行各自相對(duì)應(yīng)處理。OnBtnA2()、OnBtnB1()、OnBtnB2()為其它三個(gè)飛機(jī)的相對(duì)應(yīng)操作。具體設(shè)計(jì)圖如下圖2.4所示。第三章 飛行棋系統(tǒng)詳細(xì)設(shè)計(jì)3.1 飛行棋棋盤(pán)設(shè)計(jì)界面是通過(guò)MFC繪畫(huà)出來(lái)的,其中設(shè)置了兩個(gè)大本營(yíng)、一個(gè)終點(diǎn)。大本營(yíng)在地圖中對(duì)角分布,終點(diǎn)處于地圖的中心。主要用了Button按鈕來(lái)模擬飛機(jī)跑道以及選擇按鈕設(shè)計(jì)。如圖3.1所示:圖3.1 棋盤(pán)設(shè)計(jì)界面設(shè)計(jì)主要是用MFC的文件進(jìn)行設(shè)計(jì),通過(guò)MFC的代碼生成菜單選擇。在菜單選擇中添加一個(gè)游戲菜單選項(xiàng),通過(guò)點(diǎn)擊此選項(xiàng)來(lái)進(jìn)
33、入游戲的棋盤(pán)界面。由游戲控制按鈕打開(kāi)游戲棋盤(pán)后,可用發(fā)現(xiàn)整個(gè)棋盤(pán)規(guī)劃樣式。左邊是整個(gè)游戲的飛行界面。使用Button按鈕來(lái)設(shè)計(jì)飛機(jī)跑道、飛機(jī)大本營(yíng)以及終點(diǎn)。整個(gè)路徑使用Button按鈕的id來(lái)進(jìn)行編號(hào)同時(shí)為后面的游戲進(jìn)行控制。在界面的右側(cè)是一個(gè)游戲控制選擇,該位置有五個(gè)按鈕和一個(gè)文本對(duì)話(huà)框,對(duì)話(huà)框主要是用來(lái)顯示產(chǎn)生數(shù)字以及顯示飛機(jī)出動(dòng)的一方;五個(gè)按鈕分別是游戲開(kāi)始按鈕,用來(lái)產(chǎn)生隨機(jī)數(shù),此隨機(jī)數(shù)也是飛機(jī)飛的格數(shù);四個(gè)分別控制A1,A2,B1,B2按鈕來(lái)控制飛機(jī)的選擇,實(shí)現(xiàn)飛機(jī)的行走。地圖的正方形框一共有60步,逆時(shí)針排序分布,進(jìn)入終點(diǎn)的路線(xiàn)分別是61到66,67到72,終點(diǎn)的ID號(hào)為73。3.2
34、 細(xì)節(jié)設(shè)計(jì)1. 骰子設(shè)計(jì)飛行棋的游戲設(shè)計(jì)主要是當(dāng)按下開(kāi)始按鈕后,函數(shù)使用GetTimer()函數(shù)來(lái)獲取電腦當(dāng)前時(shí)間,對(duì)此時(shí)間取整,獲得一個(gè)數(shù)字,然后用此數(shù)字再對(duì)數(shù)字6進(jìn)行取模運(yùn)算,用以產(chǎn)生游戲運(yùn)行時(shí)所需的數(shù)字信息,模擬骰子轉(zhuǎn)動(dòng)后產(chǎn)生的數(shù)字。在顯示時(shí)間時(shí),用itoa()將產(chǎn)生的隨機(jī)數(shù)轉(zhuǎn)換成字符,通過(guò)SetDlgItemText()函數(shù)來(lái)進(jìn)行顯示數(shù)字,用以提供給此時(shí)游戲玩家如何選擇飛機(jī)行走,如圖3.2所示:圖3.2骰子設(shè)計(jì)在對(duì)話(huà)框中的第二個(gè)顯示窗口顯示飛機(jī)出動(dòng)的一方。此功能的實(shí)現(xiàn)方法是:根據(jù)定義的全局變量n的奇偶性來(lái)判斷,當(dāng)n為奇數(shù)時(shí),選擇大本營(yíng)1中一架飛機(jī)出動(dòng),當(dāng)n為偶數(shù)時(shí),選擇大本營(yíng)2中一架飛
35、機(jī)出動(dòng),如圖3.2所示。2. 飛機(jī)出大本營(yíng)飛機(jī)飛出大本營(yíng)的要求是當(dāng)前玩家搖出的骰子點(diǎn)數(shù)為6,當(dāng)為6時(shí),飛機(jī)才能夠允許飛出大本營(yíng),如果搖出的骰子點(diǎn)數(shù)不為6,那么就算是點(diǎn)擊飛機(jī),飛機(jī)也不會(huì)從大本營(yíng)中飛出。該功能通過(guò)void CGameDlg:OnBegin()函數(shù)實(shí)現(xiàn)。 在第一個(gè)玩家搖骰之后,就由第二個(gè)玩家搖骰。所以在對(duì)于所搖出的骰子數(shù)運(yùn)用于哪個(gè)玩家需要通過(guò)一個(gè)設(shè)定的N來(lái)控制。當(dāng)N為奇數(shù)時(shí),骰子數(shù)作用在玩家A上;當(dāng)N為偶數(shù)時(shí),骰子數(shù)作用在玩家B上。因?yàn)榈貓D中的每一步格子都是有自己獨(dú)有的ID號(hào)的,所以在飛機(jī)出動(dòng)之后,不同玩家的飛機(jī)所處的地點(diǎn)不一致,飛機(jī)均??吭谧约捍蟊緺I(yíng)旁邊,并且行駛步數(shù)為1,所以在
36、設(shè)計(jì)函數(shù)時(shí),每一個(gè)飛機(jī)在飛出大本營(yíng)后,設(shè)定的ID號(hào)由程序內(nèi)部分別進(jìn)行控制。3. 飛機(jī)前進(jìn)在飛機(jī)飛出大本營(yíng)后,飛機(jī)通過(guò)骰子的點(diǎn)數(shù)前進(jìn),點(diǎn)數(shù)為幾就前進(jìn)幾步。該功能通過(guò)GetDlgItemText()函數(shù)來(lái)將剛才產(chǎn)生的數(shù)字調(diào)用并遞交到行走函數(shù)中,供飛機(jī)進(jìn)行飛行。該函數(shù)是通過(guò)對(duì)飛機(jī)當(dāng)前所在按鈕的id進(jìn)行運(yùn)算,消除原來(lái)按鈕的屬性值,并且將新的屬性值顯示到新的按鈕中。結(jié)束該玩家的控制權(quán),遞交控制器到對(duì)方玩家。當(dāng)某一玩家仍然有一架飛機(jī)未飛出大本營(yíng),骰子的點(diǎn)數(shù)在作用于那架未出動(dòng)的飛機(jī)時(shí),游戲中會(huì)彈出框,顯示“飛機(jī)還沒(méi)有飛出大本營(yíng)”。由于地圖中的ID號(hào)是按照逆時(shí)針的順序安排的,所以玩家B的飛機(jī)在前進(jìn)過(guò)程中會(huì)遇到
37、ID號(hào)突變的問(wèn)題,所以在ID號(hào)突變的時(shí)候,需要通過(guò)計(jì)算,使飛機(jī)在前進(jìn)過(guò)程中能夠正常的前進(jìn)。圖3.3 飛行路徑4. 飛機(jī)到達(dá)終點(diǎn)飛機(jī)不斷前進(jìn),最后處于自己獨(dú)有的線(xiàn)路上,該線(xiàn)路只有對(duì)應(yīng)的飛機(jī)才能夠停留(如:玩家A的飛機(jī)只能從ID為6166進(jìn)入終點(diǎn),玩家B的飛機(jī)只能從ID為6772進(jìn)入終點(diǎn)),最后通過(guò)自己的線(xiàn)路進(jìn)入終點(diǎn)。在3. 1的圖中可以看出,在行駛過(guò)程中ID號(hào)并不是一直加1的,所以在玩家A進(jìn)入自己的線(xiàn)路時(shí),要通過(guò)計(jì)算,使得飛機(jī)并不是從ID53前進(jìn)到ID54,而是直接從53跳轉(zhuǎn)到61。玩家B同理。飛機(jī)行走按照逆時(shí)針運(yùn)轉(zhuǎn)。當(dāng)飛機(jī)接近終點(diǎn)路徑時(shí),將會(huì)調(diào)用對(duì)操作進(jìn)行預(yù)處理,判斷當(dāng)完成此操作后,飛機(jī)是否會(huì)
38、抵達(dá)終點(diǎn),或者超出終點(diǎn)id編號(hào)。如果飛機(jī)抵達(dá)終點(diǎn)且該玩家只有一架飛機(jī)抵達(dá)則彈出對(duì)話(huà)框?qū)?yīng)的飛機(jī)已到達(dá)終點(diǎn),同時(shí)在此后的操作中禁止對(duì)該飛機(jī)進(jìn)行操作;若兩架飛機(jī)抵達(dá)終點(diǎn),則彈出對(duì)話(huà)框該玩家取得游戲的勝利,同時(shí)調(diào)用EndDialoge()函數(shù)來(lái)結(jié)束該游戲;若飛機(jī)未抵達(dá)終點(diǎn)并且超出了終點(diǎn)的id編號(hào),則調(diào)用操作id=id*2-step-endid用來(lái)將該操作進(jìn)行處理;若飛機(jī)未能抵達(dá)終點(diǎn),則進(jìn)行3.2.3操作。行走完畢后,結(jié)束該玩家的控制權(quán),并將控制權(quán)轉(zhuǎn)移到對(duì)方玩家。3.3飛機(jī)撞擊、并列、飛出當(dāng)飛機(jī)在棋盤(pán)行走的時(shí)候,如果同一個(gè)玩家的兩架飛機(jī)抵達(dá)同一個(gè)地點(diǎn)時(shí),則會(huì)進(jìn)行清除該飛機(jī)與當(dāng)前所在位置原來(lái)的痕跡,重新
39、寫(xiě)新的位置屬性。調(diào)用wsprintf()函數(shù)來(lái)產(chǎn)生一個(gè)新的字符串,其后將該字符串寫(xiě)在對(duì)應(yīng)的按鈕中;兩架飛機(jī)不是同一個(gè)玩家的時(shí)候,新來(lái)的飛機(jī)將會(huì)把原來(lái)的飛機(jī)踢回大本營(yíng),并且消除該位置的屬性,重新寫(xiě)入該位置的屬性。對(duì)方玩家的飛機(jī)將會(huì)重新開(kāi)始行走。行走完畢后,結(jié)束該玩家的控制權(quán),并將控制權(quán)轉(zhuǎn)移到對(duì)方玩家。當(dāng)玩家獲得控制權(quán)后,選擇一架飛機(jī)進(jìn)行飛行,該位置屬性將會(huì)消除,將未飛出的飛機(jī)編號(hào)寫(xiě)入該位置的屬性。同時(shí)將飛出的飛機(jī)編號(hào)寫(xiě)入其飛入的位置屬性。行走完畢后,結(jié)束該玩家的控制權(quán),并將控制權(quán)轉(zhuǎn)移到對(duì)方玩家。3.4函數(shù)設(shè)計(jì)與分析 3.4.1 全局變量分析每一個(gè)函數(shù)都會(huì)賦予一些字母特殊的意義,在計(jì)算機(jī)中,全局變
40、量就屬于這類(lèi)角色。每一個(gè)變量都有其作用域,而全局變量就存在于整個(gè)工程。在飛行棋設(shè)計(jì)中用到的一些全局變量如圖3.4所示,其具體作用如下: 圖3.4 全局變量介紹step: 模擬骰子的點(diǎn)數(shù),也是飛機(jī)跳動(dòng)的格數(shù);n : 點(diǎn)擊開(kāi)始的次數(shù),他的奇偶性影響到飛機(jī)的飛行,當(dāng)n為奇數(shù)時(shí),選擇大本營(yíng)1中的一架飛機(jī)出動(dòng),當(dāng)n為偶數(shù)時(shí), 選擇大本營(yíng)2中的一架飛機(jī)出動(dòng);m1: 賦予大本營(yíng)1中一架飛機(jī)的變量,隨著骰子的點(diǎn)數(shù)變化,其值與棋盤(pán)中按鈕的ID號(hào)對(duì)應(yīng);m2: 賦予大本營(yíng)1中一架飛機(jī)的變量,隨著骰子的點(diǎn)數(shù)變化,其值與棋盤(pán)中按鈕的ID號(hào)對(duì)應(yīng);n1: 賦予大本營(yíng)2中一架飛機(jī)的變量,隨著骰子的點(diǎn)數(shù)變化,其值與棋盤(pán)中按鈕的
41、ID號(hào)對(duì)應(yīng);n2: 賦予大本營(yíng)2中一架飛機(jī)的變量,隨著骰子的點(diǎn)數(shù)變化,其值與棋盤(pán)中按鈕的ID號(hào)對(duì)應(yīng);d1: 大本營(yíng)1中飛機(jī)到達(dá)終點(diǎn)的架數(shù),當(dāng)其值為2時(shí)表示最終勝利;d2: 大本營(yíng)2中飛機(jī)到達(dá)終點(diǎn)的架數(shù),當(dāng)其值為2時(shí)表示最終勝利;3.4.2 程序函數(shù)的設(shè)計(jì)與分析在程序中,實(shí)現(xiàn)一些具體的功能就要依賴(lài)函數(shù)來(lái)實(shí)現(xiàn)。在本次飛行棋的課程設(shè)計(jì)中,實(shí)現(xiàn)飛行的具體步驟都是依靠具體的函數(shù)實(shí)現(xiàn)的。本次課程設(shè)計(jì)中所使用到的函數(shù)都?xì)w納在CGameDlg這個(gè)類(lèi)中,具體的函數(shù)如圖3.3所示: 圖3.3 函數(shù)介紹 OnBegin() : 此函數(shù)是“開(kāi)始”按鈕功能的實(shí)現(xiàn),通過(guò)點(diǎn)擊“開(kāi)始”按鈕,搖出骰子的 點(diǎn)數(shù),飛機(jī)飛行的格數(shù)就
42、是搖出的點(diǎn)數(shù);還有另一個(gè)功能就是顯示飛機(jī)出動(dòng)的一方;OnBtnA1() : 此函數(shù)作用于按鈕“A1”,當(dāng)點(diǎn)擊開(kāi)始按鈕后,點(diǎn)擊“A1”按鈕,根據(jù)要求具體情況,飛機(jī)走出相應(yīng)的格數(shù),或者原地不動(dòng);OnBtnA2() : 此函數(shù)作用于按鈕“A2”,當(dāng)點(diǎn)擊開(kāi)始按鈕后,點(diǎn)擊“A2”按鈕,根據(jù)要求具體情況,飛機(jī)走出相應(yīng)的格數(shù),或者原地不動(dòng);OnBtnB1() : 此函數(shù)作用于按鈕“B1”,當(dāng)點(diǎn)擊開(kāi)始按鈕后,點(diǎn)擊“B1”按鈕,根據(jù)要求具體情況,飛機(jī)走出相應(yīng)的格數(shù),或者原地不動(dòng);OnBtnB2() : 此函數(shù)作用于按鈕“B2”,當(dāng)點(diǎn)擊開(kāi)始按鈕后,點(diǎn)擊“B2”按鈕,根據(jù)要求具體情況,飛機(jī)走出相應(yīng)的格數(shù),或者原地不
43、動(dòng);在函數(shù)設(shè)計(jì)中,OnBtnA1(),OnBtnA2() ,OnBtnB1() ,OnBtnB2() 這四個(gè)函數(shù)的功能是一樣的,代碼大部分也一樣,但還是有一部分是不相同的。對(duì)于功能實(shí)現(xiàn),代碼難點(diǎn)主要在于跳出大本營(yíng),撞機(jī),疊機(jī)以及到達(dá)終點(diǎn)的算法實(shí)現(xiàn),因?yàn)樵趯?xiě)算法時(shí),里面的部分?jǐn)?shù)據(jù)會(huì)是跳躍的,這就增加了難度。第四章 系統(tǒng)測(cè)試與結(jié)果分析4.1 系統(tǒng)主界面首先運(yùn)行程序,棋盤(pán)完整、飛機(jī)有序顯示在對(duì)應(yīng)區(qū)域,如圖4-1所示。圖4.1 系統(tǒng)主界面在此飛行棋中,功能比較簡(jiǎn)單,兩個(gè)大本營(yíng)中各有兩架飛機(jī),分別命名為A1,A2(此為大本營(yíng)1中的兩架),B1,B2(此為大本營(yíng)2中的兩架)。由于本次課程設(shè)計(jì)的飛行棋功能比
44、較簡(jiǎn)單,同時(shí)棋盤(pán)界面做的也不是很華麗,看起來(lái)和玩起來(lái)就少了很多樂(lè)趣。所以考慮了進(jìn)一步改進(jìn)的方向:本游戲改進(jìn)方向之一便是添加flash動(dòng)畫(huà)效果來(lái)實(shí)現(xiàn)擲骰的動(dòng)作以及飛機(jī)飛行的動(dòng)作。此過(guò)程的實(shí)現(xiàn)需要使用ActiveX控件在V應(yīng)用程序中添加Flash。其次本游戲改進(jìn)方向之二便是添加網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)人人對(duì)戰(zhàn),此過(guò)程需要用到MFC中的CAsyncSocket和CSocket進(jìn)行開(kāi)發(fā)。Socket編程分為兩種:面向連接協(xié)議的網(wǎng)絡(luò)通信編程和面向無(wú)連接的網(wǎng)絡(luò)通信編程。由于連接協(xié)議提供一系列數(shù)據(jù)糾錯(cuò)功能,可以保證在網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)及時(shí)、正確地到達(dá),所以面向連接協(xié)議的Socket編程模型應(yīng)用更為廣泛。而Socket的使用
45、時(shí)基于CS系統(tǒng)的(客戶(hù)機(jī)、服務(wù)器)。4.2 飛機(jī)飛行過(guò)程測(cè)試與分析點(diǎn)擊開(kāi)始按鈕開(kāi)始游戲、此時(shí)設(shè)置的骰子(搖一搖框中的第一個(gè)顯示框,第二個(gè)顯示框哪個(gè)大本營(yíng)走)就會(huì)顯示點(diǎn)數(shù)。當(dāng)擲的非6時(shí)飛機(jī)不能準(zhǔn)備起飛、當(dāng)擲到6后、飛機(jī)進(jìn)入準(zhǔn)備起飛狀態(tài),即跳到距大本營(yíng)一步的地方。大本營(yíng)1,2依次擲骰,點(diǎn)數(shù)即為飛機(jī)的前進(jìn)步數(shù)、若點(diǎn)數(shù)為6,則用戶(hù)可以選擇新出飛機(jī)或者選一架飛機(jī)繼續(xù)走。如圖4-2所示。圖4.2 飛機(jī)飛行在測(cè)試飛機(jī)飛行過(guò)程中,出現(xiàn)了諸多問(wèn)題,比如當(dāng)一架飛機(jī)走后,在原來(lái)的位置會(huì)留下痕跡,這個(gè)痕跡不會(huì)消失,就會(huì)在玩的過(guò)程中留下疑問(wèn),不知道飛機(jī)當(dāng)前位置;在飛行過(guò)程中會(huì)出現(xiàn)id跳躍的現(xiàn)象,所以在寫(xiě)算法時(shí)要注意之間
46、的差值,這些問(wèn)題都在測(cè)試的過(guò)程中出現(xiàn),我們組也一次解決了這些出現(xiàn)的問(wèn)題。由于本次設(shè)計(jì)過(guò)于簡(jiǎn)單,以后改進(jìn)方向可以為:增加游戲規(guī)則,增加代碼以完成對(duì)應(yīng)規(guī)則??梢栽谟螒虻貓D上設(shè)置關(guān)卡:1、普通;2、地雷;3、暫停;4、幸運(yùn)輪盤(pán)等。這里普通位置仍舊按照原來(lái)的規(guī)則進(jìn)行飛行,遇到地雷將會(huì)發(fā)生爆炸,飛入該位置的飛機(jī)將會(huì)發(fā)生爆炸,然后該飛機(jī)將被彈回大本營(yíng),暫停則是對(duì)方在完成一次操作后仍舊繼續(xù)游戲,該用戶(hù)錯(cuò)過(guò)一次操作。幸運(yùn)轉(zhuǎn)盤(pán)可以讓用戶(hù)通過(guò)轉(zhuǎn)動(dòng)轉(zhuǎn)盤(pán)來(lái)獲得一個(gè)新的機(jī)會(huì)等操作,以期通過(guò)改進(jìn)使得玩家獲得一個(gè)更加豐富的體驗(yàn)。4.3 撞機(jī)、疊機(jī)撞機(jī):當(dāng)不同大本營(yíng)的飛機(jī)走到同一格時(shí),后到的飛機(jī)將把前一架飛機(jī)撞回大本營(yíng)。疊機(jī)
47、:當(dāng)同一個(gè)大本營(yíng)的飛機(jī)走到同一格時(shí),此時(shí)的飛機(jī)將會(huì)疊加起來(lái),當(dāng)再次擲出點(diǎn)數(shù)時(shí),選擇其中任一飛機(jī)走出相應(yīng)的格數(shù)。撞機(jī)過(guò)程截圖4-3,如圖4-3所示大本營(yíng)1中A1飛機(jī)將大本營(yíng)2中B2飛機(jī)撞回機(jī)場(chǎng)。圖4.3 撞機(jī)撞機(jī)事件出現(xiàn)在不同大本營(yíng)之間,并且只會(huì)出現(xiàn)在兩個(gè)大本營(yíng)共同的路徑上面。在測(cè)試時(shí)沒(méi)有出現(xiàn)很大問(wèn)題,主要就是在編碼時(shí),把被撞飛機(jī)的全局變量設(shè)置為0就行了。疊機(jī)過(guò)程截圖4.4,如圖4-4所示大本營(yíng)1中A1,A2飛機(jī)相遇。圖4.4 疊機(jī)在飛行過(guò)程中,疊機(jī)是其中的一種特殊情況。在同一大本營(yíng)中的飛機(jī)相遇,不會(huì)出現(xiàn)上面撞機(jī)的情形,而會(huì)疊加在一起,當(dāng)再次飛行時(shí)兩架飛機(jī)則分開(kāi)。測(cè)試過(guò)程中,主要解決的問(wèn)題是,當(dāng)
48、兩架飛機(jī)相遇時(shí),前一架飛機(jī)不會(huì)被覆蓋,再分開(kāi)時(shí)后一架飛機(jī)會(huì)保留,為了實(shí)現(xiàn)此功能在主程序中增加了兩個(gè)if語(yǔ)句。4.5 到達(dá)終點(diǎn)勝利標(biāo)準(zhǔn):兩個(gè)大本營(yíng)中,哪個(gè)大本營(yíng)的兩架飛機(jī)均到達(dá)終點(diǎn),則勝利!在向終點(diǎn)進(jìn)發(fā)的過(guò)程中,當(dāng)有飛機(jī)到達(dá)終點(diǎn)時(shí),會(huì)給出提示框口飛機(jī)到達(dá)終點(diǎn),如圖4.5所示。當(dāng)同一陣營(yíng)的飛機(jī)都到達(dá)終點(diǎn)時(shí),給出勝利提示,如圖4.6所示。 圖4.5 飛機(jī)抵達(dá) 圖4.6 勝利抵達(dá)到達(dá)終點(diǎn)的情況分為兩種,一種為一架飛機(jī)到達(dá),另一種情況是同一陣營(yíng)的飛機(jī)都到達(dá)重點(diǎn)勝利。在到達(dá)終點(diǎn)的測(cè)試過(guò)程中,最主要的問(wèn)題集中在到達(dá)終點(diǎn)的算法實(shí)現(xiàn),因?yàn)橐?guī)則規(guī)定只有在點(diǎn)數(shù)恰好為隔的格數(shù),才能到達(dá)終點(diǎn),不然要往后退。根據(jù)規(guī)則,我
49、們添加了一組if-else語(yǔ)句。在飛機(jī)到達(dá)終點(diǎn)或者是陣營(yíng)勝利都會(huì)彈出窗口顯示到達(dá)或勝利,如圖4.5,4.6所示。本處游戲設(shè)計(jì)的不足是當(dāng)游戲完成后,只給出了一個(gè)對(duì)話(huà)框就宣告游戲結(jié)束,如果用戶(hù)想再次游戲則需要重新打開(kāi)游戲來(lái)玩,太過(guò)麻煩。所以改進(jìn)的地方就是結(jié)束時(shí)有個(gè)新的界面來(lái)顯示游戲已經(jīng)結(jié)束,同時(shí)彈出對(duì)話(huà)框給用戶(hù)來(lái)選擇是否重新玩一局。4.6 性能測(cè)試本階段主要測(cè)試惡意點(diǎn)擊飛機(jī)與棋盤(pán)來(lái)測(cè)試程序的健壯性。首先棋盤(pán)初始化后,在未點(diǎn)開(kāi)始前、任意點(diǎn)擊棋盤(pán)的其它位置(最小化、關(guān)閉除外)都不會(huì)引起程序的崩潰或者飛機(jī)的移位等事件。其次,在游戲過(guò)程中,當(dāng)擲骰后,只能對(duì)特定的飛機(jī)進(jìn)行操作,任意點(diǎn)擊其它飛機(jī)均無(wú)任何響應(yīng)。
50、對(duì)最初的代碼進(jìn)行測(cè)試性能過(guò)程中,遇到了諸多問(wèn)題,如在A1,A2在向終點(diǎn)進(jìn)發(fā)的最后一個(gè)左轉(zhuǎn),其id跳躍時(shí),根據(jù)原代碼會(huì)出現(xiàn)原來(lái)的位置飛機(jī)不會(huì)消除;B1,B2在大本營(yíng)1左轉(zhuǎn)時(shí)的跳躍及向終點(diǎn)左轉(zhuǎn)時(shí)的跳躍都會(huì)產(chǎn)生上述問(wèn)題。這些bug都會(huì)對(duì)程序的健壯性有影響,一個(gè)健壯的工程程序會(huì)包含各種情況,也許在我們本次課程設(shè)計(jì)中還會(huì)存在其它我們組沒(méi)有發(fā)現(xiàn)的問(wèn)題。本次程序設(shè)計(jì)主要是在內(nèi)部函數(shù)中進(jìn)行設(shè)計(jì)的,沒(méi)有產(chǎn)生一些函數(shù)來(lái)輔助完成一些基本操作,而通過(guò)內(nèi)部函數(shù)雖然設(shè)計(jì)起來(lái)較為簡(jiǎn)單,但是在設(shè)計(jì)大型程序時(shí)將會(huì)顯得程序較為臃腫,給程序閱讀者造成障礙;同時(shí),在程序設(shè)計(jì)過(guò)程中沒(méi)有對(duì)程序設(shè)計(jì)者進(jìn)行簽名,當(dāng)一段程序發(fā)生bug時(shí),可能造成責(zé)任不清晰的問(wèn)題,程序設(shè)計(jì)過(guò)程中也沒(méi)有對(duì)程序進(jìn)行注釋?zhuān)喿x者有時(shí)會(huì)產(chǎn)生難以理解的問(wèn)題。- 23 -總結(jié)本次課程設(shè)計(jì)按照老師的要求,在開(kāi)始之前就根據(jù)題目的功能和難度進(jìn)行了規(guī)劃。本次課題需要實(shí)現(xiàn)哪些功能,每個(gè)功能都是如何通過(guò)函數(shù)實(shí)現(xiàn),以及各個(gè)功能的工作人員分配和時(shí)間分配等問(wèn)題在開(kāi)始工作之前就一并計(jì)劃完成,這樣使得我們的工作更加明確,也更加清晰的了解到在規(guī)范的安排下,同學(xué)之間的分工合作可以使工作效率提高很多。由于本人水平有限,所以使用的語(yǔ)句也比較簡(jiǎn)單,算法中的時(shí)間效率以及空間效率的問(wèn)題考慮不全,這些地方都是需要進(jìn)行優(yōu)化的
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二年級(jí)綜合實(shí)踐活動(dòng)教學(xué)資源計(jì)劃
- 玻璃纖維復(fù)合隔板行業(yè)深度研究分析報(bào)告(2024-2030版)
- 六年級(jí)語(yǔ)文名師輔導(dǎo)復(fù)習(xí)計(jì)劃
- 2025年幼兒園年級(jí)組創(chuàng)新教學(xué)計(jì)劃
- 中國(guó)風(fēng)電零部件市場(chǎng)供需現(xiàn)狀及投資戰(zhàn)略研究報(bào)告
- 2022-2027年中國(guó)五金市場(chǎng)競(jìng)爭(zhēng)態(tài)勢(shì)及行業(yè)投資潛力預(yù)測(cè)報(bào)告
- 2025年英語(yǔ)學(xué)情分析與改進(jìn)計(jì)劃
- 小學(xué)語(yǔ)文口語(yǔ)表達(dá)訓(xùn)練復(fù)習(xí)計(jì)劃
- 維修房屋可行性研究報(bào)告
- 市政道路工程可行性研究報(bào)告(完整版)
- 教師進(jìn)企業(yè)實(shí)踐三方協(xié)議書(shū)
- 施工現(xiàn)場(chǎng)隱患圖片識(shí)別合集
- 山西省建設(shè)工程計(jì)價(jià)依據(jù)
- 煤礦在用安全設(shè)備檢測(cè)檢驗(yàn)制度
- GB/T 24632.2-2009產(chǎn)品幾何技術(shù)規(guī)范(GPS)圓度第2部分:規(guī)范操作集
- GB/T 20428-2006巖石平板
- GB/T 11363-1989釬焊接頭強(qiáng)度試驗(yàn)方法
- 內(nèi)調(diào)焦準(zhǔn)距式望遠(yuǎn)系統(tǒng)光學(xué)設(shè)計(jì)2022年
- 核磁共振的發(fā)展史課件
- 切紙機(jī)安全操作規(guī)程標(biāo)準(zhǔn)范本
- 國(guó)家開(kāi)放大學(xué)2022秋法理學(xué)形考1-4參考答案
評(píng)論
0/150
提交評(píng)論