Ruby中更复杂的终端I / O.

时间:2011-08-12 05:10:02

标签: ruby io terminal roguelike

我正在尝试制作一个使用Ruby在终端内运行的粗略游戏,但我不确定如何去做。我希望能够分别在标准的80 * 24终端窗口中寻址和更新每个单元。我可以使用标准库来执行此操作,或者我可以使用任何好的宝石吗?

2 个答案:

答案 0 :(得分:1)

您可以使用Gosu

您可以在ruby toolbox - game libraries找到更多替代方案。

我假设您正在使用Linux。对于操作终端,您将需要Ruby的ncurses库绑定。 See ncurses-ruby

文档很少,但this github repository有很多例子。

答案 1 :(得分:1)

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