从Python Turtle的onclick()获得2个职位

时间:2017-05-13 07:12:21

标签: python turtle-graphics

我已经开始使用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

并且它不起作用。 我想我需要更好的衡量标准 谢谢

1 个答案:

答案 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()以用于程序的其余部分。当感兴趣的事件发生时,它会安排你的事件处理者被召唤。