呱呱消方块介绍呱呱消方块是一个用Excel VBA编写的小游戏。 很多年前,在ExcelHome论坛中看到一个打豆豆的游戏,是一个Excel文件,打开就能玩。闲来没事的时候,经常会打开玩几盘。 今年过年前,又一次打开了这个游戏,可能是因为运行环境的变化(现在的环境win10+office2021 64位),打开游戏后发现豆豆的显示变得很小,而且因为有一种颜色的豆豆我老是看不清,影响我“破记录”,于是就想动手调整一下,把豆豆调大些,改一下不好认的颜色。动手后发现改起来并不容易。于是产生了自己重写一个的想法。今年过年放假期间动手在Excel工作表中使用条件格式做了一个。 因为儿子小名叫呱呱,所以取名“呱呱消方块”,就当送给他的小礼物。 代码开源,没有任何限制,如果能给各位写代码提供一些启发的话,我会非常高兴。 编写说明游戏完全使用VBA开发,没有调用API函数,没有使用窗体,没有使用控件,因此兼容性问题应该不太多。游戏显示依赖Excel单元格的条件格式,因为一个单元格设置有3个以上的条件格式,因此Excel2007以前的版本应该运行不了。 因为游戏本身很简单,所以主体部分很快就完成了。但对于游戏计时部分一直做得不是太好,因为Excel VBA不支持异步,无法直接实现游戏计时的功能,一般的做法是调用API,但我不希望去封装API,最终找到一个Excel的Application.OnTime方法,可以指定一定时间后执行某一过程,通过这一方法,变相的完成了计时部分的功能。 第一次写这种小游戏,没有什么经验,虽然程序主体部分实现非常顺序,但在一些如分数显示等开始觉得不重要的部分,前期没有好好规划,遇到了直接写,导致这部分代码逻辑有点乱。这也算是这次的一种收获吧,以后一定要先规划,再动手。 另外,测试过种中一些意想不到的操作引起的程序的错误,也花了一些时间去解决。 游戏方法游戏默认在一个15X23的区域中随机分布0-7八个数字,每种数字对应一种颜色。0表示空(灰色背景)1-7表示七种颜色的色块,色块共100组,计200个。 当点击(选中)游戏区域的单元格,若单元格为0(灰色)时,以该单元格为中心,沿上下左右四个方向最近的四个色块中,相同色块数多余1个时,将得2、3或4分,同时这些单元格将消除。如四个色块均不同,或直接点击色块,则扣4分。 已知问题1、当全选工作表的所有单元格时,会出现溢出错误。主要与Application.Intersect方法有关,但没找到好的解决方法。 2、当游戏未停止前,非正常退出,可能会导致Application.OnTime的定时器没有清除,导致计时器错误。
|