教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 实用模板 >

MFC写的贪吃蛇代码(4)

来源:网络收集 时间:2026-08-28
导读: Step 2 对OnKeyDown()具体添加代码 void CSNAKEView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) { // TODO: Add your message handler code here and/or call default switch(nChar) { case VK_UP:if(Sn

Step 2 对OnKeyDown()具体添加代码

void CSNAKEView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) {

// TODO: Add your message handler code here and/or call default switch(nChar) {

case VK_UP:if(Snake[0].direct!=2)Snake[0].direct=1;break; case VK_DOWN:if(Snake[0].direct!=1)Snake[0].direct=2;break; case VK_LEFT:if(Snake[0].direct!=4)Snake[0].direct=3;break; case VK_RIGHT:if(Snake[0].direct!=3)Snake[0].direct=4;break; } CView::OnKeyDown(nChar, nRepCnt, nFlags); CView::OnKeyDown(nChar, nRepCnt, nFlags); }

OnKeyDown函数的第一个参数 UINT nChar 是接收用户键入的信息,然后我们用switch进行选择判断 代码说明:

Snake[0]代表的是蛇头,我们对蛇头的方向Snake[0].direct进行判断。

case VK_UP:if(Snake[0].direct!=2)Snake[0].direct=1;break;

意思就是当Snake[0].direct的方向此时并不等于“下”的时候,才能做出“上”的操作动作,否则则忽略用户“向上”的操作按键效果

Step 3 对OnRButtonDown()具体添加代码

void CSNAKEView::OnRButtonDown(UINT nFlags, CPoint point) {

// TODO: Add your message handler code here and/or call default // TODO: Add your message handler code here and/or call default CString str;

str.Format(\AfxMessageBox(str);

CView::OnRButtonDown(nFlags, point); CView::OnRButtonDown(nFlags, point); CView::OnRButtonDown(nFlags, point); }

这个函数功能是:用鼠标右键屏幕,就会马上显示当前位置的坐标信息。

其实这个函数并不是本游戏中必要添加的函数,只是为了在后面游戏页面的设计的时候可以用鼠标右键屏幕了解大概的屏幕坐标信息,才特地做的

这里补充一个知识点

WIN32坐标系有3种 1 世界坐标系 2 页面坐标系 3 设备坐标系

世界坐标系与页面坐标系称谓“逻辑空间”,实际上就等同于我们现实生活中的数学坐标系一样。

设备坐标系则不然,电脑屏幕就是一个用设备坐标系的,特征为以用户区窗口左上角为(0 , 0)原点,X坐标向右为正,Y坐标向下为正。

Step 4

void CSNAKEView::oninit() {

CDC *pDC=GetDC();

CBrush DrawBrush=(RGB(100,100,100));

CBrush *Drawbrush=pDC->SelectObject(&DrawBrush); for(int i=0;i<=snake[0].l-1;i++)

pDC->Rectangle(snake[i].x*20,snake[i].y*20,(snake[i].x+1)*20,(snake[i].y+1)*20); pDC->SelectObject(DrawBrush); }

代码说明:

利用Windows给我们提供的CDC类来进行画图,我们首先用一个指向CDC类的指针去接受与该窗口相关联的DC句柄,然后用定义画刷一个DrawBrush对象,并且用RGB(100,100,100)来给画刷初始化颜色。并且用SelectObject(&DrawBrush);函数把对象画刷选入到设备描述表中,用for循环依次把贪吃蛇的3个节点画出来。

void far rectangle(int left, int top, int right, int bottom);

这个函数的的功能根据

函数功能:该函数画一个矩形,用当前的画笔画矩形轮廓,用当前画刷进行填充.

Step 5 控件添加代码

void CSNAKEView::OnStart() {

// TODO: Add your command handler code here SetTimer(1,3000,NULL);

AfxMessageBox(\秒后开始游戏!\}

void CSNAKEView::OnPause() {

// TODO: Add your command handler code here KillTimer(1);

AfxMessageBox(\暂停游戏...\}

void CSNAKEView::OnExit() {

// TODO: Add your command handler code here AfxMessageBox(\退出游戏...\

exit 0; }

void CSNAKEView::OnContinue() {

// TODO: Add your command handler code here SetTimer(1,10,NULL); }

代码说明:

由于之前我们设定了WM_TIMER消息,我们能运用计时器功能

用WM_TIMER来设置定时器

先请看SetTimer这个API函数的原型

…… 此处隐藏:568字,全部文档内容请下载后查看。喜欢就下载吧 ……
MFC写的贪吃蛇代码(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/518913.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)