Создание специальной доски для игры в крестики-нолики

#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() .