用户输入未得到处理

时间:2017-02-09 02:29:50

标签: ruby user-input tic-tac-toe

我是新手,真的遇到了这个问题。 我需要匹配用户输入的数组元素替换为“X”。我究竟做错了什么?你能帮忙吗??谢谢!

class Round 

  def start 
    display_board
    pick
    refresh_board
  end

  #displays the board in the begining of the game
  def display_board
    @board = [[1,2,3],[4,5,6],[7,8,9]]
    @board.each do |i|
      puts i.join("|")
    end
  end

  def refresh_board
    @changed_board = []
    @board.each do |i|
      if i.include?(@input)
        r = i.index(@input)
        i[r] = "X"
        @changed_board << i
      else
        @changed_board << i
      end
    end

    @changed_board.each do |i|
      puts i.join("|")
    end
  end

 #player selects a number
  def pick
    puts "player1, select a number:"
    @input = gets.chomp
  end
end

round1 = Round.new 
round1.start

1 个答案:

答案 0 :(得分:0)

方法i.include?(@input)永远不会返回true,因为数组iInteger组成,而@inputString

这就是发生的事情:

[1,2,3].include?("1") #=> false

要使其有效,您可以在设置时将@input转换为Integer

另一件事:@JörgWMittag指出,你不需要String#chomp,因为to_i也会忽略空格。

只需替换此行:

@input = gets.chomp

使用:

@input = gets.to_i

它会起作用!