56 lines
2.8 KiB
Markdown
56 lines
2.8 KiB
Markdown
|
|
# Домашнее задание №6
|
|||
|
|
|
|||
|
|
📗 В домашнем задании нужно упаковать данные игрока в структуру таким образом, чтобы ее размер был не более, чем 64 байта.
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
Представим, что мы разрабатываем игру и наша задача упаковать данные игрока в структуру таким образом, чтобы ее размер был не более, чем 64 байта (представим, что размер кэш линии на компьютерах будет 64 байта).
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
Данные пользователя:
|
|||
|
|
|
|||
|
|
Имя пользователя [0…42] символов латиницы
|
|||
|
|
|
|||
|
|
нельзя ссылаться на символы строки по указателю (нужно мапить символы строки в объект структуры, чтобы они находились рядом с другими данными)
|
|||
|
|
|
|||
|
|
Координата по оси X [-2_000_000_000…2_000_000_000] значений
|
|||
|
|
|
|||
|
|
Координата по оси Y [-2_000_000_000…2_000_000_000] значений
|
|||
|
|
|
|||
|
|
Координата по оси Z [-2_000_000_000…2_000_000_000] значений
|
|||
|
|
|
|||
|
|
Золото [0…2_000_000_000] значений
|
|||
|
|
|
|||
|
|
Магическая сила (мана) [0…1000] значений
|
|||
|
|
|
|||
|
|
Здоровье [0…1000] значений
|
|||
|
|
|
|||
|
|
Уважение [0…10] значений
|
|||
|
|
|
|||
|
|
Сила [0…10] значений
|
|||
|
|
|
|||
|
|
Опыт [0…10] значений
|
|||
|
|
|
|||
|
|
Уровень [0…10] значений
|
|||
|
|
|
|||
|
|
Есть ли у игрока дом [true/false] значения
|
|||
|
|
|
|||
|
|
Есть ли у игрока оружие [true/false] значения
|
|||
|
|
|
|||
|
|
Есть ли у игрока семья [true/false] значения
|
|||
|
|
|
|||
|
|
Тип игрока [строитель/кузнец/воин] значения
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
Чтобы успешно справиться с заданием - вам потребуется вспомнить темы выравнивания структур данных и побитовых операций.
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
📌 Для выполнения домашнего задания подготовлен шаблон кода и основные тесты, которую помогут проверить корректность реализации конвертации. Шаблона доступен по ссылке.
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
###Задание со звездочкой
|
|||
|
|
Выполнять необязательно, но если вы уже знакомы c рефлексией в Go, то попробуйте реализовать сериализацию этой структуры данных в YAML, XML или JSON формат с использованием тегов структур.
|