-1

我的问题是,当我在 if 语句中更改变量“XO”的内容时,If 语句的条件中的那个变得未定义。

from ursina import *
import time
app = Ursina()
window.title = "Game"
window.borderless = False
window.exit_button_visible = False

XO = "X"

class Tile(Button):
    def __init__(self, position = (-5, -5, 0), texture = "assets/tile.png"):
        super().__init__(
            parent = scene,
            model = "quad",
            color = color.lime,
            position = position,
            texture = texture
        )
    def input(self, key):
        if self.hovered:
            if key == "left mouse down":
                if XO == "X":
                    Tile(position = self.position, texture = "assets/tile_x")
                    XO = "O"
                else:
                    Tile(position = self.position, texture = "assets/tile_0")
                    XO = "X"
                time.sleep(.005)
                destroy(self)
                
for x in range(3):
    for y in range(3):
        block = Tile((x-1, y-1))
app.run()
4

1 回答 1

0

这里最大的问题是您似乎试图在某个内部上下文中引用全局变量。通常,出于很多原因,不鼓励这样做。我认为最大的问题之一是全局代码难以维护。相反,我鼓励你重构你的代码,让你的所有代码都驻留在一个类中,并努力封装你的代码。

话虽如此,有时需要使用全局范围。为此,您只需global在要全局作用域的变量名称之前使用关键字。global XO在您的情况下,您可以在输入函数的开头简单地执行此操作。

于 2021-07-21T13:48:56.633 回答