# Global constants
X = "X" # cross
O = "O" # toe
EMPTY = "" # empty board
TIE = "DRAW" # draw state
NUMBER_SQUARES = 9 # number of fields on the board
Создает новую игровую доску - список из девяти элементов, равный EMPTY
и возвращает его
def new_playing_board
create_board = Array.new(NUMBER_SQUARES) { EMPTY }
end
board = new_playing_board
Функция берет доску и возвращает победителя игры. Могут быть возвращены четыре возможных значения: "X"
, "O"
- компьютер или человек, TIE
- если все поля заполнены, nil
- одно из полей пусто, а победитель не определен
def win_play(board)
WAYS_TO_WIN = [ # backtrace error: dynamic constant assignment WAYS_TO_WIN = [ rb:136
[0, 1, 2],
[3, 4, 5],
[6, 7, 8],
[0, 3, 6],
[1, 4, 7],
[2, 5, 8],
[0, 4, 8],
[2, 4, 6]
]
WAYS_TO_WIN.each do |row|
if (board[row[0]] == board[row[1]] && board[row[0]] == board[row[2]]) != EMPTY
winner = board[row[0]]
return winner
end
unless board.include?(EMPTY)
return TIE
end
end
return nil
end
win_play(board)
backtrace: динамическое присвоение констант WAYS_TO_WIN = [rb: 136