配列値が塗りつぶされた配列値に隣接していて空の場合、配列値を選択する方法を理解しようとしています。
では、配列が参照するグリッドがそのようにレイアウトされているとしましょう。
a1,a2,a3,
b1,b2,b3,
c1,c2,c3
a1 が X を保持している場合、グリッドはそのようになります。
X,a2,a3,
b1,b2,b3,
c1,c2,c3
メソッドで隣接する配列値 (この場合は a2、b1、b2) を検出できるようにしたいと考えています。
しかし、この次のケースでは、O が中心値を保持しています。
X,a2,a3,
b1,O,b3,
c1,c2,c3
...メソッドは a2、b1 を選択します
誰でも解決策やヒントを提供できますか?
これは単純な三目並べのグリッドです
グリッドが存在するクラスを見てみましょう。
class Board
attr_reader :grid
def initialize(cell_value = " ")
@grid = {
a1: cell_value, a2: cell_value, a3: cell_value,
b1: cell_value, b2: cell_value, b3: cell_value,
c1: cell_value, c2: cell_value, c3: cell_value
}
end
def printgrid
board = "\n"
board << "a #{@grid[:a1]}|#{@grid[:a2]}|#{@grid[:a3]} \n"
board << "----------\n"
board << "b #{@grid[:b1]}|#{@grid[:b2]}|#{@grid[:b3]} \n"
board << "----------\n"
board << "c #{@grid[:c1]}|#{@grid[:c2]}|#{@grid[:c3]} \n"
board << "----------\n"
board << " 1 2 3\n"
end
def space_taken?(cell_location)
cell_value = cell_location
@grid[cell_value] != " "
end
end