print("Finished Loading!")
print("x's turn")
xturn = True
if xturn == True:
usl.onclick(x1)
usc.onclick(yo)
usr.onclick(x3)
csr.onclick(x4)
csl.onclick(x5)
cs.onclick(x6)
dsl.onclick(x7)
dsc.onclick(x8)
dsr.onclick(x9)
else:
print("o's Turn")
usl.onclick(o1)
我正在为一个班级创建一个Tic-tac-toe游戏并完成游戏机制(当有人点击一个盒子制作x / o时)但我现在正在努力转弯。以上摘录是我最需要动员的内容。我想知道是否有人知道如何使用乌龟图形中的事件来改变变量,或者是否有人知道一个好的系统来交替转弯会很棒!
答案 0 :(得分:0)
我把这个问题作为一个挑战来编写尽可能少的乌龟代码来实现一个工作的tic-tac-toe接口。下面的代码在X& s& 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()
它使用点击事件并将控制权交给主循环,以便其他事件也可以激活。