Excel玩“记忆配对”?成品及制作思路分享!

2021-10-29 16:01:50 3点赞 13收藏 5评论

Excel就只能是三十年手速疯狂填数据吗?

Excel就只能是死扣细节制作华丽图表原地成仙吗?

Excel就只能是枯燥乏味的闭眼复制粘贴吗?

NO——我们还可以用它搞点乐子,来吧,既然不能功成名就,那就做个有趣的渣渣。

这次做的也是一个经典小游戏——记忆配对!设计了三种难度,反正我是玩玩简单的行,最高难度的感觉脑细胞受不住(不得不向岁月低头啊~)

成品展示:

Excel玩“记忆配对”?成品及制作思路分享!

获取路径:

完整版 https://wwx.lanzoui.com/i4blcvwi5ne 提取密码:cgyt

解压密码(rste)

PS.食用前记得打开允许宏设置

2007路径:①左上角圆形图标→②Excel选项→③信任中心→④信任中心设置→⑤宏设置→⑥启用所有宏。

2010路径:①左上角“文件”→②选项→③信任中心→④信任中心设置→⑤宏设置→⑥启用所有宏。

(其他版本Excel也差不多,参考设置)

**********游戏制作分享,完全可以不看系列 **********Excel玩“记忆配对”?成品及制作思路分享!

一、记忆配对的简单介绍

记忆配对小游戏的规则和逻辑非常简单:

  • 在指定区域的网格内,随机分布了n对图形。

  • 点击格子,所选格内的图形显示出来,如果与上一次点击的格子内图形一样,则配对成功。

  • 通过记住不同图形的位置,将其一对一对的找出来。

  • 所有格子的图形均显示出来之后,完成游戏。

二、Excel制作

OK!了解了规则和逻辑,那么接下来就是——

  1. 根据规则,梳理要实现的功能;

  2. 设计功能实现方法及实现过程;

  3. 微微肝一下的搞代码。

基于这个思路,使用Excel制作记忆配对小游戏的步骤大致如下:

Excel玩“记忆配对”?成品及制作思路分享!

1 点击翻开图形

指定9x9的单元格区域,随机选择其中10个单元格,写入“X”,再根据X计算周边单元格的数值。

1.1 布置隐藏面板

有了设计扫雷的经验,这个就很简单了~

思路:

  • 在隐藏面板写好n组固定的值,1列;

  • 做辅助列,利用RAN()为每一组分配一个随机数;

  • 根据辅助随机数大小进行排序,打乱图形;

  • 分段复制到设计好的区域内。

制作:

  • 以简单版为例,4x4网格,共16个8组图形,直接将1~8数字写进N列;

  • 在左侧M列对应写上”=ran()“,生成随机数;

  • 使用代码排序(使用筛选排序不会自动更新);

Range("M1:N16").sort Range("M1"), xlAscending '~~对M1:N16区域进行排序,顺序key是M1(随机数那一列),升序

  • 使用代码,将N列复制一份到O列,排序打乱后的结果就固定下来不在变了;

Range("N1:N16").Copy

Range("O1").PasteSpecial '~~PasteSpecial是选择性粘贴,直接copy也行

  • 利用for循环,以4个值为一个循环,粘贴到网格的1~4列。

For i = 1 To 4

Range(Cells(i * 4 - 3, "O"), Cells(i * 4, "O")).Copy

Cells(2, i + 1).PasteSpecial Next i

1.2 点击交互——SelectionChange

思路:

  • 识别当前点击的行列号(坐标),并进行记录(下次点击使用);

  • 判断有效性,如果点到已配对的图形需要区别处理(后文叙述);

  • 按照行列号,复制隐藏面板的图形至显示面板。

制作:

  • 定义变量zrow和zcol,表示当前选择的行列号;

zrow = Application.Selection.Row

zcol = Application.Selection.Column

  • 将zrow和zcol写进隐藏面板指定单元格,进行记录;

