Реализуйте процедурную генерацию спрайтов 5x5 пикселей с помощью Matplotlib и функции imshow. Используйте свойство симметрии. Ниже показан пример генерации. Попробуйте увеличить разрешение спрайтов, поэкспериментируйте с другими вариантами симметрии, добавьте цвета.
Изобразите легендарную первую галактику из игры Elite (1984) с помощью Matplotlib. В этой игре целая вселенная описывалась с помощью всего трех чисел. Алгоритм процедурной генерации звезд, а точнее их расположений и имен, можно найти на этом сайте. Описание первой галактики можно найти здесь.
Ниже показан пример визуализации галактики.
Проанализируйте базу данных старых компьютерных игр.
С помощью графиков ответьте на следующие вопросы:
- Какие годы были самыми популярными с точки зрения выхода игр?
- Какие жанры были популярны в различные периоды времени?
Реализовать разбор двоичного формата данных. Данные начинаются с сигнатуры 0xa0 0x43 0x43 0x51 0x48, за которой следует структура A. Порядок байт: от младшего к старшему. Адреса указаны в виде смещений от начала данных. В решении предлагается использовать модуль struct.
Структура A:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint16) массива структур B |
2 | double |
3 | int64 |
4 | Размер (uint16) и адрес (uint16) массива char |
5 | uint64 |
6 | int16 |
7 | Адрес (uint16) структуры C |
8 | uint64 |
Структура B:
Поле | Описание |
---|---|
1 | uint32 |
2 | uint16 |
Структура C:
Поле | Описание |
---|---|
1 | Размер (uint16) и адрес (uint32) массива uint8 |
2 | uint64 |
3 | uint32 |
4 | Массив uint64, размер 5 |
5 | uint64 |
6 | Адрес (uint32) структуры D |
Структура D:
Поле | Описание |
---|---|
1 | uint16 |
2 | uint32 |
Ниже показаны примеры разбора двоичного формата.
Двоичные данные:
(b'OHTDJ\x00\x03\x001?\xd29r\x8e.k\xf0\xd0\xe1\xcdZ\x1c\xe6hb\x00\x06\x00'
b'C\x04\xbe)\xb8\xfb\x9d\xe5\x01*-\x00Q\xef\xa5K\xfd%\xf2\xd1aw{b'
b'\xa2\xc2\xc7\xb8Xt\xe0\r9\xa5\xe8\xbb\xd3\xf0\x05qrdhyh\x81\n\x8a?p\xe6L'
b'\x87\x00\x02\x00\x00\x00I\xd6\xce>\xf41 \x03$1x\x8f%p22f\xe1\xbcn\x8c\xdc'
b'\xf3\x13g\xb7\xcc\x85R|.\x7fj?\x82\xaeg\xe8o\\\xe3\xe9\xaf\xb16\xa6'
b'au\xc9\xf1\x82^\x98\x1e:\xfa/o\xca\xa8k\x00\x00\x00K')
Результат разбора:
{'A1': [{'B1': 2004574882, 'B2': 49863},
{'B1': 3092804832, 'B2': 3385},
{'B1': 2783493075, 'B2': 61445}],
'A2': 0.2847563160409541,
'A3': -3395206857145030558,
'A4': 'qrdhyh',
'A5': 341756496198886657,
'A6': 10797,
'A7': {'C1': [129, 10],
'C2': 15478378187836097316,
'C3': 829984549,
'C4': [8084579698538737292,
15921090443871028562,
8948229603940544103,
16748707673162101046,
11988993193237700248],
'C5': 2178328451433015403,
'C6': {'D1': 35391, 'D2': 1894141063}},
'A8': 17268291896857514337}
Двоичные данные:
(b'OHTDJ\x00\x02\x001\xbf\xe7,_\x182q\xfcI\xdd\xda\xec\t\x1d\xb2'
b'\x9c\x00\x06\x00=\x11\xa2A\xc3\xe8\xce\xf9#<G\x00K\xe80\x7f\x97\xe0v;'
b'\x1f\x17\xc1\xb6\x9dE>\x87\xdc\xf9\x1c\x83\xe1eclpwo-\xf8C\xeb\x90'
b'\xd1M\xc0\x00\x02\x00\x00\x00C\x18|#\x1c\xb8FP\xe6kjb\x90\xde+\xd0'
b'\x0c\xca\x86C\xa5\xff\xf2\xd9@\xc2QS;\xfb\x8dD\x1b\x15i\xae\x8e\xbe\xcf\x06'
b'~\xd2\xa9\x8dA\x9e\xf7\x9eO\xf4i\x1d\xef\x93\xcd\x89\xdd\xa0 \r'
b'\xcb\x00\x00\x00E')
Результат разбора:
{'A1': [{'B1': 398571165, 'B2': 17726}, {'B1': 2279405852, 'B2': 33761}],
'A2': -0.7241664383505504,
'A3': 5322651041921872540,
'A4': 'eclpwo',
'A5': 1270650354552207651,
'A6': 15431,
'A7': {'C1': [45, 248],
'C2': 1764323760280064230,
'C3': 1802134160,
'C4': [16009118053774541733,
18443042296196846395,
18126218958350167694,
13749215329155386689,
11454798243480280559],
'C5': 10650320278768324043,
'C6': {'D1': 17387, 'D2': 2429636032}},
'A8': 16731012905964026655}