版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
資料資料OC++課程設(shè)計(jì)項(xiàng)目報(bào)告項(xiàng)目名稱俄羅斯方塊完成時(shí)間108 小時(shí)總代碼量項(xiàng)目組長(zhǎng)小組成員自評(píng)成績(jī)A成員分工需求分析俄羅斯方塊是大家比較熟悉的一款單機(jī)小游戲,用戶界面由一定數(shù)量的小方格組成的方塊構(gòu)成。當(dāng)游戲開(kāi)始時(shí),計(jì)算機(jī)將隨機(jī)抽取方塊的放到方格上。此游戲還允許玩家旋轉(zhuǎn)方塊,左右移動(dòng),加速問(wèn)卜。功能:1.隨機(jī)產(chǎn)生經(jīng)典俄羅斯方塊圖形2.設(shè)置難度級(jí)別,不同級(jí)別速度不同3.方向鍵實(shí)現(xiàn)下落圖形的左移、右移、加速下落、變形等基本操作編寫時(shí)間處理程序4.正確判斷游戲結(jié)束5.對(duì)游戲成績(jī)進(jìn)行記分6.設(shè)置成績(jī)排行榜離開(kāi)按鈕命令響應(yīng)英雄榜命令響應(yīng)說(shuō)明按鈕命令響應(yīng)離開(kāi)按鈕命令響應(yīng)英雄榜命令響應(yīng)說(shuō)明按鈕命令響應(yīng)暫停按鈕命令響應(yīng)概要設(shè)計(jì)(1)CMyDlgDlg//主界面IvoidCMyDlgDlg::OnAbout()//關(guān)于2voidCMyDlgDlg::OnBnClickedExit()〃3voidCMyDlgDlg::OnBnClickedHero()〃4voidCMyDlgDlg::OnBnClickedHp()//5voidCMyDlgDlg::OnBnClickedPause()//6voidCMyDlgDlg::OnClose()//7voidCMyDlgDlg::OnGameDe()〃8voidCMyDlgDlg::OnLoad()〃9voidCMyDlgDlg::OnPaint()〃10voidCMyDlgDlg::OnPause()〃11voidCMyDlgDlg::OnRange()〃12voidCMyDlgDlg::OnRestart()〃13voidCMyDlgDlg::OnSave()〃14voidCMyDlgDlg::OnSound()〃關(guān)閉說(shuō)明載入游戲背景畫面添加暫停等級(jí)重新開(kāi)始保存尸日15BOOLCMyDlgDlg::PreTranslateMessage(MSG*pMsg)16voidCMyDlgDlg::OnTimer(UINTnIDEvent)17voidCMyDlgDlg::OnSysCommand(UINTnID,LPARAMlParam)18voidCMyDlgDlg::DoDataExchange(CDataExchange*pDX)(2)CManager// 管理整個(gè)游戲區(qū)初始化游戲1voidInitGame(intLevel,intresult,intlineNumber);〃初始化游戲2voidDrawScene();// 畫整個(gè)界面3VoidOnTimer(UINT&nIDEvent);4voidOnKeyDown(UINT&nChar);5voidOnKeyUp(UINT&nChar);6boolWhetherLoss();// 判斷游戲是否結(jié)束7voidSetFree();//重新開(kāi)始8voidHeroWrite();(3)CBlock// 用于畫游戲障礙物voidAddBlock();voidDrawBlock(CDC*pDC);boolBlockPanel[30][80];COLORREFBlockColor;(4)CMill// 用于產(chǎn)生和畫出下一個(gè)將要出現(xiàn)的方塊voidMadeDiamond();// 用于隨機(jī)生成游戲方塊每種方塊的4每種方塊的4個(gè)狀態(tài)ntPreDiamondType;〃7 種方塊類型intPreDiamondState;//RECTMillRect;// 用顯示下一個(gè)方塊的矩形CSizeGridSize;//格子的大小顯示下一個(gè)方塊的矩形顏色下一個(gè)方塊的顏色田子顯示下一個(gè)方塊的矩形顏色下一個(gè)方塊的顏色田子鉤子七的形狀凸起一條(5)CPanel// 畫游戲區(qū)和的得分區(qū)voidDrawPanel(CDC*pDC);voidPanelPosToPos(POINT&PanelPos);voidPosToPanelPos(POINT&Pos);public:RECTPanelRect;//游戲區(qū)的矩形COLORREFPanelColor;//游戲區(qū)的背景顏色intnHGridNum;// 列數(shù)intnVGridNum;// 行數(shù)CSizeGridSize;// 格子的大小
CRectTextRect;// 輸出得分的矩形(6)Diamond// 用于下落的方塊boolMoveDiamondLeft();// 方塊向左移boolMoveDiamondRight();// 方塊向右移boolMoveDiamondDown();//方塊加速下boolRollDiamond();//方塊變狀態(tài)voidDrawDiamond(CDC*pDC);voidDimDiamond();〃 初始化方塊的類型,boolDiamondStruct[7][4][4][4];〃 第一維:方塊類型,第二維:狀態(tài),第三、四維:方塊結(jié)構(gòu);POINTDiamondPos;//游戲中方塊的坐標(biāo)COLORREFDiamondColor;//游戲中方塊的顏色boolFullLine();//滿了一行intDiamondType;//
intDiamondState;//方塊的intDiamondType;//
intDiamondState;//方塊的7種類型每種類型的4種狀態(tài)booloverlap。,判斷左邊,右邊或者到到底下了詳細(xì)設(shè)計(jì)建立一個(gè)一對(duì)話框?yàn)榛A(chǔ)的 MFC項(xiàng)目,添加菜單和菜單項(xiàng)給對(duì)話框添加時(shí)鐘,即添加消息響應(yīng)函數(shù) OnTimer()。重寫函數(shù)PreTranslateMessage(MSG*pMsg);為各個(gè)菜單項(xiàng)添加響應(yīng)的事件響應(yīng)處理函數(shù)為對(duì)話框添加四個(gè)控件按鈕,并分別添加事件處理函數(shù)聲明一個(gè)bool型的變量,用于判斷是否暫停游戲接著添加幾個(gè)對(duì)話框,分別是游戲設(shè)置對(duì)話框,游戲結(jié)束對(duì)話框和英雄榜對(duì)話框第一個(gè)對(duì)話框,游戲設(shè)計(jì)對(duì)話框, Caption為“游戲設(shè)置”,ID為"IDD_NAME,為對(duì)話框添加相應(yīng)的控件編輯控件的 ID為IDC_NAME三個(gè)單選鈕的 ID分別為:簡(jiǎn)單(IDC_LEVED,一般(IDC_LEVEL2,困難(IDC_LEVEL3給編輯控件添加CString類型的變量,變量名為: m_Name給第一個(gè)單選鈕添加變量 intlevel; 添加消息響應(yīng)函數(shù)OnPaint(),給確定按鈕添加事件處理函數(shù)voidCMyDlgDlg::OnPaint(){if(IsIconic()){CPaintDCdc(this);//devicecontextforpaintingSendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0);//CentericoninclientrectangleintcxIcon=GetSystemMetrics(SM_CXICON);intcyIcon=GetSystemMetrics(SM_CYICON);CRectrect;GetClientRect(&rect);intx=(rect.Width()-cxIcon+1)/2;inty=(rect.Height()-cyIcon+1)/2;//Drawtheicondc.DrawIcon(x,y,m_hIcon);}else{CPaintDCdc(this);CRectrect;GetClientRect(&rect);CDCdcMem;dcMem.CreateCompatibleDC(&dc);CBitmapbmpBackground;bmpBackground.LoadBitmap(IDB_BJ1);//IDB_BITMAP是你自己的圖對(duì)應(yīng)的IDBITMAPbitmap;bmpBackground.GetBitmap(&bitmap);CBitmap*pbmpOld=dcMem.SelectObject(&bmpBackground);dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);//CDialog::OnPaint();}}游戲結(jié)束,添加消息響應(yīng)函數(shù)voidCGameV::OnPaint(){CPaintDCdc(this);//devicecontextforpaintingCRectrect;GetClientRect(&rect);CDCdcMem;dcMem.CreateCompatibleDC(&dc);CBitmapbmpBackground;bmpBackground.LoadBitmap(IDB_GV);BITMAPbitmap;bmpBackground.GetBitmap(&bitmap);CBitmap*pbmpOld=dcMem.SelectObject(&bmpBackground);dc.StretchBlt(0,0,rect.WidthO,rect.HeightO,&dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);}第三個(gè)對(duì)話框,排行榜, ID為"IDDJHERO,添力口控件IDC_NAME_EDITIDC_SCORE_EDIIDC_LEVEL_EDIT并把三個(gè)編輯控件的 ReadOnly屬性選為“true”。為對(duì)話框添加類,類名為CHeroDlg,基類為CDialog。為三個(gè)編輯控件分別添加變量,變量名為m_name,m_level,m_score;手動(dòng)添加一個(gè)voidSetWriteFlg(BOOLbflg);函數(shù),用于寫如英雄榜,添加重寫型OnInitDialog()和DoModal(),添加消息響應(yīng)函數(shù) OnPaint(),再手動(dòng)添加一個(gè)BOOLm_bWriteflg,用于判斷是否是寫入英雄榜, 在構(gòu)造函數(shù)中初始化為m_bWriteflg=FALSE;接下來(lái)添加類第一個(gè)類名為“CManager",用于管理整個(gè)游戲區(qū),第二個(gè)類是“CBlock”,用于畫游戲障礙物,也就是已經(jīng)落下的俄羅斯方塊;第三個(gè)類是“CMill”,是“工場(chǎng)”是用于產(chǎn)生和畫出下一個(gè)將要下落的方塊,第四個(gè)類是“ CPanel”,用于在游戲區(qū)域畫游戲區(qū)和得分區(qū),第五個(gè)類是"Diamond”,用于下落的方塊。CManager:voidDrawScene();〃 畫整個(gè)界面voidOnTimer(UINT&nIDEvent);voidOnKeyDown(UINT&nChar);voidOnKeyUp(UINT?&nChar);?boolWhetherLoss();〃 判斷游戲是否結(jié)束voidSetFree();// 重新開(kāi)始voidHeroWrite();private:voidPassLevel();//升級(jí)private:boolKeyLeft,KeyDown,KeyRight,KeySpace;〃 幾個(gè)游戲操作public:CRectClientRect;//客戶區(qū)矩形UINTTimer1;〃為什么要設(shè)兩個(gè)時(shí)鐘?一個(gè)用來(lái)控制左右移動(dòng)的速度,一個(gè)用來(lái)控制下落的速度UINTTimer2;〃是下落的速度UINTFallTimer;intLevel;//等級(jí)intResult;//得分intmnHighScore;〃 當(dāng)前游戲最高分
intm_nHighLevel;//當(dāng)前游戲最高級(jí)intLineNumber;//消滅的總行數(shù)intSeriesLine;//每一次消滅的行數(shù)boolSound;//音效CStringName;//玩家名字};//定義的方塊的7種類型constintDIAMONDCAKE=0;constintDIAMONDHOOK=1;constintDIAMONDSEVEN=2;constintDIAMONDHEAVE=3;constintDIAMONDBAR=4;constintDIAMONDTWO=5;constintDIAMONDSPADE=6;CDiamond:classCDiamond{public:CDiamond();virtual~CDiamond();boolMoveDiamondLeft();//方塊向左移boolMoveDiamondRight();//方塊向右移boolMoveDiamondDown();// 方塊加速下boolRollDiamond();// 方塊變狀態(tài)voidDrawDiamond(CDC*pDC);private:voidDimDiamond();//初始化方塊的類型,狀態(tài)public:boolDiamondStruct[7][4][4][4];// 第一維:方塊類型,第二維:狀態(tài),第三、四維:方塊結(jié)構(gòu);POINTDiamondPos;//游戲中方塊的坐標(biāo)COLORREFDiamondColor;//游戲中方塊的顏色方塊的7種類型每種類型的4方塊的7種類型每種類型的4種狀態(tài)滿了一行判斷左邊,右邊或者到到底下了CBlock:classCBlock{public:CBlock();virtual~CBlock();voidAddBlock();voidDrawBlock(CDC*pDC);public:boolBlockPanel[30][80];COLORREFBlockColor;};CMill:classCMill{public:CMill();virtual~CMill();voidMadeDiamond();// 用于隨機(jī)生成游戲方塊voidDrawPrepare(CDC*pDC);public:intPreDiamondType;//7 種方塊類型intPreDiamondState;//每種方塊的4個(gè)狀態(tài)RECTMillRect;//用顯示下一個(gè)方塊的矩形CSizeGridSize;//格子的大小COLORREFMillColor;//顯示下一個(gè)方塊的矩形顏色COLORREFPreColor;//下一個(gè)方塊的顏色intprobabilityCake;// 田子intprobabilityHook;/
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 純勞務(wù)合同模板
- 2024年度教育咨詢員服務(wù)協(xié)議標(biāo)準(zhǔn)版一
- 代管理物業(yè)合同模板
- 微企用人合同模板
- 集體產(chǎn)權(quán)房出售合同模板
- 高空擦洗玻璃合同模板
- 2024專業(yè)載貨車輛租賃協(xié)議格式版
- 花卉短期租賃合同模板
- 2024年度房地產(chǎn)一次性付款購(gòu)房協(xié)議模板一
- 國(guó)家正規(guī)工裝合同模板
- 精神科出走防范預(yù)案及應(yīng)急處理流程
- 職業(yè)健康檢查操作規(guī)程
- 高中英語(yǔ)外研版新教材unit3說(shuō)課like-father-like-son
- 天翼云認(rèn)證開(kāi)發(fā)工程師必備考試復(fù)習(xí)題庫(kù)(高分版)-上(單選題)
- Unit+3+教案 牛津上海版八年級(jí)英語(yǔ)上冊(cè)
- 發(fā)電廠 防火分區(qū)、總平面布置、安全疏散、構(gòu)造、消火栓
- 2023年上海市高等學(xué)校信息技術(shù)水平考試試卷二三級(jí)Python程序設(shè)計(jì)及應(yīng)用(B場(chǎng))免費(fèi)
- 警察公共關(guān)系-江蘇警官學(xué)院中國(guó)大學(xué)mooc課后章節(jié)答案期末考試題庫(kù)2023年
- 4《同學(xué)相伴》(說(shuō)課稿)部編版道德與法治三年級(jí)下冊(cè)
- 中國(guó)建設(shè)銀行建信金融科技有限責(zé)任公司2023年校園招聘200名人員筆試歷年難、易錯(cuò)考點(diǎn)試題含答案附詳解
- 上海噴霧設(shè)備購(gòu)銷合同范本
評(píng)論
0/150
提交評(píng)論