2016-12-09 5 views
0
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 игры для класса и есть игровые механики закончили (когда кто-то щелкает коробка делает х/о), но я сейчас борясь с поворотами. Выдержка выше - то, что я, скорее всего, буду нуждаться в мотивации. Мне было интересно, если кто-нибудь знает, как вы можете использовать события в черепаховой графике, чтобы изменить разновидность, или если кто-то знает хорошую систему для чередующихся поворотов, это было бы здорово!Как чередовать превращается в черепаху на основе игры

ответ

0

Я принял этот вопрос как вызов написать как можно меньше кода черепахи, чтобы реализовать рабочий интерфейс tic-tac-toe. Приведенный ниже код чередуется между поворотами 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() 

Он использует кнопки мыши событие и превращает контроль в основной цикл, таким образом другие события могут также быть активным.

enter image description here