首页 > 解决方案 > 如何从终端 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

结果是:这个

你能帮我弄清楚我是如何把绿色方块变成原来的黑色状态的吗?

谢谢您的帮助

标签: rubycolorsterminalbackground-colortic-tac-toe

解决方案


您需要“重新绘制”整个游戏。或受影响的线路(至少)。这样,您可以用白色(或任何其他颜色)绘制“非活动”字段,将活动字段绘制为绿色。你不能改变颜色。检查可用的“进度条”宝石之一。比如这个——https: //github.com/paul/progress_bar/blob/master/lib/progress_bar.rb

在这里您可以找到更多想法在控制台中打印 ASCII 旋转“光标”


推荐阅读