ruby - 如何从终端 unsig ruby 中的文本背景中删除颜色?
问题描述
我正在用 ruby 实现一个 TIC TAC TOE 游戏。我希望用户能够通过使用键盘的箭头来选择他想要放置十字架的方格。因此,我必须为他进入的方格着色(使用宝石“粉彩”),以便他知道自己的位置。
到目前为止,我已经使用了这部分代码:
@position = 0
@pastel = Pastel.new
@board = Board.new
def self.show_single_key
c = self.read_char
case c
when "\r"
puts "RETURN"
when "\e[A"
@position > 5 ? @position : @position -= 3
when "\e[B"
@position < 3 ? @position : @position += 3
when "\e[C"
@position == 8 ? @position : @position += 1
when "\e[D"
@position == 0 ? @position : @position -= 1
end
p @position
$cases[@position].value = @pastel.on_green($cases[@position].value)
$cases[@position].value = $cases[@position].value
@board.print_board
end
结果是:这个
你能帮我弄清楚我是如何把绿色方块变成原来的黑色状态的吗?
谢谢您的帮助
解决方案
您需要“重新绘制”整个游戏。或受影响的线路(至少)。这样,您可以用白色(或任何其他颜色)绘制“非活动”字段,将活动字段绘制为绿色。你不能改变颜色。检查可用的“进度条”宝石之一。比如这个——https: //github.com/paul/progress_bar/blob/master/lib/progress_bar.rb
在这里您可以找到更多想法在控制台中打印 ASCII 旋转“光标”
推荐阅读
- ruby - ruby restclient timeout 无法正常工作,它在定义的超时时间加倍后抛出异常
- excel - 为什么遵循相同初始化机制的 2 个用户表单表现不同?
- java - 阻止 Eclipse 自动插入分号
- mule - XML to Object MULE 具有相同名称的重复节点
- android - 从 Canvas 绘图时不反映 Webview 的编程滚动
- c# - 如何通过将字符串转换为 System.Web.HttpPostedFileBase 将图像保存在数据库中
- javascript - 获取 JSON 对象元素的数量
- java - Spring Data 从 Vault 或其他受保护的源读取 MongoDB 密码
- database - 了解如何填充 MS Access 2013 中的特定表
- finance - 输入和输出消息的 Swift 应用程序标头标准格式