Небольшое резюме кода, над которым я работаю, - это несколько игр с командной строкой, которые наследуют от игрового класса, который поставляет методы и атрибуты, используемые большинством игр в командной строке, то есть панель, меню конфигурации, check_for_winner , игровой цикл и т. д. Вместо того, чтобы предлагать пользователю вводить пробел с помощью gets, я создал плату и меню для взаимодействия с клавишами со стрелками и отображения выделения по выбранному в данный момент параметру. Вместо того, чтобы переписывать все эти циклы для сбора ввода со стрелкой, не требуя нажатия клавиши возврата, я решил создать родительский класс игры, который будет запускать методы своего подкласса в игровом цикле. Ниже game_loop код я работаю сДобавление методов подкласса к игровому циклу родителей
def game_loop
display_main_menu if defined? display_main_menu
begin
space = @board.interact {|char| @quit = true if char == 'q'}
move(space) if defined? move
end until @quit || @winner != nil || (end_game if defined? end_game)
print %x{clear}
game_summary if defined? game_summary
puts "Play Again? y/n".center(80)
restart if defined? restart
game_loop if get_char == 'y'
end
Мой вопрос, есть ли лучший способ для меня, чтобы написать метод игры цикла вместо вызова методов, которые я ожидаю класс ребенка, чтобы иметь. Я хочу, чтобы игровой цикл, чтобы иметь базовую структуру игры, так и в псевдо-коде это будет
- дисплея главного меню, которые регулируют правила игр
- После того, как пользователь выбирает игру «Play "вариант, получить игрок двигаются
- Повторите шаг 2, пока победитель найден или нет больше движений
- Показать резюме в игре, то есть каждый игрок выигрыш, проигрыш, и рисует рассчитывать
- Попросите, чтобы играть снова, если не вернуться к выбору игры
Он работает так, как я его написал, но я считаю, что должен быть лучший способ структурировать игровой цикл, не проверяя, определены ли методы. Кроме того, наследование - хороший способ реализовать цикл игры или есть лучший способ, как сопоставление ключей в хэше методам дочернего класса.
Любая помощь приветствуется, благодарю вас всех заблаговременно.