Прокрутка кости в быстром с использованием функции while и печать результатов, пока результат не станет 1 - PullRequest
2 голосов
/ 30 сентября 2019

Я действительно новичок в Swift, и у меня есть задача попросить меня создать цикл while, который имитирует многократное вращение 6-гранных кубиков, пока не выпадет 1. После каждого рулона выведите значение.

Практически на каждой итерации, которую я пробовал в течение последних 2 часов, я продолжаю заканчивать бесконечным циклом, который взрывает XCode.

Любая помощь будет фантастической!

var dieRoll = Int.random(in: 1...6)

while dieRoll <= 6 {
    print (dieRoll)
    if dieRoll == 1 {
        print ("You win!")
    }
}

Дошло до этого, он больше не работает бесконечно, но действует странно и возвращает значения 1 без вывода «You win!»

func dieRoll(x: Int) -> Int {
    return Int.random(in:1...6)
}

while dieRoll(x: 0) > 1 {
    print(dieRoll(x: 0))
    if dieRoll(x: 1) == 1 {
        print("You win!")
    }
    else {
        RETURN
    }
}

Ответы [ 2 ]

0 голосов
/ 30 сентября 2019

Хорошо, поэтому я отошел от строкового текста и сосредоточился на том, что говорит код, а не на том, что говорил мой набор текста. Закончилось этим (вероятно, чудовищно для вас, опытные люди), но это выглядит примерно так.

var rolling = Int.random(in: 1...6)

while rolling > 1 {
    print(rolling)
    if rolling == 1 {
        break
    } else {
        rolling = Int.random(in: 1...6)
    }
}
print(rolling)

И каждый раз, когда я запускаю его, он заканчивается на 1, поэтому он делает то, что ему нужно!

0 голосов
/ 30 сентября 2019

Ваша переменная dieRoll объявлена ​​как переменная, но вы никогда не меняете ее! Попробуйте «перемотать» в цикле while

Кроме того, всегда есть вероятность, что 6 никогда не выпадет ... ИДК, если вы хотите возиться с «реальными» вероятностями, но если вы находите проблемы, вы можете захотетьустановить «максимальное количество бросков» ... лично я бы не стал, но эй, вы никогда не знаете

TDLR: последняя строка цикла while должна перебрасывать ваш dieRoll var

...