Я пытаюсь понять, почему мой цикл while не выходит, когда я этого хочу. В основном я делаю простую игру, в которой 2 игрока играют слова и получают очки в каждом раунде, если они играют разрешенное слово. Когда один игрок играет слово, которое заканчивается определенным персонажем, этот игрок теряет игру.Понимание Ruby While loops
Способ, которым я это сделал, задает значение false (перед циклом), а затем использует цикл while для продолжения игры до тех пор, пока игрок не войдет в проигрывающее слово, и в этот момент цикл должен немедленно выйти, без участия игрока 2 (который в данный момент он делает). Вот, по сути, что у меня есть сейчас (в данный момент я просто пытаюсь получить основную логику Собирается):
player1_count = 0
player2_count = 0
continue = true
while continue
## get input
if player1_input[-1] == losing_char
continue = false
else
player1_count += 1
end
##do the same for player 2
## get input
if player2_input[-1] == losing_char
continue = false
else
player2_count += 1
end
end
Вопрос, который я имею, что я ожидал, что когда продолжать был установлен false, цикл немедленно прекратится, а вместо этого он продолжит до конца текущего прогона в цикле, получив вход игрока 2 (если проигрыватель 1 проиграл), чего я не хочу. Я предполагаю, что либо у меня было неправильное представление о том, как петли работают в Ruby, либо я испортил где-то пишущий цикл/использовал его неправильно.
Есть ли способ написать цикл while, в котором он будет продолжаться, до тех пор, пока переменная продолжит. Значение переменной равно false, и пусть он сразу же уйдет, как я надеюсь?
Вы можете использовать более идиоматический 'цикл do' вместо' while true'. И я бы удалил 'else' и использовал модификатор - если вместо этого, то есть« break if player1_input [-1] == lose_char'. – Stefan
Действительно, это было бы более идиоматично, но я хотел сохранить его простым, поскольку OP кажется новым для рубинов –