美文网首页python
编程之Python扫雷(1)

编程之Python扫雷(1)

作者: 东方支柱 | 来源:发表于2018-12-30 09:56 被阅读25次

    #定义下边长

    ps=10

    #初始化二维列表,多加2格作为边界

    #防止浅拷贝问题

    #minemap=[[0]*(ps+2)]*(ps+2)

    #        error! need deep copy

    minemap=[[0 for _ in range(ps+2)] for _ in range(ps+2)]

    #初始化雷,使用random.shuffle,简单快捷!

    def m(maps,mine_num=int(ps*1.2)):

        import random

        mines=[]

        ii=list(range(ps*ps))

        random.shuffle(ii)

        for i in range(mine_num):

            j=ii[i]

            r,c=j//ps+1,j%ps+1

            maps[r][c]=-1

            mines.append((r,c))

        #计算雷边的数字,用数据标识雷的周边,简化编程

        ar=((-1,-1),(-1,0),(-1,1),(0,-1),(0,1),(1,-1),(1,0),(1,1))

        for r,c in mines:

            for a in ar:

                if maps[r+a[0]][c+a[1]]!=-1:

                      maps[r+a[0]][c+a[1]]+=1

    m(minemap)

    相关文章

      网友评论

        本文标题:编程之Python扫雷(1)

        本文链接:https://www.haomeiwen.com/subject/xwzmlqtx.html