私はこの問題を、作業用のタック・タック・トゥ・インターフェイスを実装するためにできるだけ小さなタートル・コードを書くことに挑戦しました。以下のコードは、Xの& Oのターンを交互に繰り返し、正方形が再利用されないようにします。また、それはとても他のイベントをクリックイベントを使用し、メインループに制御をオーバーになります
from turtle import Turtle, Screen
UNIT_SIZE = 80
HALF_GRID_SIZE = 3 * UNIT_SIZE/2
FONT_SIZE = 48 # adjust to taste
x_turn = True
def choosen(turtle):
global x_turn
turtle.onclick(None) # taken so no longer responds
x, y = turtle.position()
magic_marker.goto(x, y - FONT_SIZE/2)
magic_marker.write("X" if x_turn else "O", font=("Arial", FONT_SIZE, "bold"), align="center")
x_turn = not x_turn
magic_marker = Turtle(visible=False)
magic_marker.speed("fastest")
magic_marker.penup()
for row in range(-UNIT_SIZE, UNIT_SIZE + 1, UNIT_SIZE):
if row >= 0:
magic_marker.goto(-HALF_GRID_SIZE, row - UNIT_SIZE/2)
magic_marker.pendown()
magic_marker.setx(HALF_GRID_SIZE)
magic_marker.penup()
for column in range(-UNIT_SIZE, UNIT_SIZE + 1, UNIT_SIZE):
if column >= 0:
magic_marker.goto(column - UNIT_SIZE/2, -HALF_GRID_SIZE)
magic_marker.pendown()
magic_marker.sety(HALF_GRID_SIZE)
magic_marker.penup()
turtle = Turtle(shape="square", visible=False)
turtle.shapesize(0.8 * (UNIT_SIZE/20)) # 0.8 = a safety margin
turtle.color("white")
turtle.penup()
turtle.goto(column, row)
turtle.showturtle() # still white on white but not clickable if not visible
turtle.onclick(lambda x, y, t = turtle: choosen(t))
screen = Screen()
screen.mainloop()
ことができます。上にそれはゲームを獲得しようとしないでも、それ自体は、ゲームをプレイする、それがあなたの知性を構築するだけの最小限のインタフェースですアクティブである。