【发布时间】:2011-10-25 12:51:04
【问题描述】:
我正在尝试使用 Ruby 制作一个在终端内运行的 roguelike 游戏,但我不确定如何去做。我希望能够单独处理和更新标准 80*24 终端窗口中的每个单元格。我可以使用标准库来做到这一点,还是有什么好的 gem 可以做到这一点?
【问题讨论】:
标签: ruby io terminal roguelike
我正在尝试使用 Ruby 制作一个在终端内运行的 roguelike 游戏,但我不确定如何去做。我希望能够单独处理和更新标准 80*24 终端窗口中的每个单元格。我可以使用标准库来做到这一点,还是有什么好的 gem 可以做到这一点?
【问题讨论】:
标签: ruby io terminal roguelike
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
【讨论】:
您可以使用Gosu。
您可以在ruby toolbox - game libraries找到更多替代方案。
我假设您使用的是 linux。要操作终端,您将需要 Ruby 的 ncurses 库绑定。 See ncurses-ruby.
文档很少,但this github repository 有很多示例。
【讨论】:
man ncurses 调出 Snow Leopard 的手册页。所以你应该没事。