Помогите пожалуйста реализовать часть кода, что-то не выходит, не могу понять
Не реализовывается последняя функция X0()
pole =[[" "] * 3 for i in range(3)]
def hello(): #приветсвие
print("---")
print("Приветствую вас в игре Крестики - Нолики")
print("x - номер строки")
print("y - номер столбца")
print("---")
hello()
def field(): #ввод из консоли
print(f" 0 1 2")
for i in range(3):
print(f"{i} {pole[i][0]} {pole[i][1]} {pole[i][2]}")
field()
def pass_():
while True:
cords = (input("Ваш ход: ").split())
x, y = cords
if len(cords) != 2:
print("Неверное значение")
else:
if x.isdigit() and y.isdigit():
x, y = int(x), int(y)
if 0 <= x <= 2 and 0 <= y <= 2:
if pole[x][y] == " ":
return pole[x][y]
else:
print("Клетка занята")
else:
print("Неверные значения")
else:
print("Введите числа")
return cords
pass_()
def X0():
count = 2
for i in count:
if i % 2 != 0:
print("Введите Х!")
count += 1
else:
print("Введите 0!")
count += 1
X0(cords)
Ответы (1 шт):
Автор решения: M141
→ Ссылка
Вот возможное решение, если я правильно понял Ваш запрос. Немного подредактировал Ваши описания, так было удобнее при тестировании, при необходимости можете вернуть свои :)
Протестируйте. Все функции должны работать должным образом :)
def hello():
# Приветствие
print("---")
print("Приветствую вас в игре Крестики - Нолики")
print("x - номер строки")
print("y - номер столбца")
print("---")
def field():
# Вывод поля на консоль
print(f" 0 1 2")
for i in range(3):
print(f"{i} {pole[i][0]} {pole[i][1]} {pole[i][2]}")
def pass_():
# Получаем координаты хода от пользователя и возвращаем их,
# если введены неверные данные или клетка уже занята, - запрашиваем новые
while True:
cords = input("Ваш ход: ").split()
if len(cords) != 2:
raise ValueError("Вы должны ввести две координаты через пробел")
x, y = cords
if not (x.isdigit() and y.isdigit()):
print("Введите числа")
continue
x, y = int(x), int(y)
if not (0 <= x <= 2 and 0 <= y <= 2):
print("Неверные значения")
continue
if pole[x][y] != " ":
print("Клетка занята")
continue
return x, y
def X0():
# Ход игрока и выводит текущего состояние поля
count = 2
while True:
if count % 2 == 0:
symbol = "0"
else:
symbol = "X"
print(f"Ходит игрок {symbol}")
x, y = pass_()
pole[x][y] = symbol
field()
count += 1
pole =[[" "] * 3 for i in range(3)]
hello()
field()
while True:
try:
x, y = pass_()
pole[x][y] = "X"
field()
X0()
# здесь можно добавить код проверки на победу
# и прервать цикл, если игрок уже победил
except ValueError as e:
print(e)
else:
# аналогично
pass