Python中的MineSweeper(使用tkinter)

时间:2014-08-13 04:33:31

标签: python tkinter minesweeper

我刚用Python调试了我的大部分MineSweeper代码,但游戏功能存在问题,决定了输赢。如果我赢了,它不会显示所需的消息框并确认获胜。如果我输了,它将显示一条错误消息,说明messagebox(内置函数的tkinter)未定义。

这是我的游戏代码:

from tkinter import *
import random

...

def CheckWin(self):
    '''Checks if player won'''
    doneList = []
    for key in self.cells.keys():
        if self.cells[key].clicked == True and self.cells[key].value != 9:
            doneList.append(self.cells[key])
    if len(doneList) == int(height)*int(width)-int(numBombs):
        messagebox.showinfo('Minesweeper','Congratulations -- you won!', parent=self)
        self.winner = True

def CheckLoss(self):
    '''Checks if player lost'''
    self.loser = True
    self.flagTrack['text'] = '0'
    messagebox.showerror('Minesweeper','KABOOM! You lose.', parent=self)
    for key in self.cells.keys():
        if self.cells[key].value == 9:
            self.cells[key].flagged = False
            self.cells[key].expose()

1 个答案:

答案 0 :(得分:2)

  

如果我输了,它将显示一条错误消息,指出messagebox(内置函数的tkinter)未定义。

messagebox不是tkinter中的功能,它是模块。执行from pkg import *不会导入pkg的子模块,只会导入pkg中直接定义的内容。

所以,你可能想这样做:

from tkinter import messagebox

(顺便说一句,这是from foo import *可能令人困惑的原因之一,但不是唯一原因。这就是为什么不推荐它,除了在互动中玩游戏翻译,或在一些特殊情况下。)