upd maze
This commit is contained in:
parent
51648955e9
commit
4ef2aea6ee
@ -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 *
|
from graph import *
|
||||||
import PIL
|
import PIL
|
||||||
import os
|
import os
|
||||||
@ -13,13 +31,6 @@ import zlib
|
|||||||
|
|
||||||
from random import randrange, choice
|
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
|
HARDCODED_DATA: bytes
|
||||||
|
|
||||||
@ -120,7 +131,8 @@ def make_level(scene_sz, hard):
|
|||||||
data["last_right"] = data["right"]
|
data["last_right"] = data["right"]
|
||||||
# отрисовка движения
|
# отрисовка движения
|
||||||
if data["hero_moved"]:
|
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
|
data["hero_moved"] = False
|
||||||
# конец лабиринта|игры / победа
|
# конец лабиринта|игры / победа
|
||||||
if data["finished"]:
|
if data["finished"]:
|
||||||
@ -159,18 +171,18 @@ def move_hero(data, delta):
|
|||||||
|
|
||||||
def keyPressed(event):
|
def keyPressed(event):
|
||||||
delta = None
|
delta = None
|
||||||
match event.keycode:
|
match event.keysym:
|
||||||
case graph.VK_LEFT:
|
case "Left" | "a":
|
||||||
delta = Point(-1, 0)
|
delta = Point(-1, 0)
|
||||||
data["right"] = False
|
data["right"] = False
|
||||||
case graph.VK_RIGHT:
|
case "Right" | "d":
|
||||||
delta = Point(1, 0)
|
delta = Point(1, 0)
|
||||||
data["right"] = True
|
data["right"] = True
|
||||||
case graph.VK_UP:
|
case "Up" | "w":
|
||||||
delta = Point(0, -1)
|
delta = Point(0, -1)
|
||||||
case graph.VK_DOWN:
|
case "Down" | "s":
|
||||||
delta = Point(0, 1)
|
delta = Point(0, 1)
|
||||||
case consts.VK_Q | graph.VK_ESCAPE:
|
case "Escape" | "q":
|
||||||
killTimer(data["update_timer"])
|
killTimer(data["update_timer"])
|
||||||
close()
|
close()
|
||||||
if delta is not None:
|
if delta is not None:
|
||||||
|
Loading…
Reference in New Issue
Block a user