2014-12-21 4 views
0

если я запустил код, он остановится и ничего не сделает, и я не смогу напечатать. представляется бесконечным циклом. проблема, кажется, заканчивается до цикла, однако, если я ее вытащу, мое условие не будет выполнено. может найти решение? Я пробовал все петли, о которых я могу думать.рубиновый код останавливается во время выполнения, казалось бы, бесконечный цикл

/. 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   
+0

Не используйте 'end until ...'. Ваше состояние проверяется в открытии 'if'. Если вам понадобится цикл, используйте 'loop' и определите условие прерывания. В качестве стилистической вещи не используйте 'for', например' for i в 0..4', вместо этого используйте '5.times do | i |'. Кроме того, мы комментируем код, используя '#'. –

ответ

1

Линия board.count(5) == 5 ... никогда не будет так, потому что board это двумерный массив. Я не могу сказать, каково должно быть состояние, но это может выглядеть примерно так:

board[5].count(5) == 5 
Смежные вопросы