#python
#питон
Вопрос:
У меня возникли проблемы с созданием специальной доски для игры в крестики-нолики на Python, и я надеюсь, что один из вас мог бы помочь мне найти, что не так. Я хочу иметь возможность выбирать между тремя разными платами, но для меня работает только код для одной платы.
Я пытаюсь создать программу игры в крестики-нолики на python, где только компьютер будет выполнять ходы, т. Е. Он будет играть против самого себя. Моей первой задачей было создать пустую доску, и мне удалось сделать это с помощью следующего кода: (этот код также печатается на доске)
import numpy as np
def create_board():
return(np.array([[0, 0, 0],
[0, 0, 0],
[0, 0, 0]]))
Но потом я захотел, чтобы программа могла выполнять крестики-нолики на трех досках разного размера (3×3, 5×5 и 7×7), поэтому я переделал код и создал функцию main() с функцией input(), которая запрашивает желаемый размер. Однако этот выводит только число, которое я выбрал в своем вводе (), например 3, а не доску. Что я делаю не так? Мой переработанный код для этого таков:
import numpy as np
def create_board(board):
if board == 3:
return np.array([[0, 0, 0],
[0, 0, 0],
[0, 0, 0]])
if board == 5:
return np.array([[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]])
if board == 7:
return np.array([[0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0]])
def main():
board = input("how big playing surface (3/5/7)? ")
Комментарии:
1. Смотрите Ответ Игнасио ниже, но также обратите внимание, что вы все еще сравниваете строку с целыми числами.
2. Вы на самом деле никогда не звонили
create_board
… А также почему бы не простоnp.zeros((board, board))
?3. Спасибо @JustinEzequiel , я также отредактировал ввод в int(input(….)), и теперь это тоже работает!
4. @Tomerikoo вы правы, я отредактировал код и использовал
np.zeros
вместо него, а также вызвалcreate_board
, теперь он отлично работает! Спасибо!
Ответ №1:
Вы не вызываете create_board
из main
. Итак, добавьте:
def main():
board = input("how big playing surface (3/5/7)? ")
create_board(board)
И вы могли бы переопределить create_board
как:
def create_board(n):
return np.zeros((n, n), dtype=int)
Предполагая, что вам нужна квадратная матрица нулей
Комментарии:
1. Спасибо, это все упростило! Однако для того, чтобы это сработало, мне пришлось добавить
return
к вызовуcreate_board
under main() .