MFC学习之2048小游戏程序源码

2048游戏基于4x4方格,通过移动和合并数字方块实现。开发涉及确定需求、界面设计和逻辑实现。在Windows编程中,添加PreTranslateMessage函数用于处理键盘输入,拦截或修改消息。源代码展示了游戏界面的绘制和颜色设计,以及分数显示功能。当游戏结束时,会显示相应提示。

2048游戏的开发原理相对简单,它基于一个4x4的方格,通过控制数字方块的移动来合成相同的数字方块,并生成新的数字方块。

具体实现过程如下:

确定需求:首先需要明确游戏的功能需求,如产生随机数字方块、控制数字方块的移动、检测碰撞等。
界面设计:设计游戏的界面,包括数字方块、移动方向、分数等元素。
逻辑实现:实现游戏的逻辑部分,包括数字方块的生成、移动和碰撞检测,以及分数的记录和更新等。

在这里插入图片描述

这里说下需要手动添加一个“PreTranslateMessage”消息处理函数,用于识别键盘按键动作。

在Windows编程中,消息处理函数(Message Handling Function)是用于处理Windows操作系统发送给应用程序的消息的函数。其中,"PreTranslateMessage"是一种消息处理函数,它用于在将消息传递给窗口过程之前,对消息进行预处理。

要添加一个"PreTranslateMessage"消息处理函数,需要进行以下步骤:

打开你的窗口类的定义文件(通常是一个名为"窗口类名.rc"的文件),在资源编辑器中打开。

在资源编辑器中,找到窗口,右键选择“类向导”,然后从虚函数中找到“PreTranslateMessage”。

在新的消息处理函数中,编写你的代码以处理消息。这个函数的原型如下:

BOOL PreTranslateMessage(MSG* pMsg)

其中,pMsg是一个指向MSG结构的指针,该结构包含了消息的相关信息,如消息的类型、参数等。

在"PreTranslateMessage"函数中,你可以根据需要编写代码来处理消息。例如,你可以通过检查消息的类型,拦截或修改特定的消息。
保存并关闭窗口类的定义文件。

"PreTranslateMessage"消息处理函数的主要作用是允许你在窗口过程(Window Procedure)之前对消息进行修改或拦截。通过这个函数,你可以对消息进行一些预处理操作,例如修改消息的参数,或者根据需要将消息传递给其他函数进行处理。

在这里插入图片描述

主函数源代码:

void CMy2048MFCDlg::Show()
{
   
   
	//所有方块的种类,封装到一个Node数组中
	const static Node color[]={
   
   
			0,		RGB(204,192,179),	RGB(204,192,179),
			2,		RGB(238,230,210),	RGB(119,110,100),
			4,		RGB(237,224,200),	RGB(119,110,100),
			8,		RGB(242,177,121),	RGB(249,242,242),
			16,		RGB(245,148,100),	RGB(249,242,242),
			32,		RGB(246,124,95),	RGB(249,242,242),
			64,		RGB(246,94,59),		RGB(249,242,242),
			128,	RGB(237,207,114),	RGB(<
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逃逸的卡路里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值