- d - движение вправо
- a - джижение влево
- w - движение вверх по лестнице
- s - движение вниз по лестнице
- L_SHIFT - ускорение
- SPACE - прыжок
- ESC - пауза
">" - враг который будет двигаться вправо
"<" - враг который будет двигаться влево
"@" - основной игрок
Названия файлов без расширения из папки data/textures/tiles можно указывать в построении уровня. Имя файла будет соответствовать изображению
Пример:
На месте символа "a" на уровне нарисуется изображение:
"!" - blade.png
"$" - bush1.png
"%" - bush2.png
"^" - button.png
":" - cell.png
"&" - door.png
"=" - key.png
"+" - coin.png
"|" - crystal.png
"1" - flower1.png
"2" - flower2.png
"3" - flower3.png
"4" - flower4.png
"5" - flower5.png
"6" - heart.png
"7" - box1.png
"8" - box2.png
"9" - tree1.png
"0" - tree2.png
"*" - pointer.png
" " или "#" - пустое место уровня
"/" - Невидимая стена для врага
"\" - Невидимая стена для игрока
"'" - thorns1.png
""" - thorns2.png
"," - stairs.png
"-" - scarecrow.png
Внутри функции select_level
необходино создать экземпляр SelectLevelSprite(center_x, center_y, number_level)
Далее нобходимо создать файл с именем состоящим из номера уровня с расширением .lvl в папке data/levels
Для удобства вы можете сразу загружать уровень.
Для этого достаточно закоментировать строку 1207 player, level = menu.show()
, создать уровень level = Level(number_level)
и начать его генерацию player = level.generate()
Пример:
# player, level = menu.show()
level = Level(1)
player = level.generate()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
terminate()...
Изменить поведение разных объектов уровня можно при помощи словаря GAME_OBJECTS_DICT
.
Ключ является символом, который прописывается на место спрайта в файле уровня.
Значение состоит из нескольких элементов:
- Название файла из папки data/textures/elements
- Словарь с его свойствами:
- COLLIDED: Будет ли распозноваться пересечение объекта с персонажами
- COLLIDED_DO_KILL: Смерть при столкновении (только при актовном первом пункте), отностися только к игроку
- COLLIDED_PLAYER: Будет ли игрок сталкиваться с данным объектом (только при актовном первом пункте)
- COLLIDED_ENEMY: Будет ли враг сталкиваться с данным объектом (только при актовном первом пункте)
- SIZE: Кортеж состоящий из ширины и высоты объекта в пикселях
Если не указывать некоторые или все параметры, то значения по умолчанию будут следующие:
- COLLIDED: False
- COLLIDED_DO_KILL: False
- COLLIDED_PLAYER: False
- COLLIDED_ENEMY: False
- SIZE: (48, 48)
Пример:
'!': ('blade.png', {COLLIDED: True, COLLIDED_DO_KILL: True, COLLIDED_PLAYER: True, COLLIDED_ENEMY: False, SIZE: (48, 96)})
Примачаие:
Объекты которые имеют специальное назначение. Менять их поведение не рекомендуется
- "6" (heart.png) - дополнительная жизнь
- "*" (pointer.png) - чек-поинт
- "^" (button.png) - платформа для прыжка (батут)
- "=" (key.png) - квестовый ключ
- "&" (door.png) - дверь конца уровня
- "+" (coin.png) - монета которую можно забрать
- "|" (crystal.png) - кристалл который можно забрать
- "," (stairs.png) - лестница
Вы можете доавлять свои собственные объекты с тексурами. Для этого необходимо в папку data/textures/elements
добавить изображение в формате .png и добавить его описание в словарь GAME_OBJECTS_DICT
.
Документация по пользованию словарем в пункте "Изменение поведения разных объектов"
- На уровне может быть только один игрок
- На уровня обязательно должны присутствовать дверь("&" (door.png)) и ключ ("=" (key.png))
- Спрайт врага не начнет двигаться до тех пор, пока его не захватит камера
- Основной размер всех объектов уровня равен 48x48 px
- Чем меньше на уровне объектов, там быстрее загрузится уровень