Консольная игра “Отгадай число” на Swift

Домашняя работа к главе 20

Задание 1

Доработайте программу “Угадай число” так, чтобы после окончания каждого раунда программа спрашивала у пользователя о необходимости проведения нового раунда (без необходимости перезагрузки программы)

Правильный ответ

// переменная определяет, делать ли следующий раунд в игре
var isDoNextRound: Bool = false

repeat {
    // стартуем очередной раунд игры
    doGameRound()
    
    // проверка проведения следующего раунда
    print("Продолжим играть? Y/y")
    if let answerNextRound = readLine(), ["Y","y"].contains(answerNextRound) {
        isDoNextRound = true
    }
} while isDoNextRound == true

func doGameRound() {
    // генерируем случайное число
    let randomNumbersArray: [UInt8] = Array(1...50)
    let randomNumber: UInt8 = randomNumbersArray.randomElement()!
    print("Компьютер случайный образом загадал число в диапазоне от \(randomNumbersArray.first!) до \(randomNumbersArray.last!). Вам требуется отгадать его.")
    // указатель на корректный ответ
    var isCorrect = false
    repeat {
        print("Введите ваш вариант и нажмите Enter")
        // ответ пользователя
        let userNumberFromConsole = readLine()
        // проверка корректности ответа пользователя
        // тут обрабатывается ввод букв вместо цифр и пустой строки
        guard let tmpUserNumber = userNumberFromConsole,
                let userNumber = UInt8(tmpUserNumber) else {
            print("Вы ввели некорректное число")
            continue
        }
        // проверка введенного ответа и загаданного числа
        if (userNumber == randomNumber) {
            print("Вы угадали!")
            isCorrect = true
        } else if (userNumber < randomNumber) {
            print("Ваш вариант МЕНЬШЕ загаданного числа")
        } else if (userNumber > randomNumber) {
            print("Ваш вариант БОЛЬШЕ загаданного числа")
        }
    } while !isCorrect
}

Другие варианты решения

Скачать вариант решения от Ивана Власова

2 Comments

  1. Alekschatov:

    print(“Компьютер случайным образом загадал число. Вам требуется отгадать его.”) // словарь сообщенийlet message = [    “start”:”Введите вариант числа и нажмите Enter”, “more”:”Ваш вариант больше загаданного числа”, “less”:”Ваш вариант меньше загаданного числа”, “win”:”Вы угадали число!”, “question”: “Продолжаем? yes/no”, “end”: “Игра окончена”] let randomNumber = String(arc4random_uniform(50))// введенное пользователем числоvar userNumber: String = “”var userAnswer: String = “”// цикл проверкиrepeat {    print(message[“start”]!)    //получение числа    let myNumber = readLine()    userNumber = myNumber ?? “”    if userNumber < randomNumber{    print(message[“less”]!)        }else if userNumber > randomNumber{    print(message[“more”]!)    }    print(message[“question”]!)    let myAnswer = readLine()    userAnswer = myAnswer ?? “”    guard userAnswer == “yes” else {        break }} while userNumber != randomNumber || userAnswer == “no” if userNumber == randomNumber {    print(message[“win”]!)} else {    print(message[“end”]!) }

    • Alekschatov:

      print(“Компьютер случайным образом загадал число. Вам требуется отгадать его.”)// словарь сообщенийlet message = [    “start”:”Введите вариант числа и нажмите Enter”, “more”:”Ваш вариант больше загаданного числа”, “less”:”Ваш вариант меньше загаданного числа”, “win”:”Вы угадали число!”, “question”: “Продолжаем? yes/no”, “end”: “Игра окончена”]let randomNumber = String(arc4random_uniform(50))// введенное пользователем числоvar userNumber: String = “”var userAnswer: String = “”// цикл проверкиrepeat {    print(message[“start”]!)    //получение числа    let myNumber = readLine()    userNumber = myNumber ?? “”    if userNumber < randomNumber{    print(message[“less”]!)        }else if userNumber > randomNumber{    print(message[“more”]!)    }    print(message[“question”]!)    let myAnswer = readLine()    userAnswer = myAnswer ?? “”    guard userAnswer == “yes” else {        break }} while userNumber != randomNumber || userAnswer == “no” if userNumber == randomNumber {    print(message[“win”]!)} else {    print(message[“end”]!) }извиняюсь, если опять криво отформатируется

Добавить комментарий