V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
miaeLKK
V2EX  ›  算法

算法小白手撸扫雷小游戏,有没有大佬指点一下?

  •  
  •   miaeLKK · 112 天前 via Android · 815 次点击
    这是一个创建于 112 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近比较闲,想摸鱼,玩手机容易被逮,电脑又没有网,就想着写个扫雷玩玩:

    初始化:

    根据大小生成棋盘,初始化每个格子为 - ;

    随机生成指定地雷数的地雷(写入棋盘);

    遍历每个格子,计算周围 9 个格的地雷数量(需要边界判断),将计算结果写入棋盘。

    初始化完成了,然后是游戏部分:

    然后翻开格子时需要一个“炸开”效果,一开始我想着太麻烦了,自己一个个翻吧,后来觉得还是写一个试试,一开始想着逐行扫描,但是连续性不好做。然后想着四个象限扩展,但感觉也是很麻烦。最后想了个方法,每个格子扩展其上下左右 4 个格子,成功了。具体方法:

    翻开格子时首先判断是否不是雷(也就是数字或空格),然后将当前格子翻开。然后进一步判断当前格子是否是空格,是的话就递归当前方法,翻上下左右 4 个格子

    对此,大家有什么建议吗?
    4 条回复    2024-12-04 10:41:18 +08:00
    murmur
        1
    murmur  
       112 天前
    这东西涉及算法么,当时我都拿这个做前端面试题,除了生成正好多少个雷可能需要点算法,其余的都不需要吧
    newtype0092
        2
    newtype0092  
       112 天前
    翻格子的效果,和格子实际数据是两码事,不应该有逻辑耦合,不然就会干扰限制动画渲染的逻辑,你播放动画效果前,就应该知道这次动画涉及到的所有格子。

    要说算法的话简单的就是两种计算格子数据的方式,一种是像你这样点开格子后递归搜索计算旁边可能关联的所有格子的情况,但这样的话你最开始初始化时的遍历就没什么意义了。

    还有一种就是遍历的时候把所有信息算好,包括有多少个空格区块,每个区块具体包含哪些格子,这样点开任意空格后所有的信息都是已知的。
    helldweller
        3
    helldweller  
       111 天前
    如果你在游戏开始之前就初始化所有雷的位置就会出现开局第一步就被炸死的情况,可能在第一次翻开格子的时候构造棋盘更好一点。
    xuelang
        4
    xuelang  
       5 小时 29 分钟前
    我用 cursor 实现了一个,支持经典扫雷还有蜂窝雷,代码开源了,你可以看看。其实不用什么算法,比较简单的

    https://gallery.selfboot.cn/zh/games/minesweeper
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5507 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 08:10 · PVG 16:10 · LAX 00:10 · JFK 03:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.