用wxDevcpp学习wxWidgets之扫雷(bombs)的源代码分析

这篇博客详细分析了使用wxWidgets库在wxDevcpp中开发扫雷游戏的源代码,包括雷的随机布局、cell状态表示、游戏流程及各个关键函数的功能。文章深入探讨了初始化、事件处理、绘制和逻辑操作等方面,为理解扫雷游戏的实现提供了清晰的思路。
摘要由CSDN通过智能技术生成


wxDevcpp自带的example中有很多示例代码,这几天看了扫雷(bombs)程序的代码,在这里大致写一下设计的思路。

 

1、概述

 

每次扫雷游戏开始后雷的布局,都取决于计算机随机产生的一个一维数组m_field,我们将一个格子称为cell。

每一个数组元素自然使用m_field[x+y*m_width]表示,其中:

x = fx/(m_cellWidth*X_UNIT);

y = fy/(m_cellHeight*Y_UNIT);

fx表示鼠标光标所在位置的横坐标,

m_cellWidth*X_UNIT表示的是一个cell的横向长度(X_UNIT表示4个像素的单位长度),所以x就表示cell的横向位置,与之类似的可以推知y表示cell的纵向位置。

x+7*m_width用于将空间分布的(x,y)的cell变为一维数组来表示。

 

设定数组元素m_field[x+y*m_width]的格式如下:

 

Bit

11

10

9

8

7

6

5-0

Menning

EXPLODED

MARKED

BOMB

HIDDEN

SELECTED

 

MASK

 

并定义相应的参数值:

#define BG_HIDDEN   0x100。IsHidden函数:返回m_field[x+y*m_width] & BG_HIDDEN,bit8=1,判断是否是隐藏状态的cell; 

#define BG_BOMB     0x200。IsBomb函数:返回m_field[x+y*m_width] &G_BOMB,bit9=1,判断是否是是雷的cell;

#define BG_MARKED   0x400:IsMarked函数:返回m_field[x+y*m_width] &

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值