Игра Соедините четыре - PullRequest
       1

Игра Соедините четыре

0 голосов
/ 07 декабря 2018

В моем классе Ruby я создаю игру Connect Four, которую мой профессор будет запускать в командной строке.

Это должно быть сделано с двойным массивом и while циклами, а не break / exit / abort, loop do, классы, экземпляр или глобальные переменные.

Мой сеточный массив состоит из 64 '.' заполнителей во вложенном массиве.Я пытаюсь начать с нижнего ряда своей сетки 8x8 и добавить часть игрока: 'X' или '0'.

Я не уверен, как двигаться вверх от строки 8 / index 7в строку 7 / индекс 6, если нижний ряд столбца уже занят.Я использую операторы if или case?Должен ли я уменьшить строку?Я пытался вставить if / elsif, но у меня ничего не получилось.

def print_playing_grid (playing_board)
  puts "1 2 3 4 5 6 7 8"
  playing_board.each do |row|
    puts row.join(" ")
  end
end

print_playing_grid(grid_array)

# this 'win'/while is only here for testing so the board will repeat on screen
win = false
while win == false
  puts
  puts "Please select a column to make your move (Player X):"
  user_choice = gets.to_i
  row = 7
  column = user_choice - 1
  while row < grid_array.size
    grid_array[row][column] = 'X'
    row += 1
  end
  puts
  print_playing_grid(grid_array)
end

1 Ответ

0 голосов
/ 07 декабря 2018

Поскольку это только два условия (ячейка занята или нет), я бы с большей вероятностью использовал if, а не case ... Я бы использовал case для нескольких тестов, поскольку это может бытьнемного чище, чем if и elsif.

player_token = 'X'
row = grid_array.size - 1
column = user_choice - 1
while (grid_array.size - row) <= grid_array.size
  if grid_array[row][column] == '.'
    grid_array[row][column] = player_token
    row = -1 # (to exit the while loop)
  else
    row -= 1
  end
end

для примера, где я рассмотрел бы использование случая ...

player_token = 'X'
row = grid_array.size - 1
column = user_choice - 1
dropping_a_token = true
while dropping_a_token
  case 
  when row < 0
    dropping_a_token = false
  when grid_array[row][column] == '.'
    grid_array[row][column] = player_token
    dropping_a_token = false
  else
    row -= 1
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...