2011-01-29 7 views
1

boardwidth iは1x9アレイによって3×3行列をrepresend 3Rubyは、fixnumを配列に変換できませんか?それはアレイ

ある

試験:

test "the row checking to see if we have a winner (incorrect)" do 
    board = Board.new 

    board.state = [0,0,1,0,0,1,0,0,1] 
    assert false ==board.check_rows_for_winner 
    end 

関連するコード

@board_layout = [] 

def init_board 
    @board_layout = Array.new(@@board_width * @@board_width) 
    end 

    def state=(custom_board) 
    @board_layout = custom_board 
    end 


def check_rows_for_winner 
    self.width.times do |row| 
    if @board_layout.transpose[row].uniq.size == 1 then 
     return true 
    end 
    end 

    return false 
end 

エラー:

TypeError: can't convert Fixnum into Array 
    app/models/board.rb:39:in `transpose' 
    app/models/board.rb:39:in `check_rows_for_winner' 
    app/models/board.rb:38:in `times' 
    app/models/board.rb:38:in `check_rows_for_winner' 

答えて

2

@ array.tranposeを使用するためには、@配列は配列の配列である必要があります。通常の配列では、このエラーメッセージが表示されます。

編集:

board.state = [0,0,1,0,0,1,0,0,1] 

、あなたが

@board_layout.transpose[row] 

を行うときは、エラーメッセージが表示されます:あなたのテストで

あなたが@board_layoutのために次のことを設定しています。

関連する問題