diff --git a/mod_graph/maze.py b/mod_graph/maze.py index 31a48aa..832bcef 100644 --- a/mod_graph/maze.py +++ b/mod_graph/maze.py @@ -1,4 +1,22 @@ -import graph +""" + Создание лабиринтов в игре + https://stepik.org/lesson/502494/step/3?unit=494196 + + Задача: + Сделайте "догонялку" в лабиринте. Придумайте дизайн лабиринта, рисунки для стенки и проходов. Через стенки Ваш герой не должен + передвигаться. + + Решение: + Игра за призрака, нужно из входа в лабиринт "догнать" выход. + Управление стрелками и WASD, выход по Esc или Q. + Чтобы пройти игру, нужно дойти до выхода. + + Картинки захардкожены прямо в скрипт. + Зависимости: graph pillow + + Библиотека graph: https://kpolyakov.spb.ru/download/pygraph.zip +""" + from graph import * import PIL import os @@ -13,13 +31,6 @@ import zlib from random import randrange, choice -consts = types.SimpleNamespace() -consts.VK_Q = 81 -consts.VK_W = 87 -consts.VK_A = 65 -consts.VK_S = 83 -consts.VK_D = 68 - # объявление переменные для хранения картинок HARDCODED_DATA: bytes @@ -120,7 +131,8 @@ def make_level(scene_sz, hard): data["last_right"] = data["right"] # отрисовка движения if data["hero_moved"]: - moveObjectTo(data["hero"], *data["hero_pos"].transform(box_sz)) + new_pos = data["hero_pos"].transform(box_sz) + moveObjectTo(data["hero"], *new_pos) data["hero_moved"] = False # конец лабиринта|игры / победа if data["finished"]: @@ -159,18 +171,18 @@ def move_hero(data, delta): def keyPressed(event): delta = None - match event.keycode: - case graph.VK_LEFT: + match event.keysym: + case "Left" | "a": delta = Point(-1, 0) data["right"] = False - case graph.VK_RIGHT: + case "Right" | "d": delta = Point(1, 0) data["right"] = True - case graph.VK_UP: + case "Up" | "w": delta = Point(0, -1) - case graph.VK_DOWN: + case "Down" | "s": delta = Point(0, 1) - case consts.VK_Q | graph.VK_ESCAPE: + case "Escape" | "q": killTimer(data["update_timer"]) close() if delta is not None: