Ruby 中更复杂的终端 I/O

发布于 2024-11-28 23:40:56 字数 126 浏览 3 评论 0原文

我正在尝试使用 Ruby 制作一款在终端内运行的 Roguelike 游戏,但我不太确定如何去做。我希望能够单独寻址和更新标准 80*24 终端窗口中的每个单元格。我可以使用标准库来做到这一点,或者有什么好的宝石我可以用它来做到这一点吗?

I'm trying to make a rouguelike game that runs inside a terminal using Ruby but I'm not exactly sure how to go about doing that. I want to be able to address and update each cell in the standard 80*24 terminal window individually. Can I do this with the standard library or alternately are there any good gems I could do this with?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

热鲨 2024-12-05 23:40:56

Curses 可能是最容易实现的,并且可以跨平台广泛使用。 Ruby 绑定曾经作为标准库的一部分出现,但现在它是一个 gem:gem installcurses。这是文档中的示例:

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

Curses is probably the easiest to implement and it is widely available across platforms. Ruby bindings used to come as part of the standard library, but it's now a gem: gem install curses. Here's an example from the docs:

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
请你别敷衍 2024-12-05 23:40:56

您可以使用 Gosu

您可以在 ruby 工具箱 - 游戏库中找到更多替代方案。

我假设你使用的是linux。为了操作终端,您将需要 Ruby 的 ncurses 库绑定。 请参阅 ncurses-ruby

文档很少,但此 github 存储库中有很多示例。

You can use Gosu.

You can find more alternatives in ruby toolbox - game libraries.

I'm assuming you're using a linux. For manipulating the terminal you will need the ncurses library bindings for Ruby. See ncurses-ruby.

The documentation is sparse, but there are plenty of examples at this github repository.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文