На этом шаге мы приведем несколько практических заданий с возможными решениями.
Здесь мы предлагаем вам выполнить несколько заданий, направленных на закрепление изученного материала.
Задание 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()
Цвет ауры определяется согласно следующим правилам:
Значение кармы | Цвет ауры |
---|---|
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!
Раскрыть/скрыть решение и комментарии.
Со следующего шага мы начнем рассматривать функции.