Найти в Дзене

ЮНЫМ ПРОГРАММИСТАМ: Создание игры "Лабиринт"

Предлагаю заготовку для создания игры, где надо ходить по лабиринту. Вот текст программы на Питоне: from tkinter import * # это чтобы была графика w=Tk() # это чтобы было окно w.title('Лабиринт') # это заголовок-название окна aokn=w.winfo_screenwidth() # вызывается ширина монитора bokn=w.winfo_screenheight() # вызывается высота монитора if aokn<1920: bokn=int(aokn*1080/1920) # для других мониторов a=int(aokn); b=int(bokn) # размеры нашего окна: 'горизонт. х вертик.' ka = aokn / 1920; kb = bokn / 1080 # коэффы для размеров на других мониторах aokn=aokn//2-a//2; bokn=bokn//2-b//2 # расчёт, чтобы наше окно было посередине монитора w.geometry('{}x{}+{}+{}'.format(a,b, aokn, bokn)) # рисование нашего окна w.configure(bg='black') # цвет фона окна w.resizable(False, False) # чтобы нельзя было мышью изменить размеры окна c=Canvas(width=a, height=b, bg='black') # создать на окне холст c.pack() # установить холст на окно n = 42 # число прямоугольников # КАРТА ЛАБИРИНТА - РАСПОЛОЖЕНИЕ ПРЯМОУГ

Предлагаю заготовку для создания игры, где надо ходить по лабиринту. Вот текст программы на Питоне:

from tkinter import * # это чтобы была графика

w=Tk() # это чтобы было окно

w.title('Лабиринт') # это заголовок-название окна

aokn=w.winfo_screenwidth() # вызывается ширина монитора

bokn=w.winfo_screenheight() # вызывается высота монитора

if aokn<1920: bokn=int(aokn*1080/1920) # для других мониторов

a=int(aokn); b=int(bokn) # размеры нашего окна: 'горизонт. х вертик.'

ka = aokn / 1920; kb = bokn / 1080 # коэффы для размеров на других мониторах

aokn=aokn//2-a//2; bokn=bokn//2-b//2 # расчёт, чтобы наше окно было посередине монитора

w.geometry('{}x{}+{}+{}'.format(a,b, aokn, bokn)) # рисование нашего окна

w.configure(bg='black') # цвет фона окна

w.resizable(False, False) # чтобы нельзя было мышью изменить размеры окна

c=Canvas(width=a, height=b, bg='black') # создать на окне холст

c.pack() # установить холст на окно

n = 42 # число прямоугольников

# КАРТА ЛАБИРИНТА - РАСПОЛОЖЕНИЕ ПРЯМОУГОЛЬНИКОВ

P = [0,0, 1920,20, 0,20, 20,1060, 1900,20, 1920,1060, 0,1040, 1920,1080, 20,500, 400,520,

460,500, 800,520,

200,100, 300,300, 200, 340, 300, 460, 300,340, 350,420, 350,340, 450,380, 340, 100, 500, 300,

560,50, 600,440, 660,20, 760, 420, 800,50, 1200,100, 800,100, 850, 350, 900,300, 1200,350,

1140,140, 1200,300, 940,440, 1240,800, 1300,440, 1900,540, 1300,600, 1840,740, 1300,800, 1500,900,

1300,950, 1600,1000, 1700,820, 1900, 960, 1560,740, 1640,900, 60,600, 600,700, 60,760, 600,800,

60,840, 300,1000, 400,840, 800,1000, 900,900, 1200,1040, 1400,100, 1460,440, 1460,300, 1600,360,

1700,300, 1860,360, 1560,60, 1840,260, 900,140, 1080,260, 1300,200, 1340,440, 60,100, 160,440,

760,700, 860,800, 460,460, 480,500, 700,520, 760,600, 240,20, 260,100, 1300,20, 1320,120,

250, 700, 300, 760]

# масштабирование под разные мониторы

for i in range(n):

P[4*i]=P[4*i]*ka; P[4*i+1]=P[4*i+1]*kb; P[4*i+2]=P[4*i+2]*ka; P[4*i+3]=P[4*i+3]*kb

p = 860*ka; q = 600*kb # первоначальное положение квадратика

rx=20*ka; ry=20*kb # размеры квадратика

hx=5*ka; hy=5*kb # шаги по икс и по игрек

def dwig(z): # ------------------------------- Ф У Н К Ц И Я Д В И Г А -------------------------------

global p, q

if z.keysym == 'Up': knopka='Up'; q = q - hy

if z.keysym == 'Down': knopka='Down'; q = q + hy

if z.keysym == 'Left': knopka='Left'; p = p - hx

if z.keysym == 'Right': knopka='Right'; p = p + hx

for i in range(n):

if p+rx>P[4*i] and p<P[4*i+2] and q+ry>P[4*i+1] and q<P[4*i+3]: # если заступ

if knopka=='Up': q=P[4*i+3]+1

if knopka=='Down': q=P[4*i+1]-ry-1

if knopka=='Left': p=P[4*i+2]+1

if knopka=='Right': p=P[4*i]-rx-1

#-------------------------------------------------------------------------------------------------------------------

w.bind('<Key>', dwig) # чтобы прога реагировала на кнопки

#-------------------------------------------------------------------------------------------------------------------

# ОСНОВНОЙ ЦИКЛ

while True:

# рисование лабиринта

for i in range(n):

c.create_rectangle(P[4*i], P[4*i+1], P[4*i+2], P[4*i+3], fill = 'green', outline='green')

# рисование квадратика

c.create_rectangle(p, q, p+rx, q+ry, fill='red', outline='white')

# очистка экрана

c.update()

c.delete('all')

Скопируйте текст программы прямо отсюда и вставьте в редактор Питона, потому что набирать вряд ли захочется. В тексте масса отступов. Если они будут расставлены неправильно, то питоновская программа работать не будет. Поэтому сравните скопированный и вставленный текст с фотками. Всё должно быть точь-в-точь как на фотках:

-2

При запуске программы появится такая картинка:

-3

Вы можете нажимать четыре стрелки на клавиатуре - красный квадратик будет двигаться по лабиринту.

Текст программы вполне понятен и не требует пояснений. Его можно менять и продолжать сочинять игру дальше. Прямоугольники устроены из четырёх чисел, написанных близко друг к другу для удобства чтения, например, прямоугольник:

200, 340, 300, 460 - это значит: левый верхний угол имеет координаты (200, 340), а правый нижний угол - (300, 460).

Изучайте, используйте, задавайте вопросы.

Успехов Вам в программировании!