Шаг 29.
Основы Kotlin.
Условные конструкции. Практические задания

    На этом шаге мы приведем несколько практических заданий с возможными решениями.

    Здесь мы предлагаем вам выполнить несколько заданий, направленных на закрепление изученного материала.

    Задание 1: пробуем интервалы

    Интервалы - мощный инструмент, и, немного попрактиковавшись, вы сочтете их синтаксис простым и понятным. Для выполнения этого простого задания откройте Kotlin REPL (Tools | Kotlin | REPL) и исследуйте синтаксис интервалов, включая функции toList(), downTo и until. Введите следующие интервалы один за другим. Прежде чем нажать Ctrl+Return, чтобы увидеть результат, попытайтесь его представить.

1 in 1..3 
(1..3).toList()
1 in 3 downTo 1
1 in 1 until 3 
3 in 1 until 3
2 in 1..3 
2 !in 1..3
'x' in 'a'..'z'

Раскрыть/скрыть решение и комментарии.

    Задание 2: вывод расширенной информации об ауре

    Прежде чем начать это или следующее задание, закройте NyetHack и создайте его копию. Вы внесете в свою программу изменения, которые не понадобятся в будущих версиях. Назовите копию NyetHack_ConditionalIsChallenges или как-нибудь по-другому. Мы советуем создавать копию программы перед каждым заданием во всех следующих шагах.

    На данный момент, если аура отображается, то она всегда будет зеленой. В этом задании сделаем так, чтобы цвет ауры отражал текущую карму игрока.

    Карма - это численное значение от 0 до 20. Для определения кармы игрока используем следующую формулу:

  val karma = (Math.pow(Math.random(), (110 - healthPoints) / 100.0)  * 20).toInt()

    Цвет ауры определяется согласно следующим правилам:

Таблица 1. Правила определения цвета ауры
Значение кармы Цвет ауры
0-5 red (красный)
6-10 orange (оранжевый)
11-15 purple (пурпурный)
16-20 green (зеленый)

    Определите значение кармы по формуле выше и выведите цвет ауры, используя условное выражение. Исправьте код отображения состояния игрока, чтобы он выводил цвет ауры, если она должна отображаться.

Раскрыть/скрыть решение и комментарии.

    Задание 3: настраиваемый формат строки состояния

    На данный момент состояние игрока выводится двумя функциями println(). Но нет переменной, хранящей полную информацию в виде одной строки. Код выглядит так:

    // Состояние игрока
    println("(Aura: $auraColor) " +
            "(Blessed:  ${if (isBlessed) "YES" else "NO"})")
    println("$name $healthStatus")
И создает следующий вывод:
  (Aura: GREEN) (Blessed: YES)
  Madrigal has some minor wounds but is healing quite quickly!

    В этом более сложном задании сделаем строку состояния настраиваемой с помощью шаблонной строки. Используйте символ B для обозначения благословения, А - для ауры, Н - для healthStatus, HP - для healthPoints. Например, шаблонная строка:

  val statusFormatString = "(HP)(A) -> H"
должна выводить состояние игрока как:
(HP: 100)(Aura: Green) -> Madrigal is in excellent condition!

Раскрыть/скрыть решение и комментарии.

    Со следующего шага мы начнем рассматривать функции.




Предыдущий шаг Содержание Следующий шаг