MFC对话框贪吃蛇小游戏

2024-09-04 06:38

本文主要是介绍MFC对话框贪吃蛇小游戏,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

花了近一个月的时间,学习了一下VC++深入详解,做了个贪吃蛇小游戏,虽然有很多的瑕疵,但还是想分享一下战果。


说一下思路

①我们要绘制图形,我们可以用CClientDC(客户区设备上下文,与特定的窗口关联)声明一个dc对象作图。

当然这里我们要画蛇的身体和食物,设置一个食物类和蛇身体结构体

②我们如何让图形动起来?SetTimer创建一个计时器,KillTimer()用来销毁计时器。

③向哪个方向移动?   蛇头的方向

④食物产生在何处?什么时间产生?

产生在客户区,当一个食物被吃掉以后,产生下一个食物

食物产生在客户区,客户区的大小如何获取?(GetClientRect(&rect)可以获取)

当蛇身可以移动,食物可以产生,吃掉食物,蛇身可以增加,贪吃蛇基本框架就做好了!


实现步骤

①结构体的创建

struct Food
{int fx;int fy;BOOL IsFood;
};//食物结构体struct Snake
{int sx;int sy;char Direction;int sLength;
};//蛇身结构体struct ClientSize
{int width;int Height;
};// 客户区的大小
还需要声明3个全局结构体变量

ClientSize clientsize;
Food food;
Snake snake[200];

②初始化(描绘蛇的初始长度和位置)

添加成员函数InitSnake();并在OnInitDialog()中调用该函数

BOOL C贪吃蛇Dlg::OnInitDialog()
{  ... ...// TODO:  在此添加额外的初始化代码InitSnake();
}

void C贪吃蛇Dlg::InitSnake() /************************************初始化贪吃蛇****************/
{snake[0].sx = 10;snake[0].sy = 10;snake[1].sx = 9;snake[1].sy = 10;snake[2].sx = 8;snake[2].sy = 10;snake[0].sLength = 3;snake[0].Direction = 'R';//SetTimer(1, 200, NULL);
}

②初始化之后&#

这篇关于MFC对话框贪吃蛇小游戏的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1135277

相关文章

MFC中Spin Control控件使用,同时数据在Edit Control中显示

实现mfc spin control 上下滚动,只需捕捉spin control 的 UDN_DELTAPOD 消息,如下:  OnDeltaposSpin1(NMHDR *pNMHDR, LRESULT *pResult) {  LPNMUPDOWN pNMUpDown = reinterpret_cast(pNMHDR);  // TODO: 在此添加控件通知处理程序代码    if

控制台和MFC中内存泄露工具vld的使用

最近想检测下项目中内存泄露的情况,选中了vld这款。在查找使用方法的时候,大都是控制台下的示例,添加到main函数所在的源文件上。换成MFC就纠结了,不知道添加到哪里去。本文记录控制台和MFC中的使用vld过程。    vld资源:    1)、大家可以移步下边的网址下载:     http://vld.codeplex.com/releases/view/82311    2

MFC中App,Doc,MainFrame,View各指针的互相获取

纸上得来终觉浅,为了熟悉获取方法,我建了个SDI。 首先说明这四个类的执行顺序是App->Doc->Main->View 另外添加CDialog类获得各个指针的方法。 多文档的获取有点小区别,有时间也总结一下。 //  App void CSDIApp::OnApp() {      //  App      //  Doc     CDocument *pD

PNG透明背景按钮的实现(MFC)

问题描述: 当前要在对话框上添加一个以两个PNG图片作为背景的按钮,PNG图的背景是透明的,按钮也要做出相同的透明效果。并且鼠标不在按钮上时,按钮显示"bg1.png";鼠标移动到按钮上时,按钮显示"bg2.png" 开发环境为VS2010。 解决办法: 使用GDI+库装载PNG图片,并使用MFC Button Control和CMFCButton类结合,调用CMFCButton

vue2实践:第一个非正规的自定义组件-动态表单对话框

前言 vue一个很重要的概念就是组件,作为一个没有经历过前几代前端开发的我来说,不太能理解它所带来的“进步”,但是,将它与后端c++、java类比,我感觉,组件就像是这些语言中的类和对象的概念,通过封装好的组件(类),可以通过挂载的方式,非常方便的调用其提供的功能,而不必重新写一遍实现逻辑。 我们常用的element UI就是由饿了么所提供的组件库,但是在项目开发中,我们可能还需要额外地定义一

MFC 控件重绘(2) NM_CUSTOMDRAW, WM_DRAWITEM, 虚函数DrawItem

控件重绘有三种方法: 1 设定界面属性 2 利用Windows的消息机制,通过Windows消息映射(Message Mapping)和反映射(Message Reflecting),在合适的时机修改控件的状态和行为。此方式涉及NM_CUSTOMDRAW和WM_DRAWITEM 3 利用虚函数机制,重载虚函数。即DrawItem虚函数。 对于NM_CUSTOMDRAW,某些支持此消息的控件

贪吃蛇代码~~自编~~~

这个是贪吃蛇的代码,没设置加速系统~~自己可以根据自己的需求加功能 #include<stdio.h>#include<windows.h>#include<time.h>#include<stdlib.h>#include<iostream>#define MAX_SIZE 50using namespace std;void Loc(int x,int y);void W

几种MFC对话框的隐藏方法

修改CXXAPP中的InitInstance函数,将原来的模态对话框改为非模态对话框,及修改 [cpp]  view plain copy INT_PTR nResponse = dlg.DoModal();     为 [cpp]  view plain copy dlg.Create(CModalHideDlg::IDD);

030集——自动弹出对话框、选择文件并播放wav音频文件(winform窗体)——C#学习笔记

如图所示,效果如下: 步骤如下: 新建一个winform窗体,双击界面,进入代码区: 复制(下面代码中命名空间内的代码)到(你的命名空间下),运行。 using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Draw

MFC首先要知道的--程序执行顺序

MFC的程序执行顺序 很多刚学MFC的人都会被MFC给弄的晕头转向。以前传统的C语言中的main()不见了,window sdk api 中的WinMain()函数也不见了,到底用MFC编写的程序是如何开始运行的呢?到底MFC有没有遵从最基本的C++的标准呢?到底MFC的代码运行的顺序又是怎么样的呢?那么多个文件,那么多函数,到底哪一个先运行,哪一个后运行,哪一个调用哪一个,哪一个又被哪一个调用