Последние несколько дней я работал над проектом Tic-Tac-Toe, используя только Turtle Graphics. Мне нужно иметь 3 варианта игры; Пользователь против пользователя, Пользователь против компьютера и Компьютер против компьютера. Пока что процесс «Пользователь против пользователя» работает нормально. Кажется, я не могу заставить random.choice() правильно работать для пользователя и компьютера. Он либо не будет отображать букву «О», которую должен рисовать, либо рисует другую фигуру, когда это не требуется. Я еще не приступил к части «Компьютер против компьютера». Ниже мой код:
import time
import turtle
import random
screen = turtle.Screen()
turtle.pendown()
turn = 'x'
def setup_game():
turtle.penup()
turtle.speed(0)
turtle.goto(-200 ,200)
turtle.forward(100)
turtle.pendown()
turtle.right(90)
turtle.forward(300)
turtle.penup()
turtle.right(-90)
turtle.forward(100)
turtle.right(-90)
turtle.pendown()
turtle.forward(300)
turtle.penup()
turtle.goto(-200, 200)
turtle.right(180)
turtle.forward(100)
turtle.right(-90)
turtle.pendown()
turtle.forward(300)
turtle.penup()
turtle.right(90)
turtle.forward(100)
turtle.right(90)
turtle.pendown()
turtle.forward(300)
def draw_x (location):
if location == 0:
turtle.speed(2.5)
turtle.penup()
turtle.goto(-175,175)
turtle.pendown()
turtle.goto(-125,125)
turtle.penup()
turtle.goto(-125, 175)
turtle.pendown()
turtle.goto(-175, 125)
elif location == 1:
turtle.speed(2.5)
turtle.penup()
turtle.goto(-75,175)
turtle.pendown()
turtle.goto(-25,125)
turtle.penup()
turtle.goto(-25, 175)
turtle.pendown()
turtle.goto(-75, 125)
elif location == 2:
turtle.speed(2.5)
turtle.penup()
turtle.goto( 25,175)
turtle.pendown()
turtle.goto( 75,125)
turtle.penup()
turtle.goto(75, 175)
turtle.pendown()
turtle.goto(25, 125)
elif location == 3:
turtle.speed(2.5)
turtle.penup()
turtle.goto(-175, 75 )
turtle.pendown()
turtle.goto(-125,25)
turtle.penup()
turtle.goto(-125, 75)
turtle.pendown()
turtle.goto(-175, 25)
elif location == 4:
turtle.speed(2.5)
turtle.penup()
turtle.goto(-75,75)
turtle.pendown()
turtle.goto(-25,25)
turtle.penup()
turtle.goto(-25, 75)
turtle.pendown()
turtle.goto(-75, 25)
elif location == 5:
turtle.speed(2.5)
turtle.penup()
turtle.goto(25,75)
turtle.pendown()
turtle.goto(75,25)
turtle.penup()
turtle.goto(75, 75)
turtle.pendown()
turtle.goto(25, 25)
elif location == 6:
turtle.speed(2.5)
turtle.penup()
turtle.goto(-175,-25)
turtle.pendown()
turtle.goto(-125, -75)
turtle.penup()
turtle.goto(-125,-25)
turtle.pendown()
turtle.goto(-175, -75)
elif location == 7:
turtle.speed(2.5)
turtle.penup()
turtle.goto(-75,-25)
turtle.pendown()
turtle.goto(-25,-75)
turtle.penup()
turtle.goto(-25, -25)
turtle.pendown()
turtle.goto(-75, -75)
elif location == 8:
turtle.speed(2.5)
turtle.penup()
turtle.goto(25,-25)
turtle.pendown()
turtle.goto(75,-75)
turtle.penup()
turtle.goto(75, -25)
turtle.pendown()
turtle.goto(25, -75)
# def draw_o(location):
def draw_o (location):
if location == 0:
turtle.speed(2.5)
turtle.penup()
turtle.goto(-150, 175)
turtle.pendown()
turtle.circle(25)
if location == 1:
turtle.speed(2.5)
turtle.penup()
turtle.goto(-50, 175)
turtle.pendown()
turtle.circle(25)
if location == 2:
turtle.speed(2.5)
turtle.penup()
turtle.goto( 50, 175)
turtle.pendown()
turtle.circle(25)
if location == 3:
turtle.speed(2.5)
turtle.penup()
turtle.goto(-150, 75)
turtle.pendown()
turtle.circle(25)
if location == 4:
turtle.speed(2.5)
turtle.penup()
turtle.goto(-50, 75)
turtle.pendown()
turtle.circle(25)
if location == 5:
turtle.speed(2.5)
turtle.penup()
turtle.goto(50, 75)
turtle.pendown()
turtle.circle(25)
if location == 6:
turtle.speed(2.5)
turtle.penup()
turtle.goto(-150 ,-25)
turtle.pendown()
turtle.circle(25)
if location == 7:
turtle.speed(2.5)
turtle.penup()
turtle.goto(-50, -25)
turtle.pendown()
turtle.circle(25)
if location == 8:
turtle.speed(2.5)
turtle.penup()
turtle.goto(50, -25)
turtle.pendown()
turtle.circle(25)
def win_check():
# horizontal check
for i in range(0, 9, 3):
if (board[i] == board[i + 1] == board[i + 2]):
return True
# vertical check
for i in range(3):
if (board[i] == board[i + 3] == board[i + 6]):
return True
# diagonal check
if ((board[0] == board[4] == board[8]) or (board[2] == board[4] == board[6])):
return True
# user vs computer
def computer_move (move):
global board, turn, game, random
if board[move] >= 0 and board[move] 100)) or ((y > 200) or (y = 0:
move = 2
elif x >= -100:
move = 1
elif x >= -200:
move = 0
elif y < 100 and y >=0:
if x >= 0:
move = 5
elif x >= -100:
move = 4
elif x >= -200:
move = 3
elif y = -100:
if x >= 0:
move = 8
elif x >= -100:
move = 7
elif x >= -200:
move = 6
# draws
computer_move(move)
setup_game()
game = 'not over'
move = None
board = [0,1,2,3,4,5,6,7,8]
#Everytime this function is called, it passes xy coordinate into a function inside the parathensis.
screen.onscreenclick(which_square)
print('User 1, please click where you want to go. (You may have to click twice.)')
turtle.done()
Я включил функцию печати, чтобы показать выбор, который делают пользователь и компьютер, но она не всегда рисует букву «O» с компьютера, а иногда и перекрывается. «X», даже если на отпечатке не видно перекрытия и не допускается перекрытие.
Кроме того, я новичок в Python, работаю с ним только последние пару месяцев.
Последние несколько дней я работал над проектом Tic-Tac-Toe, используя только Turtle Graphics. Мне нужно иметь 3 варианта игры; Пользователь против пользователя, Пользователь против компьютера и Компьютер против компьютера. Пока что процесс «Пользователь против пользователя» работает нормально. Кажется, я не могу заставить random.choice() правильно работать для пользователя и компьютера. Он либо не будет отображать букву «О», которую должен рисовать, либо рисует другую фигуру, когда это не требуется. Я еще не приступил к части «Компьютер против компьютера». Ниже мой код:
if location == 3: turtle.speed(2.5) turtle.penup() turtle.goto(-150, 75) turtle.pendown() turtle.circle(25)
if location == 4: turtle.speed(2.5) turtle.penup() turtle.goto(-50, 75) turtle.pendown() turtle.circle(25)
if location == 5: turtle.speed(2.5) turtle.penup() turtle.goto(50, 75) turtle.pendown() turtle.circle(25)
if location == 6: turtle.speed(2.5) turtle.penup() turtle.goto(-150 ,-25) turtle.pendown() turtle.circle(25)
if location == 7: turtle.speed(2.5) turtle.penup() turtle.goto(-50, -25) turtle.pendown() turtle.circle(25)
if location == 8: turtle.speed(2.5) turtle.penup() turtle.goto(50, -25) turtle.pendown() turtle.circle(25)
def win_check(): # horizontal check for i in range(0, 9, 3): if (board[i] == board[i + 1] == board[i + 2]): return True
# vertical check for i in range(3): if (board[i] == board[i + 3] == board[i + 6]): return True
# diagonal check if ((board[0] == board[4] == board[8]) or (board[2] == board[4] == board[6])): return True
# user vs computer def computer_move (move):
global board, turn, game, random
if board[move] >= 0 and board[move] 100)) or ((y > 200) or (y = 0: move = 2 elif x >= -100: move = 1 elif x >= -200: move = 0
elif y < 100 and y >=0: if x >= 0: move = 5 elif x >= -100: move = 4 elif x >= -200: move = 3
elif y = -100: if x >= 0: move = 8 elif x >= -100: move = 7 elif x >= -200: move = 6
# draws computer_move(move)
setup_game()
game = 'not over' move = None board = [0,1,2,3,4,5,6,7,8]
#Everytime this function is called, it passes xy coordinate into a function inside the parathensis. screen.onscreenclick(which_square)
print('User 1, please click where you want to go. (You may have to click twice.)')
turtle.done() [/code]
Я включил функцию печати, чтобы показать выбор, который делают пользователь и компьютер, но она не всегда рисует букву «O» с компьютера, а иногда и перекрывается. «X», даже если на отпечатке не видно перекрытия и не допускается перекрытие.
Кроме того, я новичок в Python, работаю с ним только последние пару месяцев.
Последние несколько дней я работал над проектом Tic-Tac-Toe, используя только Turtle Graphics. Мне нужно иметь 3 варианта игры; Пользователь против пользователя, Пользователь против компьютера и Компьютер против компьютера. Пока что процесс...
Последние несколько дней я работал над проектом Tic-Tac-Toe, используя только Turtle Graphics. Мне нужно иметь 3 варианта игры; Пользователь против пользователя, Пользователь против компьютера и Компьютер против компьютера. Пока что процесс...
Вопрос: я разрабатываю 3D-игру «Крестики-нолики» на Java. Игра представляет собой сетку 4x4x4 с четырьмя слоями, расположенными друг над другом. Каждый «ключ» или ячейка связана с другими, образуя условия выигрыша.
Например:
В первом слое, если я...
В настоящее время я разрабатываю приложение на основе Swift для игры в крестики-нолики, и столкнулся с проблемой правильного расчета выигрышей при игре против компьютера.
В своем приложении я реализовал логику, позволяющую отслеживать количество...
Я работаю над игрой в крестики-нолики и столкнулся с проблемой, из-за которой знак «X» не отображается при первом щелчке на любом поле. После первого клика все работает корректно.