




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C/C+课程设计项目报告项目名称 俄罗斯方块完成时间 108小时总代码量项目组长 小组成员 自评成绩 A成员分工需求分析俄罗斯方块是大家比较熟悉的一款单机小游戏,用户界面由一定数量的小方格组成的方块构成。当游戏开始时,计算机将随机抽取方块的放到方格上。此游戏还允许玩家旋转方块,左右移动,加速向下。功能:1. 随机产生经典俄罗斯方块图形2. 设置难度级别,不同级别速度不同3. 方向键实现下落图形的左移、右移、加速下落、变形等基本操作编写时间处理程序4. 正确判断游戏结束5. 对游戏成绩进行记分6. 设置成绩排行榜概要设计(1)CMyDlgDlg /主界面1void CMyDlgDlg:OnAbout() /关于2void CMyDlgDlg:OnBnClickedExit() /离开按钮命令响应3void CMyDlgDlg:OnBnClickedHero() /英雄榜命令响应4void CMyDlgDlg:OnBnClickedHp() /说明按钮命令响应5void CMyDlgDlg:OnBnClickedPause() /暂停按钮命令响应6void CMyDlgDlg:OnClose() /关闭7void CMyDlgDlg:OnGameDe() /说明8void CMyDlgDlg:OnLoad() /载入游戏9void CMyDlgDlg:OnPaint() /背景画面添加10void CMyDlgDlg:OnPause()/暂停11void CMyDlgDlg:OnRange()/等级12void CMyDlgDlg:OnRestart() /重新开始13void CMyDlgDlg:OnSave()/保存14void CMyDlgDlg:OnSound() /声音15BOOL CMyDlgDlg:PreTranslateMessage(MSG* pMsg) 16void CMyDlgDlg:OnTimer(UINT nIDEvent) 17void CMyDlgDlg:OnSysCommand(UINT nID, LPARAM lParam)18void CMyDlgDlg:DoDataExchange(CDataExchange* pDX)(2) CManager /管理整个游戏区 1void InitGame(int Level,int result,int lineNumber);/初始化游戏 2void DrawScene();/画整个界面 3Void OnTimer(UINT &nIDEvent); 4void OnKeyDown(UINT &nChar); 5void OnKeyUp(UINT &nChar); 6bool WhetherLoss();/判断游戏是否结束 7void SetFree();/重新开始 8void HeroWrite();(3) CBlock /用于画游戏障碍物void AddBlock(); void DrawBlock(CDC *pDC); bool BlockPanel3080; COLORREF BlockColor;(4) CMill /用于产生和画出下一个将要出现的方块void MadeDiamond();/用于随机生成游戏方块 void DrawPrepare(CDC* pDC); int PreDiamondType;/7种方块类型 int PreDiamondState;/每种方块的4个状态 RECT MillRect;/用显示下一个方块的矩形 CSize GridSize;/格子的大小 COLORREF MillColor;/显示下一个方块的矩形颜色 COLORREF PreColor;/下一个方块的颜色 int probabilityCake;/田子 int probabilityHook;/钩子 int probabilitySeven;/七的形状 int probabilityHeave;/凸起 int probabilityBar;/一条 int probabilityTwo;/2字 int probabilitySpade;/铲子(5) CPanel /画游戏区和的得分区void DrawPanel(CDC* pDC); void PanelPosToPos(POINT &PanelPos); void PosToPanelPos(POINT &Pos); public: RECT PanelRect;/游戏区的矩形COLORREF PanelColor;/游戏区的背景颜色 int nHGridNum;/列数 int nVGridNum;/行数 CSize GridSize;/格子的大小 CRect TextRect;/输出得分的矩形(6) Diamond /用于下落的方块bool MoveDiamondLeft();/方块向左移 bool MoveDiamondRight();/方块向右移 bool MoveDiamondDown();/方块加速下 bool RollDiamond();/方块变状态 void DrawDiamond(CDC* pDC); void DimDiamond();/初始化方块的类型,bool DiamondStruct7444; /第一维:方块类型,第二维:状态,第三、四维:方 块结构; POINT DiamondPos;/游戏中方块的坐标 COLORREF DiamondColor;/游戏中方块的颜色 int DiamondType;/方块的7种类型 int DiamondState;/每种类型的4种状态 bool FullLine();/满了一行 bool overlap();/判断左边,右边或者到到底下了详细设计建立一个一对话框为基础的MFC.项目,添加菜单和菜单项给对话框添加时钟,即添加消息响应函数OnTimer()。 重写函数PreTranslateMessage(MSG* pMsg); 为各个菜单项添加响应的事件响应处理函数为对话框添加四个控件按钮,并分别添加事件处理函数声明一个bool 型的变量,用于判断是否暂停游戏接着添加几个对话框,分别是游戏设置对话框,游戏结束对话框和英雄榜对话框第一个对话框,游戏设计对话框,Caption为“游戏设置”,ID为“IDD_NAME”,为对话框添加相应的控件 编辑控件的ID为IDC_NAME,三个单选钮的ID分别为:简单(IDC_LEVEL),一般(IDC_LEVEL2),困难(IDC_LEVEL3)给编辑控件添加CString类型的变量,变量名为:m_Name, 给第一个单选钮添加变量int level; 添加消息响应函数OnPaint(),给确定按钮添加事件处理函数void CMyDlgDlg:OnPaint() if (IsIconic()CPaintDC dc(this); / device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);/ Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;/ Draw the icondc.DrawIcon(x, y, m_hIcon);elseCPaintDC dc(this); CRect rect; GetClientRect(&rect); CDC dcMem; dcMem.CreateCompatibleDC(&dc); CBitmap bmpBackground; bmpBackground.LoadBitmap(IDB_BJ1); /IDB_BITMAP是你自己的图对应的ID BITMAP bitmap; 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();游戏结束,添加消息响应函数void CGameV:OnPaint() CPaintDC dc(this); / device context for paintingCRect rect; GetClientRect(&rect); CDC dcMem; dcMem.CreateCompatibleDC(&dc); CBitmap bmpBackground; bmpBackground.LoadBitmap(IDB_GV); BITMAP bitmap; bmpBackground.GetBitmap(&bitmap); CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground); dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);第三个对话框,排行榜,ID为“IDD_HERO”,添加控件IDC_NAME_EDIT IDC_SCORE_EDIT IDC_LEVEL_EDIT,并把三个编辑控件的Read Only 属性选为“true”。为对话框添加类,类名为CHeroDlg,基类为CDialog。为三个编辑控件分别添加变量,变量名为m_name,m_level,m_score;手动添加一个void SetWriteFlg(BOOL bflg);函数,用于写如英雄榜,添加重写型OnInitDialog()和DoModal(),添加消息响应函数OnPaint(),再手动添加一个BOOL m_bWriteflg,用于判断是否是写入英雄榜,在构造函数中初始化为m_bWriteflg = FALSE;接下来添加类第一个类名为“CManager”,用于管理整个游戏区,第二个类是“CBlock”,用于画游戏障碍物,也就是已经落下的俄罗斯方块;第三个类是“CMill”,是“工场”是用于产生和画出下一个将要下落的方块,第四个类是“CPanel”,用于在游戏区域画游戏区和得分区,第五个类是“Diamond”,用于下落的方块。CManager:void DrawScene();/画整个界面void OnTimer(UINT &nIDEvent);void OnKeyDown(UINT &nChar);void OnKeyUp(UINT?&nChar);?bool WhetherLoss();/判断游戏是否结束void SetFree();/重新开始void HeroWrite();private:void PassLevel();/升级private: bool KeyLeft,KeyDown,KeyRight,KeySpace;/几个游戏操作public: CRect ClientRect;/客户区矩形UINTTimer1;/为什么要设两个时钟?一个用来控制左右移动的速度,一个用来控制下落的速度UINT Timer2;/是下落的速度UINT FallTimer;int Level;/等级int Result;/得分int m_nHighScore;/当前游戏最高分int m_nHighLevel;/当前游戏最高级?int LineNumber;/消灭的总行数int SeriesLine;/每一次消灭的行数bool Sound;/音效CString Name;/玩家名字;/定义的方块的7种类型const int DIAMONDCAKE=0;const int DIAMONDHOOK =1;const int DIAMONDSEVEN =2;const int DIAMONDHEAVE =3;const int DIAMONDBAR =4;const int DIAMONDTWO=5;const int DIAMONDSPADE =6;CDiamond:class CDiamond public: CDiamond(); virtual CDiamond(); bool MoveDiamondLeft();/方块向左移 bool MoveDiamondRight();/方块向右移 bool MoveDiamondDown();/方块加速下 bool RollDiamond();/方块变状态 void DrawDiamond(CDC* pDC); private: void DimDiamond();/初始化方块的类型,状态 public: bool DiamondStruct7444; /第一维:方块类型,第二维:状态,第三、四维:方 块结构; POINT DiamondPos;/游戏中方块的坐标 COLORREF DiamondColor;/游戏中方块的颜色 int DiamondType;/方块的7种类型 int DiamondState;/每种类型的4种状态 bool FullLine();/满了一行 private: bool overlap();/判断左边,右边或者到到底下了 ;CBlock:class CBlock public: CBlock(); virtual CBlock(); void AddBlock(); void DrawBlock(CDC *pDC); public: bool BlockPanel3080; COLORREF BlockColor; ;CMill:class CMill public: CMill(); virtual CMill(); void MadeDiamond();/用于随机生成游戏方块 void DrawPrepare(CDC* pDC); public: int PreDiamondType;/7种方块类型 int PreDiamondState;/每种方块的4个状态 RECT MillRect;/用显示下一个方块的矩形 CSize GridSize;/格子的大小 COLORREF
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Idalopirdine-hydrochloride-Standard-生命科学试剂-MCE
- 2025年山东法官培训学院公开招聘人员考前自测高频考点模拟试题附答案详解(黄金题型)
- Guanine-13C2-15N-生命科学试剂-MCE
- GPC3-targeting-peptide-1-TFA-生命科学试剂-MCE
- 2025安徽六安市霍邱县夏店镇选聘见习村干部20人考前自测高频考点模拟试题及完整答案详解一套
- 2025江西省纺织集团进出口有限公司招聘工作人员考前自测高频考点模拟试题及完整答案详解1套
- 2025北京首都医科大学附属北京世纪坛医院招聘13人(第三批)考前自测高频考点模拟试题及答案详解参考
- 感恩节祝福发言模板
- 旅游业复苏背景下的市场机会研究
- 2025江苏淮安市淮阴区人民政府法律顾问选聘12人考前自测高频考点模拟试题及答案详解(必刷)
- 高中期中考试家长会PPT课件 (共51张PPT)
- JJG 573-2003膜盒压力表
- GB/T 39634-2020宾馆节水管理规范
- GB/T 13234-2018用能单位节能量计算方法
- 营业线施工单位“四员一长”施工安全知识培训考试题库
- 紧急采购申请单
- 全球卫生治理课件
- 工程地质学:第7章 岩体结构及其稳定性
- 实验室生物安全程序文件
- 非洲猪瘟防控讲座课件
- 重症肌无力新斯的明实验的临床评估百度课件
评论
0/150
提交评论