




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、打飛機游戲1. 課程設(shè)計目的本次我做的是一個簡單的打飛機的游戲,包括計算打飛機、時間和打飛機的規(guī)則制 定。綜合運用所學知識, 熟練掌握 VC+ 程序設(shè)計的編碼與以及各類作用個的具體實現(xiàn), 獨自利用 VC+ 程序編寫打飛機游戲,以檢測自己一個學期對 C+學習的情況,以及了 解自己在 VC+ 學習中的不足,鞏固和提高自己對 C+的理解和掌握。掌握 C+編程和 調(diào)試的基本技能,進一步提高自己的動手能力,和運用 C+解決實際問題的能力。隨著信息時代的到來,人們生活節(jié)奏的加快,利用電腦放松心情似乎已很是常見, 電腦游戲便應(yīng)運而生了?;诖?,對于游戲的開發(fā)者似乎也是一種挑戰(zhàn),它需要娛樂的 同時,又有一定的
2、放松大腦疲勞的作用。當然,如果能在此同時又能使我們的大腦得到 進一步的鍛煉與開發(fā)更是一種需求。鑒于此,開發(fā)者需要開發(fā)出滿足以上需求的游戲供 大家工作之余的放松以及智力的開發(fā)。當然,隨著電腦的廣泛使用,游戲的類型和種類 均有增加。打飛機游戲由于其能很好的滿足上述需求,使得其受到廣泛的歡迎。而本游 戲的開發(fā)是基于單機模式的。本游戲針對人們的需求而設(shè)計,使得上述功能成為了可能。其安裝及操作步驟均很 簡單,適合各類人群的使用。完成打飛機游戲的設(shè)計本系統(tǒng)是采用 Visual C+ 高級語 言進行程序編制。2. 設(shè)計方案論證2.1 需求分析由于本游戲系統(tǒng)的對象單一,且每個數(shù)據(jù)內(nèi)容具有較強的關(guān)聯(lián)性,涉及的計
3、算過程 不是很復(fù)雜。當前各種游戲軟件層出不窮。打飛機游戲的基本需要點擊鼠標左鍵于未知 區(qū)域,如果未知區(qū)域有飛機 ,并且游戲停止 ,顯示所有的飛機。如果飛機 ,則顯示周圍飛機數(shù) 如果周圍沒飛機 ,則再查看周圍區(qū)域是否有飛機直到有飛機為止并顯示 ,這屬于是一個遞 歸過程。點擊鼠標右鍵于未知區(qū)域 ,則將其置為有飛機而不管是否真的有飛機。 飛機區(qū)右 下角顯示總飛機數(shù)減去被標明有飛機區(qū)域的數(shù)目。系統(tǒng)主要功能包括:游戲的生成打飛 機游戲的初始化,根據(jù)數(shù)量不同的飛機,每種難度下的飛機數(shù)量相同。游戲難度的選擇 難度設(shè)置,從簡單到困難,難度越大,生成游戲時飛機數(shù)量越多。因此,在選擇數(shù)據(jù)庫 時,應(yīng)考慮數(shù)據(jù)庫應(yīng)用的
4、特點及適用范圍, Visual C+ 是一種可視化的、面對對象和調(diào) 用事件驅(qū)動方式的結(jié)構(gòu)化高級程序設(shè)計, 可用于開發(fā) Windows 環(huán)境下的種類應(yīng)用程序。 它簡單易學、效率高,且功能強大。在 Visual C+環(huán)境下,利用事件驅(qū)動的編程機制、 新穎易用的可視化設(shè)計工具,可以高效、快速地開發(fā)出 Windows 環(huán)境下功能強大、圖 形界面豐富的應(yīng)用軟件系統(tǒng)。2.2 系統(tǒng)總體設(shè)計系統(tǒng)主要功能包括:游戲的生成打飛機游戲的初始化,根據(jù)數(shù)量不同的飛機,每種 難度下的飛機數(shù)量相同。游戲難度的選擇難度設(shè)置,從簡單到困難,難度越大,生成游 戲時飛機數(shù)量越多。我們所設(shè)計的這個軟件系統(tǒng)規(guī)模不大,就系統(tǒng)分析設(shè)計階段
5、而言不 須太多人力物力。為明確各自不同的任務(wù)側(cè)重點便于分配管理,我們將軟件開發(fā)周期分 為問題定義與可行性分析、需求分析、概要設(shè)計、詳細設(shè)計四個方面,利于我們相互協(xié) 作。目前 ,計算機的應(yīng)用領(lǐng)域越來越廣 ,為我們的這套軟件提供了硬件環(huán)境。本系統(tǒng)可以 運行在 Windows95/98/2000/XP 等操作系統(tǒng)上,可說市場上流行的操作系統(tǒng)都可以支持 功能模塊圖,如圖 1 所示。圖1 系統(tǒng)功能模塊2.3 設(shè)計步驟首先是具體的設(shè)計步驟如下:在 VC+6.0 中,用自己的名字 gaoqingzhi 建立一個 MFC AppWizard(exe)工程,在應(yīng)用程序類型中選擇“基本對話框” ,其余的都采用默認
6、 選項,即可完成對話框的創(chuàng)建。在對話框中添加 4 個圖像, 6 個按鈕(分別是開始、布 局、保存、選項、載入、退出, )接著根據(jù)屬性對以上所添加的控件進行屬性修改,主 要進行重命名,以便編輯源代碼的時候區(qū)分,另外對圖像的處理除了對其進行重命名外 還要對其添加位圖。 之后通過打開 C:WINDOWSsystem32 打開 cards.dll 加載 Bitmap 圖 片,并選中對其進行重命名。 接著對以上添加的控件建立類向?qū)А?主要有 Add Function、 Add Variable和 Edit Code這三項的添加。根據(jù)流程圖在類的原文件中逐一添加實現(xiàn)各個 模塊其功能所需要的各種函數(shù),并添加
7、相應(yīng)的源代碼,同時在頭文件中添加對各種函數(shù) 及變量的聲明。對編譯好的程序進行保存,開始進行調(diào)試,邊調(diào)試邊根據(jù)報錯對原程序 進行修改,直到程序不再進行報錯為止,如圖 2 所示。圖 2 設(shè)計模塊2.4 主窗口建立 主界面控制菜單的設(shè)計接下來回到資源編程界面,編寫菜單資源,用來控制掃雷的 過程,難度選定,以及自定義難度窗口等。設(shè)置菜單包含:開始,布局,載入,保存。 幫助菜單獲取該軟件的版本信息,如圖 3 所示。圖3 開始功能模塊具體實現(xiàn)代碼為:BOOL m_bLoadWelcomeString;int m_nGameStatus; / 游戲是否開始BOOL m_bLoadFrame;CString
8、m_strComment5;CString m_strComment4;CString m_strComment3;CString m_strComment2;CString m_strComment1;CRect m_rectCommentFrame; /fixed frameCPoint m_ptComment; /scroll(the rectangle to show Comment)CRect m_rectFighterDown;CRect m_rectBomb;CRect m_rectFighterHit;int m_nCommentTimer;int m_nWelcomeTime
9、r;int m_nFighterHit;int m nFighterDown;int m_nBomb;public:void SetURL(CString strURL);CString GetURL() const;void SetColours(COLORREF crLinkColour, COLORREF crVisitedColour,COLORREF crHoverColour = -1);COLORREF GetLinkColour() const;COLORREF GetVisitedColour() const;COLORREF GetHoverColour() const;
10、void SetVisited(BOOL bVisited = TRUE);BOOL GetVisited() const;void SetLinkCursor(HCURSOR hCursor);HCURSOR GetLinkCursor() const;void SetUnderline(BOOL bUnderline = TRUE);BOOL GetUnderline() const;void SetAutoSize(BOOL bAutoSize = TRUE);BOOL GetAutoSize() const;HINSTANCE GotoURL(LPCTSTR url, int show
11、cmd); void DrawComment(CDC * pDC);CPoint m_ptNew;void DrawPiece(CDC * pDC, int x, int y, int nResult); void DrawShootingResult(CDC * pDC);int m_nShootingResult1010;int m_nSky1010;CRect m_rectSky;2.5 打飛機游戲布局建立此模塊對游戲的使用客戶有著自行的需求,除了能有系統(tǒng)自帶的飛機,游戲的使用這還可以自行設(shè)計飛機數(shù)量、位置、以及飛機形態(tài)大小一系列的基本信息,并且還能使游戲充滿動態(tài)形式多變等如圖 4 所示
12、。圖4 游戲的布局具體實現(xiàn)代碼為:public:BOOL StartScrolling();void EndScrolling();void SetCredits(LPCTSTR credits, char delimiter = '|');void SetCredits(UINT nID, char delimiter = '|');void SetSpeed(UINT index, int speed = 0);void SetColor(UINT index, COLORREF col);void SetTextHeight(UINT index, int
13、 height);void SetEscape(UINT index, char escape);void SetGradient(UINT value = GRADIENT_RIGHT_DARK);BOOL SetBkImage(UINT nIDResource);BOOL SetBkImage(LPCTSTR lpszResourceName);void SetTransparent(BOOL bTransparent = TRUE);/ Overrides/ ClassWizard generated virtual function overrides /AFX_VIRTUAL(CCr
14、editStatic) /AFX_VIRTUAL/ Implementationpublic:virtual CCreditStatic();/ Generated message map functionsprotected:void MoveCredit(CDC *pDC, CRect& r, CRect& r2, BOOL bCheck);void AddBackGround(CDC* pDC, CRect& m_ScrollRect, CRect& m_ClientRect);void DrawCredit(CDC* pDC, CRect& m_
15、ScrollRect);void FillGradient(CDC *pDC, CRect *m_ScrollRect, CRect *m_FillRect, COLORREF color);void DrawBitmap(CDC* pDC, CDC* pDC2, CRect *rBitmap);此游戲還具有保存功能,可以在用戶使用一半時進行保存,以備下次能繼續(xù)使用,此保存功能如圖 5 所示圖 5 游戲保存圖具體實現(xiàn)代碼為:#ifndef BCMenu_H #define BCMenu_H #include <afxtempl.h>/ BCMenuData class. Fill
16、this class structure to define a single menu item: class BCMenuDatapublic:BCMenuData () menuIconNormal=-1;xoffset=-1;bitmap=NULL;pContext=NULL; nFlags=0;nID=0;syncflag=0;m_szMenuText=NULL;global_offset=-1;void SetAnsiString(LPCSTR szAnsiString);void SetWideString(const wchar_t *szWideString);const w
17、char_t *GetWideString(void) return m_szMenuText;BCMenuData ();CString GetString(void);/returns the menu text in ANSI or UNICODEint xoffset,global_offset;int menuIconNormal;UINT nFlags,nID,syncflag;CImageList *bitmap;void *pContext; / used to attach user data ;protected:COLORREFm_Colors5;intm_TextHei
18、ghts4;TCHARm_Escapes4;intm_DisplaySpeed3,m_CurrentSpeed;/ CRectm_ScrollRect; / rect of Static Text frameCStringList m_ArrCredit;CStringm_szWork;intm_nCounter;/ work intsPOSITIONm_ArrIndex;BOOLm_bFirstTime;BOOLm_bDrawText;intm_nClip,m_ScrollAmount;intm_nCurrentFontHeight;CBitmapm_bmpWork; / bitmap ho
19、lderCBitmapm_BmpMain; / bitmap holderCSizem size;/ drawing helpersCPointm_pt;BOOLm_bProcessingBitmap;CPalette m_pal;CBitmapm_bitmap;int m_cxBitmap, m_cyBitmap;BOOLm_bFirstTurn;UINT m_Gradient;BOOLm_bTransparent;3. 設(shè)計結(jié)果與分析3.1 游戲的調(diào)試及保存back在代碼添加過程中,由于涉及到很多的函數(shù)和變量,有時候可能會出現(xiàn)某幾個變量 忘定義的情況,這些變量有可能是在頭文件中忘記定義或者
20、在某個函數(shù)體中忘記定義, 在添加完各個函數(shù)的代碼完畢后,以為頭文件會自動對相應(yīng)得變量進行定義,但頭文件 沒有對所有的變量都定義,于是出現(xiàn)了如上圖所示的錯誤。打開頭文件,雙擊 gaoqingzhiDlg.h,在 class CDgaoqingzhiDlg : public Cdialog 類定義函數(shù)中添加對 m 參數(shù)的定義就可運行成功,如圖 6 所示。圖 6 程序調(diào)試圖程序調(diào)試成功后進行運行界面,運行成功后可以選擇開始選項、布局選項、保存選項、載入選項以及退出,程序調(diào)試成功后運行,如圖 7 所示圖 7 程序運行圖開始新的游戲,在程序運行成功后如果用戶想重新開始游戲, 也可以重新選擇開始,新的游戲
21、開始如圖 8 所示圖 8 游戲重新開始圖4. 設(shè)計心得體會該項目的實現(xiàn),在經(jīng)過代碼的不斷完善和功能的加強后,該系統(tǒng)在封裝前能夠在WINDOWS 平臺上正常的運行, 能夠?qū)崿F(xiàn)相應(yīng)的作用。 該項目的運行狀況: 該游戲能夠 在用戶合法登陸后進行相應(yīng)的功能,運行狀況良好。在這次課程設(shè)計過程中,我的編程有了很大的提高,雖然有時候自己沒有思路,但 是凡事不能被困難嚇倒,只要有開始,去嘗試。就會有意想不到的收獲??梢越梃b別人 的代碼,看別人設(shè)計的思路,理解的同時自己小試一下也可以編出來,所以其次,在運 行、調(diào)試過程中也學到了很多,以前編程最怕的就是報錯,尤其是錯誤多了的時候,感 覺毫無頭緒直接頭大,但是編程不可能不出錯,報錯,只要逐一對付,然后細心研
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 保稅器材維修合同范本
- 包銷合同范本
- 衛(wèi)浴訂購合同范例
- 區(qū)府租房合同范本
- 個人學習計劃書26篇
- 中藥炮制工中級??荚囶}及答案
- 維修電工練習題庫+答案
- 工業(yè)鍋爐司爐考試模擬題含答案
- 醫(yī)藥采購合同范例
- 一本男孩子必讀的書教學反思
- 工程項目移交方案
- 高級英語-第一冊-課后習題答案
- 《帶電作業(yè)用絕緣工具試驗導(dǎo)則》
- 2024年時事政治熱點題庫200道附完整答案【必刷】
- 2024年山東信息職業(yè)技術(shù)學院單招職業(yè)技能測試題庫及答案解析
- 藥材的采收與產(chǎn)地加工
- 江蘇農(nóng)牧科技職業(yè)學院單招《職業(yè)技能測試》參考試題庫(含答案)
- 小學勞動教育二年級下冊教學計劃
- 三年級上冊脫式計算100題及答案
- 2024春開學第一課-開學第一課 禁毒我先行 課件
- 《聽歌識曲》課件
評論
0/150
提交評論