если я запустил код, он остановится и ничего не сделает, и я не смогу напечатать. представляется бесконечным циклом. проблема, кажется, заканчивается до цикла, однако, если я ее вытащу, мое условие не будет выполнено. может найти решение? Я пробовал все петли, о которых я могу думать.рубиновый код останавливается во время выполнения, казалось бы, бесконечный цикл
/. 2d array board ./
board = Array.new(10) { Array.new(10, 0) }
/. printing board ./
if board.count(5) != 5 && board.count(4) != 4 && board.count(3) != 3
for i in 0..9
for j in 0..9
board[i][j] = 0
end
end
aircraftcoord1 = (rand*10).floor
aircraftcoord2 = (rand 6).floor
aircraftalign = rand
if aircraftalign < 0.5
for i in 0..4
board[aircraftcoord2+i][aircraftcoord1] = 5
end
else
for i in 0..4
board[aircraftcoord1][aircraftcoord2+i] = 5
end
end
cruisercoord1 = (rand*10).floor
cruisercoord2 = (rand 7).floor
cruiseralign = rand
if cruiseralign < 0.5
for i in 0..3
board[cruisercoord2+i][cruisercoord1] = 4
end
else
for i in 0..3
board[cruisercoord1][cruisercoord2+i] = 4
end
end
destroyercoord1 = (rand*10).floor
destroyercoord2 = (rand 8).floor
destroyeralign = rand
if destroyeralign < 0.5
for i in 0..2
board[destroyercoord2+i][destroyercoord1] = 3
end
else
for i in 0..2
board[destroyercoord1][destroyercoord2+i] = 3
end
end
end until board.count(5) == 5 && board.count(4) == 4 && board.count(3) == 3
print " "
for i in 0..9
print i
end
puts
for i in 0..9
print i
for j in 0..9
print board[i][j]
end
puts
end
Не используйте 'end until ...'. Ваше состояние проверяется в открытии 'if'. Если вам понадобится цикл, используйте 'loop' и определите условие прерывания. В качестве стилистической вещи не используйте 'for', например' for i в 0..4', вместо этого используйте '5.times do | i |'. Кроме того, мы комментируем код, используя '#'. –