首页 > 解决方案 > 创建基于控制台的文本游戏并且无法让光标将一行弹出到正确的位置(Ruby)

问题描述

编辑:使用 Paint gem。

所以我在我用 ruby​​ 制作的基于文本的游戏中重写了商店系统。我正在尝试在单行文本上添加多种颜色。我找到了一种可行的方法,但由于某种原因,第一个字符串(包括项目 ID 和项目名称)一直以 11 个字符连接。

每个项目值都是一个数组。value[0] 包含名称,依此类推。

这是为商店菜单绘制每个项目的代码:

shopbag.each { |id, value|
        if id != 0
          string1 = "(" + id.to_s + ")" + " " + value[0]; str1 = string1.size
          string2 = "ATTACK: #{value[1]}"; str2 = string2.size
          string3 = "SPEED: #{value[2]}"; str3 = string3.size
          pa string1; pa "\033[1A \033[#{str1}C #{string2}", :red, :bright; pa "\033[1A \033[#{str2}C #{string3}", :green, :bright
        end
      }

这是它的截图: shop bug(点击查看图片)

请注意,您可以在每个项目之前看到一个字符串大小,因为我在那里有一个打印行来验证大小是否正确。它不在我的代码片段中。如果它工作正常,它会在攻击和速度值之前显示全名。

标签: rubystringterminalconsole

解决方案


推荐阅读