这是我应该检查检查配对的方法。其中一部分工作不正常。虽然@board [] [] =元素在我尝试将“元素”(正在迭代的元素)更改为字符串时起作用,但没有任何反应。它保留了它的任何对象。是否无法使用.each?
更改正在迭代的元素@board[move[0]][move[1]] = element
element = " "
@board是一个数组数组,填充了字符串和棋子对象。如果check为true,则该方法应该迭代每个可能的移动以查看是否有任何中断检查。
def check_mate(color)
@board.each do |row|
row.each do |element|
if element == " "
elsif element.color != color
elsif element.possible_moves(@board).each do |move|
if check(color) == true
save_game
@board[move[0]][move[1]] = element
element = " "
display
if check(color) == true
load_game
elsif check(color) != true
return true
break
end
else return true
end
end
end
end
end
end
答案 0 :(得分:0)
您正在修改element
,它是行[]中对象的本地副本。我想你想修改row []。在迭代行时,您可以使用each_with_index
代替each
:
row.each_with_index do |element, index|
然后修改行中的元素:
row[index] = " "