在python

时间:2018-03-16 06:12:51

标签: python minesweeper

我目前正在做一项使用类在python中制作扫雷游戏的任务。对于作业的骨干,我们只是想导入教授预制课程并创建我们自己的主要功能,使课程运作。我们不允许看到课程背后的代码,只需要完成每个课程中描述的内容。

init 方法被描述为构建游戏板,该游戏板是具有由问号图像填充并且具有(自身,大小)参数的单元格的正方形。 hideMines方法是在游戏板上隐藏地雷并返回一个bool,指示是否成功并使用参数(self,num)。最后一个是探测方法,它找到鼠标点击最近的单元格并显示其图标,并返回一个元组,显示探测的单元格数和剩余的地雷数并使用参数(self,x,y)。

在我的代码的这一点上,创建了电路板,一旦我输入了隐藏地雷的提示,电路板上的中间单元就会自动被发现而点击什么都不做。我的问题是,在给出少量信息的情况下,我需要做什么才能使点击正确地发现图标?

import turtle
import game

def main():
wn = turtle.Screen()
board = wn.numinput("Numeric Input", "Enter desired board size: ")
board = int(board)
mine = game.Game(board)
nummine = wn.numinput("Numeric Input", "Enter desired number of mines: ")
nummine = int(nummine)
mine.hideMines(nummine)
def closure():
    (find,rem) = mine.probe(board,board)

    if rem == 0:

        over = wn.textinput("Text Input", "Would you like to play again? (Y)es or (N)o")

        if over == 'Y':
            main()
        else:
            turtle.bye()
s = wn.getscreen()
s.onscreenclick(closure())

main()的

1 个答案:

答案 0 :(得分:1)

我猜您可能需要以下代码。没有game.py我无法确定它是否有效。无论如何快乐编码...

import turtle
import game

def main():
    def closure(x, y):
        find, rem = mine.probe(x, y)        
        if rem == 0:
            over = turtle.getscreen().textinput("Text Input", "Would you like to play again? (Y)es or (N)o")
            if over and over[0] == 'Y':
                # Some codes for resetting the board
                pass
            else:
                turtle.bye()

    wn = turtle.Screen()

    board = wn.numinput("Numeric Input", "Enter desired board size: ")
    board = int(board)
    mine = game.Game(board)

    nummine = wn.numinput("Numeric Input", "Enter desired number of mines: ")
    nummine = int(nummine)
    mine.hideMines(nummine)

    wn.onscreenclick(closure)
    wn.mainloop()

main()

[更新] 为避免全局mineclosure()进入main()