Я пишу программу для крестики-нолики в качестве задания для класса, который я посещаю.В данный момент я пытаюсь создать игру в крестики-нолики с использованием черепахи в пичарме.Мое намерение состоит в том, чтобы у меня была игра, в которой я запускаю программу, и она начинается со случайного выбора игрока для запуска, а затем показывает черепаху выбранного игрока. Как только этот игрок начинает, они могут использовать клавиши со стрелками для перемещения черепахи вокругдоска, и нажмите пробел, чтобы нарисовать X или O, а затем он автоматически заканчивает свой ход и начинает следующий ход игроков.Это должно продолжаться до тех пор, пока один или другой не получат 3 подряд, в которых будет объявлен победитель.До сих пор я создал доску 3x3 в черепахе, сделал черепаху игрока и дал ей возможность двигаться в центр любого из 9 квадратов, а затем в пространстве он рисует x или o.
Моя проблема начинается с переключения игрока, я собираюсь создать цикл for, который будет выполняться 5 раз (это даст 10 ходов и будет только 9 пробелов), и в рамках цикла for я хотел иметь два цикла while (по одному для каждогоигрок).Я определил черепах игрока, так что мне нужно только вызвать player_1 в цикле while, и он создает черепаху, которой можно управлять в моей программе.Затем я планировал установить циклы while на переменную true или false, и всякий раз, когда нажимали пробел, чтобы поставить отметку игроков на доске, переменная изменялась так, чтобы цикл while заканчивался и переходил к следующему игроку.Но вскоре я обнаружил, что проблема с этим методом заключается в том, что моя черепаха игрока бесконечно воссоздается, когда команда while повторяется, поэтому, когда игрок пытается переместить фигуру, вскоре после этого он возвращается в исходное состояние.
Я вижу, что должно произойти, мне нужно найти способ удержать оператор while, пока он ждет, пока игрок примет решение, но я не знаю, какая команда это сделает,Кто-нибудь знает, как я мог бы сказать программе, чтобы она подождала выполнения оператора while, пока в черепахе не будет сделан выбор?
import turtle
Window = turtle.Screen()
Window.bgcolor()
Window.title("Tic Tac Toe")
# Drawing the Board
def border():
border_outer = turtle.Turtle()
border_outer.speed(0)
border_outer.penup()
border_outer.setposition(-375, -375)
border_outer.pendown()
border_outer.pensize(3)
for num in range(4):
border_outer.forward(750)
border_outer.left(90)
border_outer.hideturtle()
# inside border
border_inner1 = turtle.Turtle()
# border_inner1.color("red")
border_inner1.speed(0)
border_inner1.penup()
border_inner1.setposition(-125, 375)
border_inner1.pendown()
border_inner1.pensize(3)
border_inner1.right(90)
border_inner1.forward(750)
border_inner1.left(90)
border_inner1.forward(250)
border_inner1.left(90)
border_inner1.forward(750)
border_inner1.hideturtle()
border_inner2 = turtle.Turtle()
# border_inner2.color("red")
border_inner2.speed(0)
border_inner2.penup()
border_inner2.setposition(-375, 125)
border_inner2.pendown()
border_inner2.pensize(3)
border_inner2.forward(750)
border_inner2.right(90)
border_inner2.forward(250)
border_inner2.right(90)
border_inner2.forward(750)
border_inner2.hideturtle()
# Player 1 Turtle
def player_1():
# Player 1
global player
player = turtle.Turtle()
player.shape("circle")
player.penup()
player.color("blue")
player.speed()
playerspeed = 250
# Moving the player #1
def move_left():
x = player.xcor()
x -= playerspeed
if x < -375:
x = -250
player.setx(x)
def move_right():
x = player.xcor()
x += playerspeed
if x > 375:
x = 250
player.setx(x)
def move_down():
y = player.ycor()
y -= playerspeed
if y < -375:
y = -250
player.sety(y)
def move_up():
y = player.ycor()
y += playerspeed
if y > 375:
y = 250
player.sety(y)
def set_position():
x = player.xcor()
y = player.ycor()
player.goto(x, y - 50)
player.pendown()
player.pensize(10)
player.circle(50, None, None)
player.penup()
player.goto(x, y)
global flag
flag = False
# Keyboard Bindings for player 1
turtle.listen()
turtle.onkey(move_left, "Left")
turtle.onkey(move_right, "Right")
turtle.onkey(move_up, "Up")
turtle.onkey(move_down, "Down")
turtle.onkey(set_position, "space")
flag = 'false'
border()
while flag == True:
player_1
turtle.mainloop()