From 4ef2aea6eeac579f28c04d6b0bce300562dcc4f0 Mon Sep 17 00:00:00 2001
From: Dmitry <b4tm4n@mail.ru>
Date: Wed, 27 Mar 2024 16:55:45 +0300
Subject: [PATCH] upd maze

---
 mod_graph/maze.py | 42 +++++++++++++++++++++++++++---------------
 1 file changed, 27 insertions(+), 15 deletions(-)

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: