MFC对话框贪吃蛇小游戏

通过学习VC++深入详解,制作了一个基于MFC的贪吃蛇小游戏。利用CClientDC绘图,创建计时器实现动态移动,通过判断蛇头方向和食物位置更新游戏状态。食物在蛇吃掉后随即产生。程序存在一些问题,如不能正确结束、屏幕闪烁和食物可能出现在蛇身上,但已实现基本功能,包括图形界面美化和分数显示。
摘要由CSDN通过智能技术生成

花了近一个月的时间,学习了一下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);
}

②初始化之后&#
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值