VC++贪吃蛇游戏设计+流程图(12)
时间:2017-02-26 15:40 来源:毕业论文 作者:毕业论文 点击:次
protected: afx_msg void OnPaint(); afx_msg void OnTimer(UINT nIDEvent); afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags); DECLARE_MESSAGE_MAP() }; #endif B:通过前面类的声明,已经知道主游戏类中包含了几个基本函数,如构造,析构,绘图和接受键盘等。这些都是主游戏窗口类基础用于构成对话框,处理图片的显示和人机交互的过程。其代码如下: #include "stdafx.h" #include "SnakeGame.h" #include "Resource.h" #include "Rule.h" #include "HeroDlg.h" // Download by http://down.liehuo.net CSnakeGame::CSnakeGame() { m_nScore = 0; m_psFood.x = 30; m_psFood.y = 30; m_nHighScore = 0; } CSnakeGame::~CSnakeGame() { } // 消息映射表 BEGIN_MESSAGE_MAP( CSnakeGame, CWnd ) //{{AFX_MSG_MAP(CSnakeGame) ON_WM_PAINT() ON_WM_TIMER() ON_WM_KEYUP() //}}AFX_MSG_MAP END_MESSAGE_MAP() ////////////////////////////////////////////////////////////////////////// // 初始化果实 ////////////////////////////////////////////////////////////////////////// void CSnakeGame::InitFoods() { int m_ysX,m_ysY; while(1) { m_ysX=rand()%28; //随机生成横坐标使其与贪吃蛇的身体可以接上 m_ysY=rand()%28; //随机生成纵坐标使其与贪吃蛇的身体可以接上 for(int i=0;i<=m_body.GetUpperBound();i++) { CPoint ysPoint1=m_body.GetAt(i); //获取贪吃蛇的身体坐标 if(ysPoint1.x!=m_ysX||ysPoint1.y!=m_ysY)//如果身体的横坐标或纵坐标与果实的横纵坐标相同 { m_psFood = CPoint(m_ysX, m_ysY);//将随机出现的坐标记录为果实坐标 return; } } } } ////////////////////////////////////////////////////////////////////////// // 设置游戏等级 ////////////////////////////////////////////////////////////////////////// void CSnakeGame::SetGameLevel(int level) { m_nlevel = level; } ////////////////////////////////////////////////////////////////////////// // 开始游戏函数 ////////////////////////////////////////////////////////////////////////// BOOL CSnakeGame::GameStart() { int nSleep = LOW_LEVEL_SLEEP; char pszTmp[128] = {0}; switch(m_nlevel) { case GAME_LEVEL_HIGH: nSleep = HIGH_LEVEL_SLEEP; break; case GAME_LEVEL_NOR: nSleep = NOR_LEVEL_SLEEP; break; } GetPrivateProfileString("HERO", "score", "0", (责任编辑:qin) |