Я сделал игру в крестики-нолики на Python, используя Python Turtle. Я сделал так, что при нажатии на квадрат на доске туда помещается буква, а затем компьютер размещает букву на доске. Однако когда игрок помещает букву на доску, а компьютер размещает букву на доске, через долю секунды буквы полностью исчезают с доски.
Вот код, в котором заключается проблема:
def printTurtleBoard():
pensize(10)
speed("fastest")
hideturtle()
screen.setup(500,500)
penup()
X = -150
Y = -50
goto(X,Y)
pendown()
for i in range(3):
for i in range(4):
forward(100)
right(90)
penup()
forward(100)
pendown()
for i in range(4):
forward(100)
right(90)
penup()
forward(100)
pendown()
for i in range(4):
forward(100)
right(90)
penup()
Y = Y + 100
goto(X,Y)
pendown()
topleftsquare = Turtle()
topleftsquare.penup()
topleftsquare.shape("square")
topleftsquare.color("white")
topleftsquare.turtlesize(5)
topleftsquare.goto(-100,100)
topmiddlesquare = Turtle()
topmiddlesquare.penup()
topmiddlesquare.shape("square")
topmiddlesquare.color("white")
topmiddlesquare.turtlesize(5)
topmiddlesquare.goto(0,100)
toprightsquare = Turtle()
toprightsquare.penup()
toprightsquare.shape("square")
toprightsquare.color("white")
toprightsquare.turtlesize(5)
toprightsquare.goto(100,100)
middleleftsquare = Turtle()
middleleftsquare.penup()
middleleftsquare.shape("square")
middleleftsquare.color("white")
middleleftsquare.turtlesize(5)
middleleftsquare.goto(-100,0)
middlemiddlesquare = Turtle()
middlemiddlesquare.penup()
middlemiddlesquare.shape("square")
middlemiddlesquare.color("white")
middlemiddlesquare.turtlesize(5)
middlemiddlesquare.goto(0,0)
middlerightsquare = Turtle()
middlerightsquare.penup()
middlerightsquare.shape("square")
middlerightsquare.color("white")
middlerightsquare.turtlesize(5)
middlerightsquare.goto(100,0)
bottomleftsquare = Turtle()
bottomleftsquare.penup()
bottomleftsquare.shape("square")
bottomleftsquare.color("white")
bottomleftsquare.turtlesize(5)
bottomleftsquare.goto(-100,-100)
bottommiddlesquare = Turtle()
bottommiddlesquare.penup()
bottommiddlesquare.shape("square")
bottommiddlesquare.color("white")
bottommiddlesquare.turtlesize(5)
bottommiddlesquare.goto(0,-100)
bottomrightsquare = Turtle()
bottomrightsquare.penup()
bottomrightsquare.shape("square")
bottomrightsquare.color("white")
bottomrightsquare.turtlesize(5)
bottomrightsquare.goto(100,-100)
def top_left_square(x,y):
global place
global turn
topleftsquare.penup()
topleftsquare.pendown()
topleftsquare.color("white")
topleftsquare.penup()
drawer.speed("fastest")
drawer.hideturtle()
drawer.penup()
drawer.goto(-100,40)
drawer.pendown()
drawer.write("X", align="center",font=("Arial", 75))
place = 1
print(place)
row = (place - 1) // 3
column = (place - 1) % 3
board[row][column] = "X"
print("\n")
printBoard()
print("\n")
win = checkWin()
turn = "O"
print(turn)
def top_middle_square(x,y):
global place
global turn
topmiddlesquare.penup()
topmiddlesquare.pendown()
topmiddlesquare.color("white")
topmiddlesquare.penup()
drawer = Turtle()
drawer.speed("fastest")
drawer.hideturtle()
drawer.penup()
drawer.goto(0,40)
drawer.pendown()
drawer.write("X", align="center",font=("Arial", 75))
place = 2
print(place)
row = (place - 1) // 3
column = (place - 1) % 3
board[row][column] = "X"
print("\n")
printBoard()
print("\n")
win = checkWin()
turn = "O"
def top_right_square(x,y):
global place
global turn
toprightsquare.penup()
toprightsquare.pendown()
toprightsquare.penup()
drawer = Turtle()
drawer.speed("fastest")
drawer.hideturtle()
drawer.penup()
drawer.goto(100,40)
drawer.pendown()
drawer.write("X", align="center",font=("Arial", 75))
place = 3
print(place)
row = (place - 1) // 3
column = (place - 1) % 3
board[row][column] = "X"
print("\n")
printBoard()
print("\n")
win = checkWin()
turn = "O"
def middle_left_square(x,y):
global place
global turn
middleleftsquare.penup()
middleleftsquare.pendown()
middleleftsquare.penup()
drawer = Turtle()
drawer.speed("fastest")
drawer.hideturtle()
drawer.penup()
drawer.goto(-100,-60)
drawer.pendown()
drawer.write("X", align="center",font=("Arial", 75))
place = 4
row = (place - 1) // 3
column = (place - 1) % 3
board[row][column] = "X"
print("\n")
printBoard()
print("\n")
win = checkWin()
turn = "O"
def middle_middle_square(x,y):
global place
global turn
middlemiddlesquare.penup()
middlemiddlesquare.pendown()
middlemiddlesquare.penup()
drawer = Turtle()
drawer.speed("fastest")
drawer.hideturtle()
drawer.penup()
drawer.goto(0,-60)
drawer.pendown()
drawer.write("X", align="center",font=("Arial", 75))
place = 5
row = (place - 1) // 3
column = (place - 1) % 3
board[row][column] = "X"
print("\n")
printBoard()
print("\n")
win = checkWin()
turn = "O"
def middle_right_square(x,y):
global place
global turn
middlerightsquare.penup()
middlerightsquare.pendown()
middlerightsquare.penup()
drawer = Turtle()
drawer.speed("fastest")
drawer.hideturtle()
drawer.penup()
drawer.goto(100,-60)
drawer.pendown()
drawer.write("X", align="center",font=("Arial", 75))
place = 6
row = (place - 1) // 3
column = (place - 1) % 3
board[row][column] = "X"
print("\n")
printBoard()
print("\n")
win = checkWin()
turn = "O"
def bottom_left_square(x,y):
global place
global turn
bottomleftsquare.penup()
bottomleftsquare.pendown()
bottomleftsquare.penup()
drawer = Turtle()
drawer.speed("fastest")
drawer.hideturtle()
drawer.penup()
drawer.goto(-100,-160)
drawer.pendown()
drawer.write("X", align="center",font=("Arial", 75))
place = 7
row = (place - 1) // 3
column = (place - 1) % 3
board[row][column] = "X"
print("\n")
printBoard()
print("\n")
win = checkWin()
turn = "O"
def bottom_middle_square(x,y):
global place
global turn
bottommiddlesquare.penup()
bottommiddlesquare.pendown()
bottommiddlesquare.penup()
drawer = Turtle()
drawer.speed("fastest")
drawer.hideturtle()
drawer.penup()
drawer.goto(0,-160)
drawer.pendown()
drawer.write("X", align="center",font=("Arial", 75))
place = 8
row = (place - 1) // 3
column = (place - 1) % 3
board[row][column] = "X"
print("\n")
printBoard()
print("\n")
win = checkWin()
turn = "O"
def bottom_right_square(x,y):
global place
global turn
bottomrightsquare.penup()
bottomrightsquare.pendown()
bottomrightsquare.penup()
drawer = Turtle()
drawer.speed("fastest")
drawer.hideturtle()
drawer.penup()
drawer.goto(100,-160)
drawer.pendown()
drawer.write("X", align="center",font=("Arial", 75))
place = 9
row = (place - 1) // 3
column = (place - 1) % 3
board[row][column] = "X"
print("\n")
printBoard()
print("\n")
win = checkWin()
turn = "O"
while playAgain == "y" and multiplayer == 1:
try:
global place
global turn
print("\n")
printTurtleBoard()
turn = "X"
print(turn)
while turn == "X":
topleftsquare.onclick(top_left_square)
topmiddlesquare.onclick(top_middle_square)
toprightsquare.onclick(top_right_square)
middleleftsquare.onclick(middle_left_square)
middlemiddlesquare.onclick(middle_middle_square)
middlerightsquare.onclick(middle_right_square)
bottomleftsquare.onclick(bottom_left_square)
bottommiddlesquare.onclick(bottom_middle_square)
bottomrightsquare.onclick(bottom_right_square)
win = checkWin()
if win == 1 or win == 2 or win == 3:
play_again()
if turn == "O":
counter += 1
print("Turns counted: ", counter)
print("\n")
printBoard()
print("\n")
computer()
win = checkWin()
if win == 1 or win == 2 or win == 3:
play_again()
#runs the play_again() function
global letterO
letterO()
printBoard()
Извините, это очень длинно, но я не знал другого способа получить помощь по вопросу, не публикуя весь этот код.
Я попробовал дать черепахе имя в функции printTurtleBoard(), чтобы посмотреть, решит ли это что-нибудь, но та же проблема осталась
Я сделал игру в крестики-нолики на Python, используя Python Turtle. Я сделал так, что при нажатии на квадрат на доске туда помещается буква, а затем компьютер размещает букву на доске. Однако когда игрок помещает букву на доску, а компьютер размещает букву на доске, через долю секунды буквы полностью исчезают с доски. Вот код, в котором заключается проблема: [code]def printTurtleBoard(): pensize(10) speed("fastest") hideturtle() screen.setup(500,500) penup() X = -150 Y = -50 goto(X,Y) pendown() for i in range(3): for i in range(4): forward(100) right(90) penup() forward(100) pendown() for i in range(4): forward(100) right(90) penup() forward(100) pendown() for i in range(4): forward(100) right(90) penup() Y = Y + 100 goto(X,Y) pendown() [/code] [code] randomY = random.randint(0,2) randomX = random.randint(0,2) global letterO def letterO(): if randomY == 0 and randomX == 0: drawer.penup() drawer.goto(-100,40) drawer.pendown() drawer.write("O", align="center",font=("Arial", 75)) if randomY == 0 and randomX == 1: drawer.penup() drawer.goto(0,40) drawer.pendown() drawer.write("O", align="center",font=("Arial", 75)) if randomY == 0 and randomX == 2: drawer.penup() drawer.goto(100,40) drawer.pendown() drawer.write("O", align="center",font=("Arial", 75)) if randomY == 1 and randomX == 0: drawer.penup() drawer.goto(-100,-60) drawer.pendown() drawer.write("O", align="center",font=("Arial", 75)) if randomY == 1 and randomX == 1: drawer.penup() drawer.goto(0,-60) drawer.pendown() drawer.write("O", align="center",font=("Arial", 75)) if randomY == 1 and randomX == 2: drawer.penup() drawer.goto(100,-60) drawer.pendown() drawer.write("O", align="center",font=("Arial", 75)) if randomY == 2 and randomX == 0: drawer.penup() drawer.goto(-100,-160) drawer.pendown() drawer.write("O", align="center",font=("Arial", 75)) if randomY == 2 and randomX == 1: drawer.penup() drawer.goto(0,-160) drawer.pendown() drawer.write("O", align="center",font=("Arial", 75)) if randomY == 2 and randomX == 2: drawer.penup() drawer.goto(100,-160) drawer.pendown() drawer.write("O", align="center",font=("Arial", 75)) [/code] [code] topleftsquare = Turtle()
def top_right_square(x,y): global place global turn toprightsquare.penup() toprightsquare.pendown() toprightsquare.penup() drawer = Turtle() drawer.speed("fastest") drawer.hideturtle() drawer.penup() drawer.goto(100,40) drawer.pendown() drawer.write("X", align="center",font=("Arial", 75)) place = 3 print(place) row = (place - 1) // 3 column = (place - 1) % 3 board[row][column] = "X" print("\n") printBoard() print("\n") win = checkWin() turn = "O"
def middle_left_square(x,y): global place global turn middleleftsquare.penup() middleleftsquare.pendown() middleleftsquare.penup() drawer = Turtle() drawer.speed("fastest") drawer.hideturtle() drawer.penup() drawer.goto(-100,-60) drawer.pendown() drawer.write("X", align="center",font=("Arial", 75)) place = 4 row = (place - 1) // 3 column = (place - 1) % 3 board[row][column] = "X" print("\n") printBoard() print("\n") win = checkWin() turn = "O"
def middle_middle_square(x,y): global place global turn middlemiddlesquare.penup() middlemiddlesquare.pendown() middlemiddlesquare.penup() drawer = Turtle() drawer.speed("fastest") drawer.hideturtle() drawer.penup() drawer.goto(0,-60) drawer.pendown() drawer.write("X", align="center",font=("Arial", 75)) place = 5 row = (place - 1) // 3 column = (place - 1) % 3 board[row][column] = "X" print("\n") printBoard() print("\n") win = checkWin() turn = "O"
def middle_right_square(x,y): global place global turn middlerightsquare.penup() middlerightsquare.pendown() middlerightsquare.penup() drawer = Turtle() drawer.speed("fastest") drawer.hideturtle() drawer.penup() drawer.goto(100,-60) drawer.pendown() drawer.write("X", align="center",font=("Arial", 75)) place = 6 row = (place - 1) // 3 column = (place - 1) % 3 board[row][column] = "X" print("\n") printBoard() print("\n") win = checkWin() turn = "O"
def bottom_left_square(x,y): global place global turn bottomleftsquare.penup() bottomleftsquare.pendown() bottomleftsquare.penup() drawer = Turtle() drawer.speed("fastest") drawer.hideturtle() drawer.penup() drawer.goto(-100,-160) drawer.pendown() drawer.write("X", align="center",font=("Arial", 75)) place = 7 row = (place - 1) // 3 column = (place - 1) % 3 board[row][column] = "X" print("\n") printBoard() print("\n") win = checkWin() turn = "O"
def bottom_middle_square(x,y): global place global turn bottommiddlesquare.penup() bottommiddlesquare.pendown() bottommiddlesquare.penup() drawer = Turtle() drawer.speed("fastest") drawer.hideturtle() drawer.penup() drawer.goto(0,-160) drawer.pendown() drawer.write("X", align="center",font=("Arial", 75)) place = 8 row = (place - 1) // 3 column = (place - 1) % 3 board[row][column] = "X" print("\n") printBoard() print("\n") win = checkWin() turn = "O"
def bottom_right_square(x,y): global place global turn bottomrightsquare.penup() bottomrightsquare.pendown() bottomrightsquare.penup() drawer = Turtle() drawer.speed("fastest") drawer.hideturtle() drawer.penup() drawer.goto(100,-160) drawer.pendown() drawer.write("X", align="center",font=("Arial", 75)) place = 9 row = (place - 1) // 3 column = (place - 1) % 3 board[row][column] = "X" print("\n") printBoard() print("\n") win = checkWin() turn = "O"
while playAgain == "y" and multiplayer == 1: try: global place global turn print("\n") printTurtleBoard() turn = "X" print(turn) while turn == "X": topleftsquare.onclick(top_left_square) topmiddlesquare.onclick(top_middle_square) toprightsquare.onclick(top_right_square) middleleftsquare.onclick(middle_left_square) middlemiddlesquare.onclick(middle_middle_square) middlerightsquare.onclick(middle_right_square) bottomleftsquare.onclick(bottom_left_square) bottommiddlesquare.onclick(bottom_middle_square) bottomrightsquare.onclick(bottom_right_square) win = checkWin() if win == 1 or win == 2 or win == 3: play_again()
if turn == "O": counter += 1 print("Turns counted: ", counter) print("\n") printBoard() print("\n") computer() win = checkWin() if win == 1 or win == 2 or win == 3: play_again() #runs the play_again() function global letterO letterO() printBoard() [/code] Извините, это очень длинно, но я не знал другого способа получить помощь по вопросу, не публикуя весь этот код. Я попробовал дать черепахе имя в функции printTurtleBoard(), чтобы посмотреть, решит ли это что-нибудь, но та же проблема осталась