加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

你会如何用Python代表MineSweeper网格?

发布时间:2020-12-20 12:39:17 所属栏目:Python 来源:网络整理
导读:您将在 Python中使用什么数据结构来表示MineSweeper网格的内部状态? 每个x,y位置将保持一个数值,表示其当前的单元状态(未探测,我的,标志,?). 我应该使用嵌套列表吗?这似乎是最接近2D数组的东西,它是我可能在任何其他语言中使用的(2d数组). 我不熟悉Python
您将在 Python中使用什么数据结构来表示MineSweeper网格的内部状态?

每个x,y位置将保持一个数值,表示其当前的单元状态(未探测,我的,标志,?).

我应该使用嵌套列表吗?这似乎是最接近2D数组的东西,它是我可能在任何其他语言中使用的(2d数组).

我不熟悉Python,所以有人可以给我一个建议吗?

解决方法

使用嵌套列表.它很容易设置:

field = [([None] * height) for x in range(width)]

field[x][y] = "*"

最清楚的事情可能是一个新类:

class MineField(object):
    class _SingleField(object):
        mine = False
        flagged = False
        covered = True

    width = None
    height = None

    def __init__(self,width,height):
        super(MineField,self).__init__()
        self.width = width
        self.height = height
        self._field = [[self._SingleField() for y in range(height)]
                                            for x in range(width)]

        self.init_field(10)

    def init_field(self,minecount):
        pass

    def __getitem__(self,index):
        x,y = index
        return self._field[x][y]

要像这样使用:

> m = MineField(10,10)
> m[4,9].mine
False

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读