按关键词阅读: 报告 课程设计 基于 程序设计 贪吃 MFC
9.3.3对OnKeyDown()具体添加代码void CMFCexp8_4View:OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) switch(nChar)/Snake0代表的是蛇头 , 对蛇头的方向Snake0.direct 。
16、进行判断case VK_UP:if(Snake0.direct!=2)Snake0.direct=1;
break;
/蛇头不等于“下”的时候 , 才能做出“上”的操作动作 , 否则则忽略用户“向上”的操作按键效果case VK_DOWN:if(Snake0.direct!=1)Snake0.direct=2;
break;
/蛇头不等于“上”的时候 , 才能做出“下”的操作动作 , 否则则忽略用户“向下”的操作按键效果case VK_LEFT:if(Snake0.direct!=4)Snake0.direct=3;
break;
/蛇头不等于“右”的时候 , 才能做出“左”的操作动作 , 否则则忽略用户“向左”的操作按键效果c 。
17、ase VK_RIGHT:if(Snake0.direct!=3)Snake0.direct=4;
break;
/蛇头不等于“左”的时候 , 才能做出“右”的操作动作 , 否则则忽略用户“向右”的操作按键效果CView:OnKeyDown(nChar, nRepCnt, nFlags);
9.3.4对OnRButtonDown()具体添加代码void CMFCexp8_4View:OnRButtonDown(UINT nFlags, CPoint point) /这个函数功能是:用鼠标右键屏幕 , 就会马上显示当前位置的坐标信息CString str;
str.Format(%d,%d,point.x,poi 。
18、nt.y);
AfxMessageBox(str);
CView:OnRButtonDown(nFlags, point);
代码说明:这个函数并不是本游戏中必要添加的函数 , 只是为了在后面游戏页面的设计的时候可以用鼠标右键屏幕了解大概的屏幕坐标信息 , 才特地做的 。
这个设备坐标系以用户区窗口左上角为(0,0)原点 , X坐标向右为正 , Y坐标向下为正 。
9.3.5对oninit()具体添加代码/画一个矩形,用当前的画笔画矩形轮廓,用当前画刷进行填充CDC *pDC=GetDC();
CBrush DrawBrush=(RGB(100,100,100);
CBrush *Drawbrush=pDC-SelectO 。
19、bject(&DrawBrush);
for(int i=0;
iRectangle(Snakei.x*20,Snakei.y*20,(Snakei.x+1)*20,(Snakei.y+1)*20);
pDC-SelectObject(DrawBrush);
代码说明:利用Windows给我们提供的CDC类来进行画图 , 我们首先用一个指向CDC类的指针去接受与该窗口相关联的DC句柄 , 然后用定义画刷一个DrawBrush对象 , 并且用RGB(100,100,100)来给画刷初始化颜色 。
并且用SelectObject(&DrawBrush);
函数把对象画刷选入到设备描述表中 , 用for循环依次把贪吃蛇的3个节点 。
20、画出来 。
void CMFCexp8_4View:oninit()9.3.6对控件添加具体代码void CMFCexp8_4View:OnStart() CMFCexp8_4View:OnDrawNew();
SetTimer(1,3000,NULL);
/定时器 。
3000是3000毫秒 , 即3秒AfxMessageBox(3秒后开始游戏!);
void CMFCexp8_4View:OnPause() KillTimer(1);
AfxMessageBox(暂停游戏.);
void CMFCexp8_4View:OnContinue() SetTimer(1,10,NULL);
void CMFCexp8_ 。
21、4View:OnExit() AfxMessageBox(退出游戏.);
exit(0);
代码说明:由于之前我们设定了WM_TIMER消息 , 我们能运用计时器功能 。
用WM_TIMER来设置定时器 , SetTimer(m_hWnd,1,1000,NULL)是一个1秒触发一次的定时器 , 在MFC程序中SetTimer被封装在CWnd类中 , 调用就不用指定窗口句柄了 , 所以我们这里可以只去后3个参数写成SetTimer(1,10,NULL);
其中1000为1秒 。
9.3.7对OnDraw()添加具体代码 , 实现出现背景图片 在“Resource.h”中添加“#define IDB_MY_BITMAP 130” 在“ 。
22、Res”中添加“qiche.bmp” 在“MFCexp84.cpp”中添加“IDB_MY_BITMAP BITMAP DISCARDABLE resqiche.bmp”添加以下代码:void CMFCexp8_4View:OnDraw(CDC* pDC)/以res文件夹中的bmp格式图片为背景CMFCexp8_4Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CDC MemDC;
MemDC.CreateCompatibleDC(NULL);
MemDC.SelectObject(pDoc-m_Bitmap);
pDC-BitBlt(0,0,pDoc-m_n 。
23、Width,pDoc-m_nHeight,&MemDC,0,0,SRCCOPY);
9.3.8对OnDrawNew()添加具体代码 在添加代码之前 , 在“MFCexp8_4View.h”中添加:class CMFCexp8_4View : public CViewprotected: / create from serialization onlyCMFCexp8_4View();
DECLARE_DYNCREATE(CMFCexp8_4View)/ Attributespublic:CMFCexp8_4Doc* GetDocument();
CClientDC* myDC;
CClientDC* my 。
24、2DC;
/ Operations 对“CClientDC* myDC”和“CClientDC* my2DC”建立类向导int CMFCexp8_4View:OnCreate(LPCREATESTRUCT lpCreateStruct) if (CView:OnCreate(lpCreateStruct) = -1)return -1;
/ TODO: Add your specialized creation code heremyDC =new CClientDC(this);
my2DC =new CClientDC(this);
return 0;
void CMFCexp8_4View:On 。
25、DrawNew()RECT Rect;
Rect.left=Rect.top=20;
Rect.right=Rect.bottom =500;
CBrush Brush(RGB(255,255,255);
myDC-FillRect (&Rect,&Brush);
/画出第二层背景 , 一个白色正方形my2DC-SetBkColor(RGB(0,0,0);
my2DC-SetTextColor(RGB(255,255,255);
my2DC-TextOut(750,400,单击“游戏” , 选择“开始游戏”);
稿源:(未知)
【傻大方】网址:/a/2021/0707/0022751787.html
标题:基于|基于mfc的贪吃蛇程序设计(课程设计报告)( 三 )