2017-05-13 6 views
0

私はTic Tac Toeのゲームを作っています。すでにPython Turtleのonclick()で2位を取得する方法を探しています。私が得たものは、このリンクのちょうど上にあります: Python 3.0 using turtle.onclick。 私の解決策がある「)(turtle.mainloop」私は2つの位置を取得したいが、私はとの問題を抱えている:Python Turtleのonclick()から2位を取得

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(のpostionを取るだけのようだ何)。

そして私はまた、それぞれの「turtle.mainloopは()」別のDEFにforループを使用するDEF削除しよう:

def play(): 
     for i in range(3): 
      choiceX() 
      choiceO() 
     return i 

、それは動作しません。 は、私はより良い対策を必要とする おかげ

答えて

0

を考えて、私はそれがgetPosX()getPosO()の間にある、あなたのカメは、XとOの間で交互にクリックしたいと仮定しています。私はあなたのコードのこの再配置は、あなたが望む何をすべきと考えている:画面の周り

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() 

クリックすると、私が手:

私は複数の mainloop()コール(または任意の 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()に設定します。関心のあるイベントが発生したときに、イベントハンドラが呼び出されるよう手配します。

関連する問題