Перейти к содержанию

🗒 Задача

В приложении шахматы, ходы отправляются на сервер в виде строки формата [откуда-куда;номер хода]. Игрок начал партию ходом из E2 в E4. Все данные (откуда, куда, номер хода) инициализировать и хранить в отдельных переменных.

  • Напиши код, который сформирует строку для отправки, а затем выведет ее в консоль. Нужно "собрать" единую строку из объявленных переменных и сохранить в новую переменную (или сразу распечатывать).

  • Далее этим переменным нужно присвоить новые данные и вывести в консоль следующий ход белых. Определить, какое значение будет в переменной "куда" для фигуры, стоящей на D2 и продвинувшейся на одну клетку вперед.

❌ Ошибки

  • не соблюдение формата созданной строки для сервера

  • делают локальные функции

✏️ Комментарии

Обращаю внимание на пример строки для отправки на сервер [откуда-куда;номер хода]
В условии не случайно уточнен выводимый формат. Если формат готовой строки будет отличаться, то сервер не сможет ее распарсить и программа может упасть/не работать итд.
Предлагаю привести формат в соответствие с форматов в ТЗ)
Тут можно использовать операцию постфиксного инкремента
Формат вывода не по условию)
Будь внимательнее к требованиям.
В реальных проектах, даже если тебе кажется что правильно по-твоему, лучше сделать как в требованиях.
В идеале, кончено, на этапе получения задачки от заказчика нужно уточнить корректность, но в нашем случае необязательно, так как ошибки нам только на пользу.
Все эти индексы в названии - плохой тон. Лучше использовать более релевантные названия, чтобы было сразу понятно принадлежность переменной)
Делать локальные функции в целом не грубая ошибка. Однако читаемость кода ухудшается, все таки функции призваны вынести логику из основного кода. А так получается что все в кучу
Создание класса и объекта не целесообразно для данной задачи. есть ряд причин. из основных это то, что MoveCount это не сущность с разными свойствами и действиями. его создание противоречит концепции ООП и требует больших затрат ресурсов. держим в уме, что это часть гипотетической программы по взаимодействию с сервером

Для возможности все таки иметь счетчик внутри getChessMove(), предлагаю в мейне объявить обычную переменную счетчика, передавать ее в функцию как параметр, затем инкрементить
Круглые скобки не нужны - на функциональность никак не влияют

🧾 Решение

fun main() {
    var from = "E2"
    var where = "E4"
    var moveNumber = 1

    println("$from-$where;$moveNumber")

    from = "D2"
    where = "D3"
    moveNumber++

    println("$from-$where;$moveNumber")
}
fun main() {
    var moveFrom = "E2"
    var moveTo = "E4"
    var moveNumber = 1

    val moveString = "[$moveFrom-$moveTo;$moveNumber]"

    println("Первый ход: $moveString")

    moveFrom = "D2"
    moveTo = "D3"
    moveNumber = 2

    val newMoveString = "[$moveFrom-$moveTo;$moveNumber]"

    println("Второй ход: $newMoveString")
}