Sheet3.Range("S1") = zrow '~Sheet3为隐藏面板,S1、S2为记录行列号的单元格

Sheet3.Range("S2") = zcol

  • 使显示面板对应格与隐藏面板值相等(此处用Copy命令也可以)。

Sheet1.Cells(zrow, zcol) = Sheet3.Cells(zrow, zcol)

2 判断配对是否成功

使用IF判断,如果当前行列号与上一次行列号对应图形值不同则表示配对不成功,相同则表示成功,首次点击不作判断。

判断的代码嵌入SelectionChange的sub里面。

2.1 配对不成功

思路:

  • 点击显示图形,前次点击的图形消失;

  • 记录当前行列号,覆盖记录;

制作:

  • 按照当前zrow、zcol行列号执行点击显示图片(上述已有,不再重复编代码);

  • 定义lrow、lcol为前此点击行列号变量;

lrow = Sheet3.Range("S1")

lcol = Sheet3.Range("S2")

  • 显示面板lrow、lcol对应的单元格为空;

  • 行列号记录单元格写入zrow、zcol。

Sheet3.Range("S1") = zrow

Sheet3.Range("S2") = zcol

2.2 配对成功

思路:

  • 点击依旧显示图形,上一次点击图形不消失,并删除隐藏面板两次点击对应的图形(用于无效点击判断)。

  • 删除隐藏面板记录的行列号,避免下次删除已配对图形。

制作:

  • 按照当前zrow、zcol行列号执行点击显示图片(上述已有,不再重复编代码);

  • 隐藏面板zrow、zcol和lrow、lcol对应的单元格为空;

  • 行列号记录单元格为空。

2.3 非判断工况:无效点击和首次点击

思路:

  • 点到已配对的图形,为无效点击,不做任何操作;

  • 首次点击时,不做对比判断,记录当前行列号。

制作:

  • IF语句,如果隐藏面板zrow、zcol对应单元格为空,不做行列号记录和配对判断;

  • IF语句,如果隐藏面板zrow、zcol对应单元格不为空,且行列号记录为空,行列号记录单元格写入zrow、zcol,不进行配对判断。

2.4 IF判断顺序

根据动作逻辑,使用IF多层判断,顺序为——

  • 无效点击判断

  • 首次点击判断

  • 配对成功与否判断

IF... '~是否无效点击

IF... '~非无效点击,是否首次点击

IF... '~非无效点击、非首次点击,是否配对成功

'成功

'不成功

end if

end if

end if

3 游戏结束

思路:

  • 所有图形配对完,隐藏面板的图形均被清空,游戏结束。

制作:

  • 使用Count函数统计指定区域;

  • 使用IF语句判定。

If Application.WorksheetFunction.CountIf(Sheet3.Range("B2:E5"), "<>") = 0...

4 得分

采用步数和时间双重计数,简单公式计算即可,不重要,略过Excel玩“记忆配对”?成品及制作思路分享!

5 调整细节

调试代码和功能、调整显示细节等。

说实话,小游戏早就做出来了,自己也玩了好多遍Excel玩“记忆配对”?成品及制作思路分享!

但是要把思路和制作过程写出来,真的......Excel玩“记忆配对”?成品及制作思路分享!

下次尝试只写思路,代码有兴趣的直接找我要好了。

展开 收起
5评论

  • 精彩
  • 最新
  • 被逻辑打败了的我,心甘情愿做韭菜

    校验提示文案

    提交
    开心玩就对了,其他的不重要 [龇牙]

    校验提示文案

    提交
    收起所有回复
  • 作者好帅鸭,赞 [脸红]

    校验提示文案

    提交
    啊这…… 作者好幽默鸭,赞 [无语]

    校验提示文案

    提交
    哇噢……兄弟你竟然比我还帅 [鼓掌]

    校验提示文案

    提交
    收起所有回复
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
13
扫一下,分享更方便,购买更轻松