2017-02-09 1 views
0

저는 초보자이며 정말로이 문제를 고집합니다. "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 

답변

0

배열 iInteger 구성되어 있기 때문에 i.include?(@input) 결코 true을 반환하는 방법, 그리고 @inputString이다. 무슨 일이 일어나고 있는지의

:

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

를 설정할 때 Integer@input을 변환 할 수 있습니다, 그것이 작동되도록합니다.

또 하나 : @ JörgWMittag가 지적한 것처럼 to_i도 공백을 무시하므로 String#chomp이 필요하지 않습니다.

@input = gets.chomp 

과 :

그냥이 라인 교체

@input = gets.to_i 

을 그리고 그것은 작동합니다!

+0

'String # to_i'는 공백을 무시하고,'chomp' 할 필요가 없습니다. –

+0

효과가 있습니다! 너 락! – rstreet

+0

@ JörgWMittag 감사합니다. 귀하의 제안으로 답변을 편집했습니다. – mrlew

관련 문제