C++课程设计:贪吃蛇11.doc

上传人:ni****g 文档编号:564867707 上传时间:2023-04-04 格式:DOC 页数:46 大小:499KB
返回 下载 相关 举报
C++课程设计:贪吃蛇11.doc_第1页
第1页 / 共46页
C++课程设计:贪吃蛇11.doc_第2页
第2页 / 共46页
C++课程设计:贪吃蛇11.doc_第3页
第3页 / 共46页
C++课程设计:贪吃蛇11.doc_第4页
第4页 / 共46页
C++课程设计:贪吃蛇11.doc_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《C++课程设计:贪吃蛇11.doc》由会员分享,可在线阅读,更多相关《C++课程设计:贪吃蛇11.doc(46页珍藏版)》请在金锄头文库上搜索。

1、课 程 设 计 报 告 课程名称:面向对象程序设计C+ 设计题目: 贪 吃 蛇 专 业:计算机科学与技术 姓 名: 学 号: 指导教师: 李 晓 虹 2015 年 12 月 20 日一、系统需求分析 贪吃蛇游戏作为一款经典小游戏,版本多样,娱乐性也很高,适合在闲暇时放松心神。并且可在多个平台上实现,程序简单易懂,非常适合初学者学习制作。1、语言的使用现在的贪吃蛇游戏一般是用C语言实现的,用C语言编写贪吃蛇游戏比较简单易懂,当然也可以用其他语言来实现,比如Java、C+、C#等,这里我们用C+来实现。2、用C+的优势C+在一定程度上可以和C语言很好的结合,甚至大多数C语言程序是在C+的集成开发环

2、境中完成的。C+相对众多的面向对象的语言,具有相当高的性能。C+引入了面向对象的概念,使得开发人机交互类型的应用程序更为简单、快捷。很多优秀的程序框架包括Boost、Qt、MFC、OWL、WTL就是使用的C+。二、系统总体设计1游戏界面设计运行程序。点击“游戏-开始游戏”,出现围墙界面,一条蛇在密闭的围墙内,在围墙内随机出现一食物,游戏开始。游戏开始后,通过四个方向键控制蛇的运动方向,吃掉随机出现的豆子,若不小心碰到墙壁或者与自身相交,则该轮游戏结束。游戏结束后,会弹出游戏得分。点击“游戏-退出游戏”,退出游戏。点击“游戏设置-等级设置”,设置游戏相应等级。点击“游戏帮助-帮助”,查看游戏的玩

3、法。点击“游戏帮助-关于”,查看游戏的版本信息。单击“英雄榜”,查看高手信息。2游戏运行流程图如下: 三、详细设计1新建工程打开VC+6.0,选择文件新建命令,新建一个工程,再选择MFC APPwizardexe,工程名取为:Snake。新建Menu菜单,其ID设置为IDR_MAIN_MENU。2控件的设计各控件设置属性如下:3添加主菜单对象成功设置ID之后 我们通过类向导添加相应函数,设置完毕后再在头文件中增加一个主菜单对象,代码如下:4具体实现游戏4.1 菜单响应函数的声明,代码如下:/ SnakeDlg.h : header file#if !defined(AFX_SNAKEDLG_H

4、_275E8D1B_43B7_4FE8_B6AF_4897C77E9FED_INCLUDED_)#define AFX_SNAKEDLG_H_275E8D1B_43B7_4FE8_B6AF_4897C77E9FED_INCLUDED_#if _MSC_VER 1000#pragma once#endif / _MSC_VER 1000/ CSnakeDlg dialog#include SnakeGame.hclass CSnakeDlg : public CDialog/ Constructionpublic:void Help();void HeroList();void PlayBack

5、Music(BOOL bflg);void InitMenu();CSnakeDlg(CWnd* pParent = NULL);/ standard constructor/ Dialog Data/AFX_DATA(CSnakeDlg)enum IDD = IDD_SNAKE_DIALOG ;/ NOTE: the ClassWizard will add data members here/AFX_DATA/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CSnakeDlg)protected:virtual v

6、oid DoDataExchange(CDataExchange* pDX);/ DDX/DDV support/AFX_VIRTUAL/ Implementationprotected:HICON m_hIcon;/主图标CMenu m_main_menu;/主菜单对象BOOL m_bStart;/游戏开始标志CSnakeGame m_snake;/主游戏对象/ Generated message map functions/AFX_MSG(CSnakeDlg)virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LP

7、ARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();afx_msg void OnUpdatePlayMusic(CCmdUI* pCmdUI);afx_msg void OnUpdateHigh(CCmdUI* pCmdUI);afx_msg void OnUpdateLow(CCmdUI* pCmdUI);afx_msg void OnUpdateNor(CCmdUI* pCmdUI);afx_msg void OnUpdateHelp(CCmdUI* pCmdUI);afx_msg void OnUp

8、dateHeroList(CCmdUI* pCmdUI);afx_msg void OnUpdateExitGame(CCmdUI* pCmdUI);afx_msg void OnUpdateAbout(CCmdUI* pCmdUI);afx_msg void OnUpdateStartGame(CCmdUI* pCmdUI);afx_msg void OnTimer(UINT nIDEvent);afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);/AFX_MSGDECLARE_MESSAGE_MAP();/AFX_IN

9、SERT_LOCATION/ Microsoft Visual C+ will insert additional declarations immediately before the previous line.#endif / !defined(AFX_SNAKEDLG_H_275E8D1B_43B7_4FE8_B6AF_4897C77E9FED_INCLUDED_)4.2 菜单响应函数实现,代码如下:/ SnakeDlg.cpp : implementation file/#include stdafx.h#include Snake.h#include SnakeDlg.h#incl

10、ude HelpDlg.h#include HeroDlg.h#include #ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialogpublic:CAboutDlg();/ Dialog Data/AFX_DATA(CAboutDlg)enum IDD = IDD_ABOUTBOX ;/AFX_DATA/ ClassWizard gene

11、rated virtual function overrides/AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support/AFX_VIRTUAL/ Implementationprotected:/AFX_MSG(CAboutDlg)/AFX_MSGDECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg() : CDialog(CAboutDlg:IDD)/AFX_DATA_INIT(CAboutDlg)/AFX_DATA_I

12、NITvoid CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CAboutDlg)/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CAboutDlg, CDialog)/AFX_MSG_MAP(CAboutDlg)/ No message handlers/AFX_MSG_MAPEND_MESSAGE_MAP()/ CSnakeDlg dialogCSnakeDlg:CSnakeDlg(CWnd* pParent /*=NULL*/): CDialog(C

13、SnakeDlg:IDD, pParent)/AFX_DATA_INIT(CSnakeDlg)/ NOTE: the ClassWizard will add member initialization here/AFX_DATA_INIT/ Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME);void CSnakeDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CSnakeDlg)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 商业合同/协议

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号