我已经开始使用Tic Tac Toe游戏,我已经搜索了如何使用Python Turtle的onclick()获得2个职位。我得到的只是在这个链接上: Python 3.0 using turtle.onclick。 我想获得2个职位,但我遇到了问题" turtle.mainloop()" 我的解决方案是:
def getPosX(x_X, y_X):
print("(", x_X, ",", y_X,")")
def getPosO(x_O, y_O):
print("(", x_O, ",", y_O,")"
def choiceX():
Xplay = turtle.getscreen()
Xplay.onclick(getPosX)
turtle.mainloop()
return Xplay
def choiceO():
Oplay = turtle.getscreen()
Oplay.onclick(getPosO)
turtle.mainloop()
return Oplay
我得到的只是取得了Xplay.onclick()的位置。
我也尝试删除" turtle.mainloop()"每个def在另一个def中使用for循环:
def play():
for i in range(3):
choiceX()
choiceO()
return i
并且它不起作用。 我想我需要更好的衡量标准 谢谢
答案 0 :(得分:0)
我假设你希望你的乌龟点击在X和O之间交替,即getPosX()
和getPosO()
之间。我相信你的代码重新排列应该做你想要的:
import turtle
def getPosX(x, y):
print("X: (", x, ",", y, ")")
choiceO()
def getPosO(x, y):
print("O: (", x, ",", y, ")")
choiceX()
def choiceX():
screen.onclick(getPosX)
def choiceO():
screen.onclick(getPosO)
screen = turtle.Screen()
choiceX() # X goes first
turtle.mainloop()
点击屏幕,我得到:
> python3 test.py
X: ( -206.0 , 178.0 )
O: ( 224.0 , 31.0 )
X: ( -14.0 , -122.0 )
O: ( -41.0 , 159.0 )
X: ( 146.0 , 196.0 )
O: ( 105.0 , -70.0 )
X: ( -100.0 , -114.0 )
O: ( -179.0 , 184.0 )
X: ( 23.0 , 137.0 )
当我看到多个mainloop()
来电(或任何mainloop()
来电不是最高级别,也不是程序中的最后一件事)时,通常表示对mainloop()
所做的事情的误解
您可以设置事件处理程序以执行所需操作,然后将完全控制权转移到mainloop()
以用于程序的其余部分。当感兴趣的事件发生时,它会安排你的事件处理者被召唤。