-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpacMan.py
98 lines (76 loc) · 3.43 KB
/
pacMan.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# -*- coding: utf-8 -*-
# загрузка библиотеки
import pygame
#инициализация библиотеки
pygame.init()
#установка размера экрана
sizeScr = (800, 600)
screen = pygame.display.set_mode(sizeScr)
#название для окна
pygame.display.set_caption('Pacman')
#создание таймера
clock = pygame.time.Clock()
#загрузка изображения для пакмана
privedenie = pygame.image.load('./pac1.png')
#изменяем размер -> 100х100 пикселей
privedenie = pygame.transform.scale(privedenie, (100,100))
#загрузка изображения для приведения
pacMan = pygame.image.load('./pac2.png')
#изменяем размер -> 100х100 пикселей
pacMan = pygame.transform.scale(pacMan, (100,100))
#координаты пакмана
pacX = 0
pacY = 0
#координаты приведения
privedenieX = 400
privedenieY = 400
# флаг для выхода из программы (необходим для корректного закрытия программы)
runApp = True
# -------- цикл программы -----------
# выполнять пока runApp равен True
while runApp:
# --- чтение списка событий
for event in pygame.event.get():
#если в списке есть событие QUIT то закрыть программу
if event.type == pygame.QUIT:
runApp = False
#чтение нажатой клавиши
keyP = pygame.key.get_pressed()
#если нажата клавиша влево
if keyP[pygame.K_LEFT]:
#уменьшить координату по Х
pacX = pacX - 3
if keyP[pygame.K_RIGHT]:
pacManPovernutii = pygame.transform.rotate(pacMan, 0)
#увеличить координату по Х
pacX = pacX + 3
if keyP[pygame.K_UP]:
pacManPovernutii = pygame.transform.rotate(pacMan, 90)
pacY = pacY - 3
if keyP[pygame.K_DOWN]:
pacManPovernutii = pygame.transform.rotate(pacMan, 270)
pacY = pacY + 3
# --- логика иры
# если пакман попадает в координаты приведения +/- 50 пикселей по Х а потом по У
if (pacX > privedenieX - 50) & (pacX < privedenieX + 50) & (privedenieX == 400):
if (pacY > privedenieY - 50) & (pacY < privedenieY + 50):
# перенести приведение в коодинаты (0, 0)
privedenieX = 0
privedenieY = 0
elif (pacX > privedenieX - 50) & (pacX < privedenieX + 50) & (privedenieX != 400):
if (pacY > privedenieY - 50) & (pacY < privedenieY + 50):
# прибавить к координатам приведения 50 пикселей
privedenieX += 50
privedenieY += 50
# --- Перерисовка экрана
# Здесь рисуем фон
screen.fill((200,200,200))
# Здесь рисуем объекты
screen.blit(privedenie, (privedenieX, privedenieY))
screen.blit(pacMan, (pacX, pacY))
# --- Обновдение экрана
pygame.display.flip()
# --- Ждем 60 тиков таймера
clock.tick(60)
# выход из программы
pygame.quit()