c语言编辑扫雷800行,c语言编辑扫雷游戏.doc

c语言编辑扫雷游戏

?

?

?

?

?

第二章?? 扫雷

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

1.??

?

扫雷,是附带在Window里面的游戏,是个简单的游戏。因此我们就从扫雷开始我们的游戏旅程。很多人都玩过这个游戏,只是不知道怎么用程序实现。不过还有人不知道怎么玩,下面就先说说游戏的规则:

?

● 开始:按左键开始游戏,按按钮或菜单重新开始。

●左键:按下时,是雷则结束,非雷则显示数字。

●数字:代表此数字周围一圈八格中雷的个数。

●右键:奇次按下表示雷,偶数按下表示对上次的否定。

●结束:左键按到雷结束,找出全部雷结束。

?

接下来就该介绍游戏的编程过程了。不过要先交代一下一些内容。

?

● 添加位图。

● 添加全局变量。

● 画初始界面。

● 添加函数。

?

为什么要按这种次序呢?因为我们在画初始界面时,可能要用到位图或变量,而变量的定义又可能要对位图进行定义。这样的步骤的好处还有:在做一步之后都可以运行,有错就改,无错就做下一步。

上图是扫雷的一个画面。

下面就一步一步地演示,以编程的思路进行,当然,由于编程过程中有一些函数中的代码是分成两三次写的,我们就不重复,全部代码在第一次讲到时列出,而后面讲到时就只是提一下。

?

新建单文档工程2_1。

?

2.??

?

添加位图:

?

前十二幅是在雷区的,后四幅是按钮。为了便于加载,必须各自保证其连续性。另外,为什么不添加一个按钮而用位图呢?是因为即使我们添加了按钮也要添加四幅位图!

?

位图的ID号:

按扭位图:30*30 IDB_ANNIU1、IDB_ANNIU 2、IDB_ANNIU3、 IDB_ANNIU4

雷区位图:14*14ID号按下图依次为:IDB_BITMAP14。。。。。。IDB_BITMAP25

?

位图:下图(图2-1)。

图2-1

?

3.??

?

定义新类:

?

对于雷,我们是单独定义一个类,这样有利于程序的操作。

class Lei

{

public:

//显示哪一个位图

int weitu;

//这个位置相应的值

int shumu;

};

并有如下规定(图2-2):

?

图2-2

视图类变量:

?

接着是在View类添加变量和函数:

?

//剩下雷数

int leftnum;

//雷数

int leinum;

//结束

int jieshu;

//计时

short second;

//开始计时

int secondstart;

//位图数组

CBitmap m_Bitmap[12];

//按扭位图数组

CBitmap m_anniu[4];

//雷区行数

int m_RowCount;

//雷区列数

int m_ColCount;

//最大雷区

Lei lei[50][50];

?

//这个位置周围雷数为0

void leizero();

//计时器函数

afx_msg void OnTimer(UINT nIDEvent);

//鼠标按下左键

afx_msg void OnLButtonDown(UINT nFlags, CPoint point);

//鼠标按下右键

afx_msg void OnRButtonDown(UINT nFlags, CPoint point);

//初始化函数

afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);

//鼠标左键松开

afx_msg void OnLButtonUp(UINT nFlags, CPoint point);

?

4.??

?

删去状态栏和工具栏:

?

开始执行程序,就能见到一个有状态栏和工具栏的大的单文档,与上图不同,所以我们第一步就是整理框架:

打开下面函数,把里面的一些语句去掉。如下所示:

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

if (CFrameWnd::OnCreate(lpCreateStruct) == -1)

return -1;

/*if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值