Более сложный терминал ввода / вывода в Ruby - PullRequest
0 голосов
/ 12 августа 2011

Я пытаюсь создать игру в стиле ругели, которая запускается внутри терминала с использованием Ruby, но я не совсем уверен, как это сделать. Я хочу иметь возможность адресовать и обновлять каждую ячейку в стандартном окне терминала 80 * 24 в отдельности. Могу ли я сделать это со стандартной библиотекой или, альтернативно, есть ли хорошие камни, с которыми я мог бы сделать это?

Ответы [ 2 ]

1 голос
/ 22 марта 2017

Curses, вероятно, проще всего реализовать, и он широко доступен на разных платформах. Привязки Ruby раньше входили в стандартную библиотеку, но теперь это драгоценный камень: gem install curses. Вот пример из документов:

require "curses"

def show_message(message)
  height = 5
  width  = message.length + 6
  top    = (Curses.lines - height) / 2
  left   = (Curses.cols - width) / 2
  win = Curses::Window.new(height, width, top, left)
  win.box("|", "-")
  win.setpos(2, 3)
  win.addstr(message)
  win.refresh
  win.getch
  win.close
end

Curses.init_screen
begin
  Curses.crmode
  Curses.setpos((Curses.lines - 1) / 2, (Curses.cols - 11) / 2)
  Curses.addstr("Hit any key")
  Curses.refresh
  Curses.getch
  show_message("Hello, World!")
ensure
  Curses.close_screen
end
1 голос
/ 12 августа 2011

Вы можете использовать Gosu .

Вы можете найти больше альтернатив в ruby ​​toolbox - библиотеки игр .

Я предполагаю, что вы используете Linux. Для управления терминалом вам понадобятся привязки библиотеки ncurses для Ruby. См. Ncurses-ruby .

Документация скудна, но в этом репозитории github есть множество примеров .

...