手把手教学MFC吃豆子教程
手把手教学MFC吃豆子教程
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/struggle.gif)
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/struggle.gif)
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/struggle.gif)
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/struggle.gif)
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/struggle.gif)
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/struggle.gif)
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/struggle.gif)
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/struggle.gif)
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/struggle.gif)
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/struggle.gif)
1.我们在如图位置添加脸和食物的全局变量
{
public:
int x,y;//坐标
int direct;//方向
}Face;
class Food
{
public:
int x;
int y;
int flag;//flag(标志)后用于防止食物坐标重复访问造成游戏结束的问题
}Food[2];
int flag =2;//这个flag用于计算食物的个数,当flag等于0那么游戏将结束
![](/assets/blank.gif)
{
CView::OnInitialUpdate();
// TODO: Add your specialized code here and/or call the base class
Face.x=10;
Face.y=10;
Face.direct=2;
//本次设计两个食物,初始化坐标.
Food[0].x=40;
Food[0].y=40;
Food[0].flag=0;
Food[1].x=100;
Food[1].y=100;
Food[1].flag=0;
}
![](/assets/blank.gif)
void CEatbeanView::OnFaceinitialize()//脸外观设计
{
CDC *pDC=GetDC();//建立一个CDC指针pDC指向窗口句柄
CBrush DrawBrush=(RGB(255,48,48)); //创建一个画刷需要用RBG进行初始化,RBG的色彩可以百度
CBrush *Drawbrush=pDC->SelectObject(&DrawBrush);
pDC->Ellipse(Face.x*20,Face.y*20,(Face.x+1)*20,(Face.y+1)*20);
//食物循环绘图
for(int i=0;i<2;i++)
pDC->Ellipse(Food[i].x,Food[i].y,Food[i].x+20,Food[i].y+20);
pDC->SelectObject(DrawBrush);
![](/assets/blank.gif)
void CEatbeanView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) //nChar用来从键盘接收消息
{
// TODO: Add your message handler code here and/or call default
switch(nChar)//用一个stitch接收按键并转化为数字方便运算
{
case VK_UP:Face.direct=1;break;// 上1
case VK_DOWN:Face.direct=2;break;// 下2
case VK_LEFT:Face.direct=3;break;// 左3
case VK_RIGHT:Face.direct=4;break;// 右4
}
CView::OnKeyDown(nChar, nRepCnt, nFlags);//自己生成
}
![](/assets/blank.gif)
{
// TODO: Add your message handler code here and/or call default
CString str;
str.Format("%d,%d",point.x,point.y);
AfxMessageBox(str);
CView::OnRButtonDown(nFlags, point);
}
![](/assets/blank.gif)
{
// TODO: Add your command handler code here
SetTimer(1,1000,NULL);
AfxMessageBox("游戏即将开始!");
}
void CEatbeanView::Onexit()
{
// TODO: Add your command handler code here
AfxMessageBox("退出游戏");
AfxGetMainWnd()->SendMessage(WM_CLOSE);//关闭窗口
}
void CEatbeanView::Onpause()
{
// TODO: Add your command handler code here
KillTimer(1);
AfxMessageBox("游戏暂停中!");
}
void CEatbeanView::OnGameContinue()
{
// TODO: Add your command handler code here
SetTimer(1,1000,NULL);
}
![](/assets/blank.gif)
{
CEatbeanDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CBrush backBrush(RGB(255,222,173));
CBrush* pOldBrush = pDC->SelectObject(&backBrush);//
CRect rect;
pDC->GetClipBox(&rect);
pDC->PatBlt(rect.left, rect.top, rect.Width(), rect.Height(),PATCOPY);
pDC->SelectObject(pOldBrush);//
pDC->Rectangle(18,18,400,400);//501
OnFaceinitialize();
}
![](/assets/blank.gif)
{
// TODO: Add your message handler code here and/or call default
//撞界判断,食物吃完
CDC *pDC=GetDC();
if(Face.x*20<=20||Face.y*20<=20||Face.x*20>=380||Face.y*20>=380||flag==0)
{
KillTimer(1);
AfxMessageBox("游戏结束");
}
//判断食物的剩余
//先擦除前一个位置
pDC->SelectStockObject(WHITE_PEN);
pDC->Rectangle(Face.x*20,Face.y*20,(Face.x+1)*20,(Face.y+1)*20);
//后画出新的脸
//行走方向判断
if(Face.direct==1)Face.y--;
if(Face.direct==2)Face.y++;
if(Face.direct==3)Face.x--;
if(Face.direct==4)Face.x++;
pDC->SelectStockObject(BLACK_PEN);
CBrush DrawBrush=(RGB(255,48,48));
CBrush *Drawbrush=pDC->SelectObject(&DrawBrush);
/
if(Face.x*20==Food[0].x&&Face.y*20==Food[0].y&&Food[0].flag==0)
{
flag--;
Food[0].flag=1;
}
else if(Face.x*20==Food[1].x&&Face.y*20==Food[1].y&&Food[1].flag==0)
{
flag--;
Food[1].flag=1;
}
if(Face.direct==1)//上
{
if((Face.x+Face.y)%2==0)
pDC->Ellipse(Face.x*20,Face.y*20,(Face.x+1)*20,(Face.y+1)*20);//闭嘴重绘
else
pDC->Pie(Face.x*20,Face.y*20,(Face.x+1)*20,(Face.y+1)*20,Face.x*20+5,Face.y*20,Face.x*20+15,Face.y*20);
}
if(Face.direct==2)//下//
{
if((Face.x+Face.y)%2==0)
pDC->Ellipse(Face.x*20,Face.y*20,(Face.x+1)*20,(Face.y+1)*20);//闭嘴重绘
else
pDC->Pie(Face.x*20,Face.y*20,(Face.x+1)*20,(Face.y+1)*20,/**/Face.x*20+15,Face.y*20+20,Face.x*20+5,Face.y*20+20);
}
if(Face.direct==3)//左/
{
if((Face.x+Face.y)%2==0) //我们用脸的横纵坐标之和对2取余进行不同的绘制从而实现嘴巴的开合.
{
pDC->Ellipse(Face.x*20,Face.y*20,(Face.x+1)*20,(Face.y+1)*20);//闭嘴重绘
}
else
//pDC->SelectStockObject(BLACK_BRUSH);
pDC->Pie(Face.x*20,Face.y*20,(Face.x+1)*20,(Face.y+1)*20,Face.x*20,Face.y*20+15,Face.x*20,Face.y*20+5);
}
if(Face.direct==4)//右
{
if((Face.x+Face.y)%2==0)
pDC->Ellipse(Face.x*20,Face.y*20,(Face.x+1)*20,(Face.y+1)*20);//闭嘴重绘
else
pDC->Pie(Face.x*20,Face.y*20,(Face.x+1)*20,(Face.y+1)*20,Face.x*20+20,Face.y*20+5,Face.x*20+20,Face.y*20+15);
}
pDC->SelectObject(DrawBrush);
CView::OnTimer(nIDEvent);
}
pDC->SelectStockObject(WHITE_PEN);
pDC->Rectangle(Face.x*20,Face.y*20,(Face.x+1)*20,(Face.y+1)*20);
手把手教学MFC吃豆子教程相关推荐
- 【组队学习】【35期】吃瓜教程——西瓜书+南瓜书
吃瓜教程--西瓜书+南瓜书 航路开辟者:谢文睿.秦州 领航员:凌亮 航海士:谢文睿.秦州 基本信息 开源内容:https://github.com/datawhalechina/pumpkin-boo ...
- 【组队学习】【33期】吃瓜教程——西瓜书+南瓜书
吃瓜教程--西瓜书+南瓜书 航路开辟者:谢文睿.秦州 领航员:潘磊 航海士:谢文睿.秦州 基本信息 开源内容:https://github.com/datawhalechina/pumpkin-boo ...
- 【组队学习】【32期】吃瓜教程——西瓜书+南瓜书
吃瓜教程--西瓜书+南瓜书 航路开辟者:谢文睿.秦州 领航员:陈伟峰 航海士:谢文睿.秦州 基本信息 开源内容:https://github.com/datawhalechina/pumpkin-bo ...
- 【组队学习】【31期】 吃瓜教程——西瓜书+南瓜书
吃瓜教程--西瓜书+南瓜书 航路开辟者:谢文睿.秦州 领航员:张海腾 航海士:谢文睿.秦州 基本信息 开源内容:https://github.com/datawhalechina/pumpkin-bo ...
- 【组队学习】【30期】吃瓜教程——西瓜书+南瓜书
吃瓜教程--西瓜书+南瓜书 航路开辟者:谢文睿.秦州 领航员:邱振波 航海士:谢文睿.秦州 基本信息 开源内容:https://github.com/datawhalechina/pumpkin-bo ...
- 【组队学习】【29期】4. 吃瓜教程——西瓜书+南瓜书
4. 吃瓜教程--西瓜书+南瓜书 航路开辟者:谢文睿.秦州 领航员:刘琳 航海士:谢文睿.秦州 基本信息 开源内容:https://github.com/datawhalechina/pumpkin- ...
- 吃豆豆游戏的C语言程序码,C++实现基于控制台界面的吃豆子游戏
本文实例讲述了C++实现基于控制台界面的吃豆子游戏.分享给大家供大家参考.具体分析如下: 程序运行界面如下所示: ESC键可退出游戏. main.cpp源文件如下: #include "li ...
- C++小项目-吃豆子游戏
GMap.h #pragma once //保证头文件只被编译一次#include "stdafx.h"#define MAP_LEN 19 //逻辑地图大小 (逻辑地图由行.列各 ...
- 鸡啄米VS2010/MFC编程入门教程——学习1初次接触
2015年5月12日23:13:44 2013年~2014年,在九固开发伺服上位机的时候,刚开始的时候还想用VC6.0开发的,但是在WIN7下,各种不兼容,索性干脆直接换了VC2010. 原本想装VS ...
最新文章
- 使用tap和tun设备的方法
- conda init 关闭和重启shell_Linux的/etc/init.d详解
- IP通信基础 4月15日
- python-sdk-demo的打包
- Encapsulate Field
- 荣耀Magic4性能体验超苹果再次实锤!非官方游戏性能对比出炉
- 总裁徐雷“接管”京东 但拍板的仍是刘强东
- 关于 java.lang.OutOfMemoryError: Java heap space
- python 课后作业_python 学习笔记 五 课后作业
- 推荐轻量高效无依赖的开源JS插件和库
- Maven构建生命周期
- js删除对象的某个属性
- 计算机术语中bug指的是,你知道电脑漏洞为什么叫bug吗?
- java报错root cause_[Filtered request failed.] with root cause java.io.OptionalDataException
- From表单邮箱后缀提示
- python错误:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb5 in position 0: invalid start byte
- 【Python画樱花源码】
- 最简单的树上染色问题(没有之一)
- Homework 1: COVID-19 Cases Prediction (Regression)
- 华为AP4050DN-HD使用tftp、uboot瘦转胖
热门文章
- Cesium深入浅出之图层管理器
- Vue2积分商城PC端项目(一)
- Java监听器实现网站在线人数统计
- linux 环境安装 webdav 服务
- Linux安装Oracle报Checking operating system version must be redhat-3, SuSE-9, redhat-4, UnitedLin
- 一些大数据学习书籍pdf
- Tomcat之点击startup.bat出现闪退的解决办法
- AI in Finance<量化交易人工智能金融投资>(下)
- 怎么理解VGG-16结构图中的block
- php 查看文件锁定状态_Photoshop脚本 查看当前图层的锁定状态