From 567086de01220aca6ab71795b94982623daf7114 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BB=D1=8C=D1=8F?= Date: Thu, 16 Jan 2020 20:09:25 +0300 Subject: [PATCH 01/17] =?UTF-8?q?=D0=9F=D0=B0=D0=BA=D0=BC=D0=B0=D0=BD=20?= =?UTF-8?q?=D0=BF=D1=80=D1=8F=D0=BC=D0=BE=D1=85=D0=BE=D0=B4=D1=8F=D1=89?= =?UTF-8?q?=D0=B8=D0=B9=20(=D0=9F=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA?= =?UTF-8?q?=D0=B0=20=D0=B2=D0=B5=D1=82=D0=BE=D0=BA)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Pac-Man.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/Pac-Man.py b/Pac-Man.py index d83362e..a999f1b 100644 --- a/Pac-Man.py +++ b/Pac-Man.py @@ -22,11 +22,16 @@ player_group = pygame.sprite.Group() -def load_image(name, colorkey=None): +def load_image(name, color_key=None): fullname = os.path.join('data', name) - image = pygame.image.load(fullname).convert() - if colorkey is not None: - if colorkey == -1: + try: + image = pygame.image.load(fullname).convert() + except pygame.error as message: + print('Cannot load image:', name) + raise SystemExit(message) + + if color_key is not None: + if color_key == -1: color_key = image.get_at((0, 0)) image.set_colorkey(color_key) else: From efa30f1fc422850d458ace17a8b8d72ceb213211 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BB=D1=8C=D1=8F?= Date: Fri, 17 Jan 2020 17:13:49 +0300 Subject: [PATCH 02/17] =?UTF-8?q?=D0=9F=D0=B0=D0=BA=D0=BC=D0=B0=D0=BD=20?= =?UTF-8?q?=D0=BE=D1=81=D0=B2=D0=BE=D0=B8=D0=BB=20=D1=81=D0=BE=D0=B1=D0=B8?= =?UTF-8?q?=D1=80=D0=B0=D1=82=D0=B5=D0=BB=D1=8C=D1=81=D1=82=D0=B2=D0=BE,?= =?UTF-8?q?=20=D1=82=D0=BE=D1=87=D1=87=D0=B5=D1=87=D0=BA=D0=B8=20=D0=B2?= =?UTF-8?q?=D0=BA=D1=83=D1=81=D0=BD=D1=8B=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Pac-Man.py | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/Pac-Man.py b/Pac-Man.py index a999f1b..ce18e1b 100644 --- a/Pac-Man.py +++ b/Pac-Man.py @@ -11,15 +11,16 @@ HEIGHT = 24 * 34 STEP = 24 karta = [] +score = 0 screen = pygame.display.set_mode((WIDTH, HEIGHT)) clock = pygame.time.Clock() player = None -# группы спрайтов all_sprites = pygame.sprite.Group() tiles_group = pygame.sprite.Group() player_group = pygame.sprite.Group() +dots_group = pygame.sprite.Group() def load_image(name, color_key=None): @@ -84,12 +85,17 @@ def generate_level(level): Tile('right_down', x, y) s.append('1') elif level[y][x] == '@': - new_player = Player(x, y, 25, 14) + new_player = Pacman(x, y, 25, 14) + s.append('.') + elif level[y][x] == 'd': + Dot('dot', x, y) + s.append('.') + elif level[y][x] == 'D': + Dot('big_dot', x, y) s.append('.') if len(s) == 28: karta.append(s) s = [] - # вернем игрока, а также размер поля в клетках for elem in karta: print(elem) return new_player, x, y @@ -131,6 +137,7 @@ def start_screen(): 'right_up': load_image('right_up.jpg'), 'right_down': load_image('right_down.jpg'), 'vert2': load_image('vert2.jpg'), 'hor2': load_image('hor2.jpg')} player_image = load_image('pacman.jpg') +dot_images = {'dot': load_image('dot.jpg'), 'big_dot': load_image('big_dot.jpg')} tile_width = tile_height = 24 @@ -141,13 +148,29 @@ def __init__(self, tile_type, pos_x, pos_y): self.rect = self.image.get_rect().move(tile_width * pos_x, tile_height * pos_y) -class Player(pygame.sprite.Sprite): +class Pacman(pygame.sprite.Sprite): def __init__(self, pos_x, pos_y, choord_x, choord_y): super().__init__(player_group, all_sprites) self.image = player_image self.choord_x = choord_x self.choord_y = choord_y self.rect = self.image.get_rect().move(tile_width * pos_x - 10, tile_height * pos_y - 10) + self.mask = pygame.mask.from_surface(self.image) + + +class Dot(pygame.sprite.Sprite): + def __init__(self, dot_type, pos_x, pos_y): + super().__init__(dots_group, all_sprites) + self.image = dot_images[dot_type] + self.rect = self.image.get_rect().move(tile_width * pos_x, tile_height * pos_y) + self.mask = pygame.mask.from_surface(self.image) + + def update(self): + global score + if pygame.sprite.collide_mask(self, player): + score += 1 + print(score) + self.kill() start_screen() @@ -158,7 +181,7 @@ def __init__(self, pos_x, pos_y, choord_x, choord_y): if event.type == pygame.QUIT: running = False elif event.type == pygame.KEYDOWN: - if player.choord_x == 16 and player.choord_y == 27 and event.key == pygame.K_RIGHT: + if player.choord_x == 16 and player.choord_y == 27 and event.key == pygame.K_RIGHT: player.choord_y = 0 player.rect.x -= STEP if event.key == pygame.K_LEFT and karta[player.choord_x][player.choord_y - 1] == '.': @@ -175,7 +198,9 @@ def __init__(self, pos_x, pos_y, choord_x, choord_y): player.choord_x = player.choord_x + 1 screen.fill(pygame.Color(0, 0, 0)) tiles_group.draw(screen) + dots_group.draw(screen) player_group.draw(screen) + all_sprites.update() pygame.display.flip() clock.tick(FPS) terminate() \ No newline at end of file From 784ccfea28ad8f9c3de8193d82c9becd1cc4819e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BB=D1=8C=D1=8F?= Date: Sun, 19 Jan 2020 17:42:03 +0300 Subject: [PATCH 03/17] =?UTF-8?q?squash!=20=D0=9F=D0=B0=D0=BA=D0=BC=D0=B0?= =?UTF-8?q?=D0=BD=20=D0=BE=D1=81=D0=B2=D0=BE=D0=B8=D0=BB=20=D1=81=D0=BE?= =?UTF-8?q?=D0=B1=D0=B8=D1=80=D0=B0=D1=82=D0=B5=D0=BB=D1=8C=D1=81=D1=82?= =?UTF-8?q?=D0=B2=D0=BE,=20=D1=82=D0=BE=D1=87=D1=87=D0=B5=D1=87=D0=BA?= =?UTF-8?q?=D0=B8=20=D0=B2=D0=BA=D1=83=D1=81=D0=BD=D1=8B=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Pac-Man.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/Pac-Man.py b/Pac-Man.py index ce18e1b..d7c66d9 100644 --- a/Pac-Man.py +++ b/Pac-Man.py @@ -154,9 +154,18 @@ def __init__(self, pos_x, pos_y, choord_x, choord_y): self.image = player_image self.choord_x = choord_x self.choord_y = choord_y + self.im = 0 self.rect = self.image.get_rect().move(tile_width * pos_x - 10, tile_height * pos_y - 10) self.mask = pygame.mask.from_surface(self.image) + def update(self): + if (self.im // 10) % 2 == 0: + self.image = load_image('pacman.jpg') + self.im += 1 + else: + self.image = load_image('pacman2.jpg') + self.im += 1 + class Dot(pygame.sprite.Sprite): def __init__(self, dot_type, pos_x, pos_y): @@ -171,6 +180,8 @@ def update(self): score += 1 print(score) self.kill() + if score == 244: + terminate() start_screen() @@ -184,16 +195,16 @@ def update(self): if player.choord_x == 16 and player.choord_y == 27 and event.key == pygame.K_RIGHT: player.choord_y = 0 player.rect.x -= STEP - if event.key == pygame.K_LEFT and karta[player.choord_x][player.choord_y - 1] == '.': + if event.key == pygame.K_LEFT and karta[player.choord_x][player.choord_y - 1] != '1': player.rect.x -= STEP player.choord_y = player.choord_y - 1 - if event.key == pygame.K_RIGHT and karta[player.choord_x][player.choord_y + 1] == '.': + if event.key == pygame.K_RIGHT and karta[player.choord_x][player.choord_y + 1] != '1': player.rect.x += STEP player.choord_y = player.choord_y + 1 - if event.key == pygame.K_UP and karta[player.choord_x - 1][player.choord_y] == '.': + if event.key == pygame.K_UP and karta[player.choord_x - 1][player.choord_y] != '1': player.rect.y -= STEP player.choord_x = player.choord_x - 1 - if event.key == pygame.K_DOWN and karta[player.choord_x + 1][player.choord_y] == '.': + if event.key == pygame.K_DOWN and karta[player.choord_x + 1][player.choord_y] != '1': player.rect.y += STEP player.choord_x = player.choord_x + 1 screen.fill(pygame.Color(0, 0, 0)) From 3896a51b26f952ec7adba2e6bd623960b05e1e3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BB=D1=8C=D1=8F?= Date: Sun, 19 Jan 2020 18:44:07 +0300 Subject: [PATCH 04/17] =?UTF-8?q?=D0=92=D0=BE=D1=82=20=D1=8D=D1=82=D0=BE?= =?UTF-8?q?=20=D0=BF=D0=BE=D0=B2=D0=BE=D1=80=D0=BE=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Pac-Man.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Pac-Man.py b/Pac-Man.py index d7c66d9..7da44b0 100644 --- a/Pac-Man.py +++ b/Pac-Man.py @@ -12,7 +12,7 @@ STEP = 24 karta = [] score = 0 - +pac = 'pacman.jpg' screen = pygame.display.set_mode((WIDTH, HEIGHT)) clock = pygame.time.Clock() player = None @@ -159,8 +159,9 @@ def __init__(self, pos_x, pos_y, choord_x, choord_y): self.mask = pygame.mask.from_surface(self.image) def update(self): + global pac if (self.im // 10) % 2 == 0: - self.image = load_image('pacman.jpg') + self.image = load_image(pac) self.im += 1 else: self.image = load_image('pacman2.jpg') @@ -197,15 +198,19 @@ def update(self): player.rect.x -= STEP if event.key == pygame.K_LEFT and karta[player.choord_x][player.choord_y - 1] != '1': player.rect.x -= STEP + pac = 'pacman5.jpg' player.choord_y = player.choord_y - 1 if event.key == pygame.K_RIGHT and karta[player.choord_x][player.choord_y + 1] != '1': player.rect.x += STEP + pac = 'pacman.jpg' player.choord_y = player.choord_y + 1 if event.key == pygame.K_UP and karta[player.choord_x - 1][player.choord_y] != '1': player.rect.y -= STEP + pac = 'pacman3.jpg' player.choord_x = player.choord_x - 1 if event.key == pygame.K_DOWN and karta[player.choord_x + 1][player.choord_y] != '1': player.rect.y += STEP + pac = 'pacman4.jpg' player.choord_x = player.choord_x + 1 screen.fill(pygame.Color(0, 0, 0)) tiles_group.draw(screen) From 3c32c1013c35133ffe0e6d09a7c788dbb1e04088 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BB=D1=8C=D1=8F?= Date: Tue, 21 Jan 2020 21:43:03 +0300 Subject: [PATCH 05/17] =?UTF-8?q?=D0=9F=D0=BB=D0=B0=D0=B2=D0=BD=D1=8B?= =?UTF-8?q?=D0=B9=20=D0=BF=D0=B0=D0=BA=D0=BC=D0=B0=D0=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Pac-Man.py | 86 ++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 68 insertions(+), 18 deletions(-) diff --git a/Pac-Man.py b/Pac-Man.py index 7da44b0..cfe49a4 100644 --- a/Pac-Man.py +++ b/Pac-Man.py @@ -6,7 +6,7 @@ pygame.key.set_repeat(200, 70) -FPS = 50 +FPS = 60 WIDTH = 24 * 28 HEIGHT = 24 * 34 STEP = 24 @@ -193,25 +193,75 @@ def update(self): if event.type == pygame.QUIT: running = False elif event.type == pygame.KEYDOWN: + run = True if player.choord_x == 16 and player.choord_y == 27 and event.key == pygame.K_RIGHT: player.choord_y = 0 - player.rect.x -= STEP - if event.key == pygame.K_LEFT and karta[player.choord_x][player.choord_y - 1] != '1': - player.rect.x -= STEP - pac = 'pacman5.jpg' - player.choord_y = player.choord_y - 1 - if event.key == pygame.K_RIGHT and karta[player.choord_x][player.choord_y + 1] != '1': - player.rect.x += STEP - pac = 'pacman.jpg' - player.choord_y = player.choord_y + 1 - if event.key == pygame.K_UP and karta[player.choord_x - 1][player.choord_y] != '1': - player.rect.y -= STEP - pac = 'pacman3.jpg' - player.choord_x = player.choord_x - 1 - if event.key == pygame.K_DOWN and karta[player.choord_x + 1][player.choord_y] != '1': - player.rect.y += STEP - pac = 'pacman4.jpg' - player.choord_x = player.choord_x + 1 + player.rect.x -= STEP * 28 + if event.key == pygame.K_LEFT: + k = 0 + while karta[player.choord_x][player.choord_y - 1] != '1': + player.rect.x -= 1 + pac = 'pacman5.jpg' + k += 1 + print(player.choord_x, player.choord_y) + if k == 24: + player.choord_y = player.choord_y - 1 + k = 0 + screen.fill(pygame.Color(0, 0, 0)) + tiles_group.draw(screen) + dots_group.draw(screen) + player_group.draw(screen) + all_sprites.update() + pygame.display.flip() + clock.tick(FPS) + if event.key == pygame.K_RIGHT: + k = 0 + while run and karta[player.choord_x][player.choord_y + 1] != '1': + player.rect.x += 1 + pac = 'pacman.jpg' + k += 1 + if k == 24: + player.choord_y = player.choord_y + 1 + k = 0 + screen.fill(pygame.Color(0, 0, 0)) + tiles_group.draw(screen) + dots_group.draw(screen) + player_group.draw(screen) + all_sprites.update() + pygame.display.flip() + clock.tick(FPS) + if event.key == pygame.K_UP: + k = 0 + while run and karta[player.choord_x - 1][player.choord_y] != '1': + player.rect.y -= 1 + pac = 'pacman3.jpg' + k += 1 + if k == 24: + player.choord_x = player.choord_x- 1 + k = 0 + screen.fill(pygame.Color(0, 0, 0)) + tiles_group.draw(screen) + dots_group.draw(screen) + player_group.draw(screen) + all_sprites.update() + pygame.display.flip() + clock.tick(FPS) + if event.key == pygame.K_DOWN: + k = 0 + while run and karta[player.choord_x + 1][player.choord_y] != '1': + player.rect.y += 1 + pac = 'pacman4.jpg' + k += 1 + if k == 24: + player.choord_x = player.choord_x + 1 + k = 0 + screen.fill(pygame.Color(0, 0, 0)) + tiles_group.draw(screen) + dots_group.draw(screen) + player_group.draw(screen) + all_sprites.update() + pygame.display.flip() + clock.tick(FPS) screen.fill(pygame.Color(0, 0, 0)) tiles_group.draw(screen) dots_group.draw(screen) From c4ffe035d4cbf17ef96b4a0b60240fd74210644e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BB=D1=8C=D1=8F?= Date: Tue, 21 Jan 2020 22:21:11 +0300 Subject: [PATCH 06/17] =?UTF-8?q?=D0=9F=D0=BB=D0=B0=D0=B2=D0=BD=D1=8B?= =?UTF-8?q?=D0=B9=20=D0=BF=D0=B0=D0=BA=D0=BC=D0=B0=D0=BD=20(=D1=82=D0=B5?= =?UTF-8?q?=D0=BF=D0=B5=D1=80=D1=8C=20=D0=BD=D0=B0=20=D0=B2=D1=81=D0=B5?= =?UTF-8?q?=D1=85=20=D0=BF=D0=BE=D0=B2=D0=BE=D1=80=D0=BE=D1=82=D0=B0=D1=85?= =?UTF-8?q?,=20=D0=BD=D0=BE=20=D0=BF=D0=BE=D1=81=D1=82=D0=BE=D1=8F=D0=BD?= =?UTF-8?q?=D0=BD=D0=BE=20=D0=BF=D1=83=D1=82=D0=B0=D0=B5=D1=82=D1=81=D1=8F?= =?UTF-8?q?=20=D0=B2=20=D0=BA=D0=B0=D1=80=D1=82=D0=B5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Pac-Man.py | 156 +++++++++++++++++++++++++++++------------------------ 1 file changed, 86 insertions(+), 70 deletions(-) diff --git a/Pac-Man.py b/Pac-Man.py index cfe49a4..396f7c3 100644 --- a/Pac-Man.py +++ b/Pac-Man.py @@ -155,7 +155,7 @@ def __init__(self, pos_x, pos_y, choord_x, choord_y): self.choord_x = choord_x self.choord_y = choord_y self.im = 0 - self.rect = self.image.get_rect().move(tile_width * pos_x - 10, tile_height * pos_y - 10) + self.rect = self.image.get_rect().move(tile_width * pos_x - 5, tile_height * pos_y - 8) self.mask = pygame.mask.from_surface(self.image) def update(self): @@ -188,80 +188,96 @@ def update(self): start_screen() player, level_x, level_y = generate_level(load_level('map2.txt')) running = True +run_left = False +run_right = False +run_up = False +run_down = False +k = 0 while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False elif event.type == pygame.KEYDOWN: - run = True - if player.choord_x == 16 and player.choord_y == 27 and event.key == pygame.K_RIGHT: - player.choord_y = 0 - player.rect.x -= STEP * 28 - if event.key == pygame.K_LEFT: - k = 0 - while karta[player.choord_x][player.choord_y - 1] != '1': - player.rect.x -= 1 - pac = 'pacman5.jpg' - k += 1 - print(player.choord_x, player.choord_y) - if k == 24: - player.choord_y = player.choord_y - 1 - k = 0 - screen.fill(pygame.Color(0, 0, 0)) - tiles_group.draw(screen) - dots_group.draw(screen) - player_group.draw(screen) - all_sprites.update() - pygame.display.flip() - clock.tick(FPS) - if event.key == pygame.K_RIGHT: - k = 0 - while run and karta[player.choord_x][player.choord_y + 1] != '1': - player.rect.x += 1 - pac = 'pacman.jpg' - k += 1 - if k == 24: - player.choord_y = player.choord_y + 1 - k = 0 - screen.fill(pygame.Color(0, 0, 0)) - tiles_group.draw(screen) - dots_group.draw(screen) - player_group.draw(screen) - all_sprites.update() - pygame.display.flip() - clock.tick(FPS) - if event.key == pygame.K_UP: - k = 0 - while run and karta[player.choord_x - 1][player.choord_y] != '1': - player.rect.y -= 1 - pac = 'pacman3.jpg' - k += 1 - if k == 24: - player.choord_x = player.choord_x- 1 - k = 0 - screen.fill(pygame.Color(0, 0, 0)) - tiles_group.draw(screen) - dots_group.draw(screen) - player_group.draw(screen) - all_sprites.update() - pygame.display.flip() - clock.tick(FPS) - if event.key == pygame.K_DOWN: - k = 0 - while run and karta[player.choord_x + 1][player.choord_y] != '1': - player.rect.y += 1 - pac = 'pacman4.jpg' - k += 1 - if k == 24: - player.choord_x = player.choord_x + 1 - k = 0 - screen.fill(pygame.Color(0, 0, 0)) - tiles_group.draw(screen) - dots_group.draw(screen) - player_group.draw(screen) - all_sprites.update() - pygame.display.flip() - clock.tick(FPS) + if event.key == pygame.K_LEFT and karta[player.choord_x][player.choord_y - 1] != '1': + if k != 0: + if run_down: + player.rect.y -= k + elif run_up: + player.rect.y += k + elif run_right: + player.rect.x -= k + k = 0 + run_left = True + run_right = False + run_up = False + run_down = False + if event.key == pygame.K_RIGHT and karta[player.choord_x][player.choord_y + 1] != '1': + if k != 0: + if run_down: + player.rect.y -= k + elif run_up: + player.rect.y += k + elif run_left: + player.rect.x += k + k = 0 + run_right = True + run_left = False + run_up = False + run_down = False + if event.key == pygame.K_UP and karta[player.choord_x - 1][player.choord_y] != '1': + if k != 0: + if run_down: + player.rect.y -= k + elif run_left: + player.rect.x += k + elif run_right: + player.rect.x -= k + k = 0 + run_up = True + run_right = False + run_left = False + run_down = False + if event.key == pygame.K_DOWN and karta[player.choord_x + 1][player.choord_y] != '1': + if k != 0: + if run_up: + player.rect.y += k + elif run_left: + player.rect.x += k + elif run_right: + player.rect.x -= k + k = 0 + run_down = True + run_right = False + run_up = False + run_left = False + if run_down and karta[player.choord_x + 1][player.choord_y] != '1': + player.rect.y += 1 + pac = 'pacman4.jpg' + k += 1 + if k == 24: + player.choord_x = player.choord_x + 1 + k = 0 + elif run_up and karta[player.choord_x - 1][player.choord_y] != '1': + player.rect.y -= 1 + pac = 'pacman3.jpg' + k += 1 + if k == 24: + player.choord_x = player.choord_x - 1 + k = 0 + elif run_left and karta[player.choord_x][player.choord_y - 1] != '1': + player.rect.x -= 1 + pac = 'pacman5.jpg' + k += 1 + if k == 24: + player.choord_y = player.choord_y - 1 + k = 0 + elif run_right and karta[player.choord_x][player.choord_y + 1] != '1': + player.rect.x += 1 + pac = 'pacman.jpg' + k += 1 + if k == 24: + player.choord_y = player.choord_y + 1 + k = 0 screen.fill(pygame.Color(0, 0, 0)) tiles_group.draw(screen) dots_group.draw(screen) From b1f8e272a2462d5df1a42e88be7b9a8da814eedf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BB=D1=8C=D1=8F?= Date: Wed, 22 Jan 2020 17:37:45 +0300 Subject: [PATCH 07/17] =?UTF-8?q?=D0=9F=D0=B0=D0=BA=D0=BC=D0=B0=D0=BD=20?= =?UTF-8?q?=D1=81=20=D0=BF=D1=80=D0=B8=D0=B7=D1=80=D0=B0=D0=BA=D0=BE=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Pac-Man.py | 68 ++++++++++++++++++++++- Spirits.py | 159 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 226 insertions(+), 1 deletion(-) create mode 100644 Spirits.py diff --git a/Pac-Man.py b/Pac-Man.py index 396f7c3..be34c7a 100644 --- a/Pac-Man.py +++ b/Pac-Man.py @@ -1,6 +1,7 @@ import os import sys import pygame +import Spirits pygame.init() pygame.key.set_repeat(200, 70) @@ -17,6 +18,7 @@ clock = pygame.time.Clock() player = None + all_sprites = pygame.sprite.Group() tiles_group = pygame.sprite.Group() player_group = pygame.sprite.Group() @@ -96,6 +98,8 @@ def generate_level(level): if len(s) == 28: karta.append(s) s = [] + karta[16][22] = 'x' + karta[16][5] = 'x' for elem in karta: print(elem) return new_player, x, y @@ -137,6 +141,7 @@ def start_screen(): 'right_up': load_image('right_up.jpg'), 'right_down': load_image('right_down.jpg'), 'vert2': load_image('vert2.jpg'), 'hor2': load_image('hor2.jpg')} player_image = load_image('pacman.jpg') +blinky_image = load_image('blinky_1.jpg') dot_images = {'dot': load_image('dot.jpg'), 'big_dot': load_image('big_dot.jpg')} tile_width = tile_height = 24 @@ -179,12 +184,14 @@ def update(self): global score if pygame.sprite.collide_mask(self, player): score += 1 - print(score) self.kill() if score == 244: terminate() +blinky_red_spirit = Spirits.Blinky(14, 13, 13, 14, blinky_image) +blinky_last_position = 'LEFT' +min_way = 'RIGHT' start_screen() player, level_x, level_y = generate_level(load_level('map2.txt')) running = True @@ -193,6 +200,7 @@ def update(self): run_up = False run_down = False k = 0 +k_red = 0 while running: for event in pygame.event.get(): if event.type == pygame.QUIT: @@ -256,6 +264,7 @@ def update(self): k += 1 if k == 24: player.choord_x = player.choord_x + 1 + print(player.choord_x, player.choord_y) k = 0 elif run_up and karta[player.choord_x - 1][player.choord_y] != '1': player.rect.y -= 1 @@ -263,6 +272,7 @@ def update(self): k += 1 if k == 24: player.choord_x = player.choord_x - 1 + print(player.choord_x, player.choord_y) k = 0 elif run_left and karta[player.choord_x][player.choord_y - 1] != '1': player.rect.x -= 1 @@ -270,6 +280,7 @@ def update(self): k += 1 if k == 24: player.choord_y = player.choord_y - 1 + print(player.choord_x, player.choord_y) k = 0 elif run_right and karta[player.choord_x][player.choord_y + 1] != '1': player.rect.x += 1 @@ -277,11 +288,66 @@ def update(self): k += 1 if k == 24: player.choord_y = player.choord_y + 1 + print(player.choord_x, player.choord_y) k = 0 + blinky_red_spirit.get_a_mission(player.choord_x, player.choord_y) + if min_way == 'UP': + blinky_last_position = 'DOWN' + blinky_red_spirit.rect.y -= 1 + k_red += 1 + if k_red == 24: + blinky_red_spirit.choord_x = blinky_red_spirit.choord_x - 1 + if karta[blinky_red_spirit.choord_x][blinky_red_spirit.choord_y] == '.': + possible_turns = ['UP', 'DOWN', 'LEFT', 'RIGHT'] + min_way = blinky_red_spirit.folow(karta, blinky_last_position, + blinky_red_spirit.choord_x, blinky_red_spirit.choord_y, + blinky_red_spirit.mission[0], blinky_red_spirit.mission[1], + possible_turns) + k_red = 0 + elif min_way == 'DOWN': + blinky_last_position = 'UP' + blinky_red_spirit.rect.y += 1 + k_red += 1 + if k_red == 24: + blinky_red_spirit.choord_x = blinky_red_spirit.choord_x + 1 + if karta[blinky_red_spirit.choord_x][blinky_red_spirit.choord_y] == '.': + possible_turns = ['UP', 'DOWN', 'LEFT', 'RIGHT'] + min_way = blinky_red_spirit.folow(karta, blinky_last_position, + blinky_red_spirit.choord_x, blinky_red_spirit.choord_y, + blinky_red_spirit.mission[0], blinky_red_spirit.mission[1], + possible_turns) + k_red = 0 + elif min_way == 'LEFT': + blinky_last_position = 'RIGHT' + blinky_red_spirit.rect.x -= 1 + k_red += 1 + if k_red == 24: + blinky_red_spirit.choord_y = blinky_red_spirit.choord_y - 1 + if karta[blinky_red_spirit.choord_x][blinky_red_spirit.choord_y] == '.': + possible_turns = ['UP', 'DOWN', 'LEFT', 'RIGHT'] + min_way = blinky_red_spirit.folow(karta, blinky_last_position, + blinky_red_spirit.choord_x, blinky_red_spirit.choord_y, + blinky_red_spirit.mission[0], blinky_red_spirit.mission[1], + possible_turns) + k_red = 0 + elif min_way == 'RIGHT': + blinky_last_position = 'LEFT' + blinky_red_spirit.rect.x += 1 + k_red += 1 + if k_red == 24: + blinky_red_spirit.choord_y = blinky_red_spirit.choord_y + 1 + if karta[blinky_red_spirit.choord_x][blinky_red_spirit.choord_y] == '.': + possible_turns = ['UP', 'DOWN', 'LEFT', 'RIGHT'] + min_way = blinky_red_spirit.folow(karta, blinky_last_position, + blinky_red_spirit.choord_x, blinky_red_spirit.choord_y, + blinky_red_spirit.mission[0], blinky_red_spirit.mission[1], + possible_turns) + k_red = 0 screen.fill(pygame.Color(0, 0, 0)) tiles_group.draw(screen) dots_group.draw(screen) player_group.draw(screen) + Spirits.spirits_group.draw(screen) all_sprites.update() pygame.display.flip() clock.tick(FPS) diff --git a/Spirits.py b/Spirits.py new file mode 100644 index 0000000..8f5c4a9 --- /dev/null +++ b/Spirits.py @@ -0,0 +1,159 @@ + +import os +import sys +import pygame + + +pygame.init() +all_sprites = pygame.sprite.Group() +spirits_group = pygame.sprite.Group() +tile_width = tile_height = 24 + + +class Blinky(pygame.sprite.Sprite): # Блинки - Красный призрак + def __init__(self, pos_x, pos_y, choord_x, choord_y, filename): + super().__init__(spirits_group, all_sprites) + self.mission = ('', '') + self.image = filename + self.choord_x = choord_x + self.choord_y = choord_y + self.rect = self.image.get_rect().move(tile_width * pos_x - 10, tile_height * pos_y - 10) + + def get_a_mission(self, choord_x, choord_y): + self.mission = (choord_x, choord_y) + + def folow(self, karta, blinky_last_position, x, y, m_x, m_y, possible_turns): + x = int(x) + y = int(y) + for i in range(len(possible_turns)): + if possible_turns[i] == blinky_last_position: + del possible_turns[i] + break + if karta[x + 1][y] == '1' or karta[x + 1][y] == 'x': + for i in range(len(possible_turns)): + if possible_turns[i] == 'DOWN': + del possible_turns[i] + break + if karta[x - 1][y] == '1' or karta[x - 1][y] == 'x': + for i in range(len(possible_turns)): + if possible_turns[i] == 'UP': + del possible_turns[i] + break + if karta[x][y + 1] == '1' or karta[x][y + 1] == 'x': + for i in range(len(possible_turns)): + if possible_turns[i] == 'RIGHT': + del possible_turns[i] + break + if karta[x][y - 1] == '1' or karta[x][y + 1] == 'x': + for i in range(len(possible_turns)): + if possible_turns[i] == 'LEFT': + del possible_turns[i] + break + min_l = 999999999 + min_way = '' + if len(possible_turns) < 2: + min_way = possible_turns[0] + return min_way + else: + possible_turns_coords = list() + for turn in possible_turns: + if turn == 'UP': + sp_x, sp_y = x - 1, y + possible_turns_coords.append([sp_x, sp_y, 'UP']) + if turn == 'DOWN': + sp_x, sp_y = x + 1, y + possible_turns_coords.append([sp_x, sp_y, 'DOWN']) + if turn == 'LEFT': + sp_x, sp_y = x, y - 1 + possible_turns_coords.append([sp_x, sp_y, 'LEFT']) + if turn == 'RIGHT': + sp_x, sp_y = x, y + 1 + possible_turns_coords.append([sp_x, sp_y, 'RIGHT']) + for coords in possible_turns_coords: + m_y = int(m_y) + m_x = int(m_x) + coords[0] = int(coords[0]) + coords[1] = int(coords[1]) + l = (((m_x - coords[0]) ** 2) + (m_y - coords[1]) ** 2) ** 0.5 + if l < 0: + l += 2 * l + coords.append(l) + if l < min_l: + min_l = l + min_way = coords[2] + return min_way + + +class Pinky(pygame.sprite.Sprite): # Пинки - Розовый призрак + def __init__(self, pos_x, pos_y, choord_x, choord_y, filename): + super().__init__(spirits_group, all_sprites) + self.mission = ('', '') + self.image = filename + self.choord_x = choord_x + self.choord_y = choord_y + self.rect = self.image.get_rect().move(tile_width * pos_x - 10, tile_height * pos_y - 10) + + def get_a_mission(self, choord_x, choord_y): + self.mission = (choord_x, choord_y) + + def folow(self, karta, blinky_last_position, x, y, m_x, m_y, possible_turns): + x = int(x) + y = int(y) + for i in range(len(possible_turns)): + if possible_turns[i] == blinky_last_position: + del possible_turns[i] + break + if karta[x + 1][y] == '1' or karta[x + 1][y] == 'x': + for i in range(len(possible_turns)): + if possible_turns[i] == 'DOWN': + del possible_turns[i] + break + if karta[x - 1][y] == '1' or karta[x - 1][y] == 'x': + for i in range(len(possible_turns)): + if possible_turns[i] == 'UP': + del possible_turns[i] + break + if karta[x][y + 1] == '1' or karta[x][y + 1] == 'x': + for i in range(len(possible_turns)): + if possible_turns[i] == 'RIGHT': + del possible_turns[i] + break + if karta[x][y - 1] == '1' or karta[x][y + 1] == 'x': + for i in range(len(possible_turns)): + if possible_turns[i] == 'LEFT': + del possible_turns[i] + break + min_l = 999999999 + min_way = '' + print(possible_turns) + if len(possible_turns) < 2: + min_way = possible_turns[0] + return min_way + else: + possible_turns_coords = list() + for turn in possible_turns: + if turn == 'UP': + sp_x, sp_y = x - 1, y + possible_turns_coords.append([sp_x, sp_y, 'UP']) + if turn == 'DOWN': + sp_x, sp_y = x + 1, y + possible_turns_coords.append([sp_x, sp_y, 'DOWN']) + if turn == 'LEFT': + sp_x, sp_y = x, y - 1 + possible_turns_coords.append([sp_x, sp_y, 'LEFT']) + if turn == 'RIGHT': + sp_x, sp_y = x, y + 1 + possible_turns_coords.append([sp_x, sp_y, 'RIGHT']) + for coords in possible_turns_coords: + m_y = int(m_y) + m_x = int(m_x) + coords[0] = int(coords[0]) + coords[1] = int(coords[1]) + l = (((m_x - coords[0]) ** 2) + (m_y - coords[1]) ** 2) ** 0.5 + if l < 0: + l += 2 * l + coords.append(l) + if l < min_l: + min_l = l + min_way = coords[2] + return min_way \ No newline at end of file From bca4cbdef808ea737666ec27f244ea6176ee7c5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BB=D1=8C=D1=8F?= Date: Wed, 22 Jan 2020 21:06:35 +0300 Subject: [PATCH 08/17] =?UTF-8?q?=D0=9E=D1=82=D0=B4=D0=B0=D0=B9=20=D1=81?= =?UTF-8?q?=D0=B0=D0=BB=D0=BE=D0=B1=20=D1=81=D0=B0=D0=BB=D0=BE=20=D0=BE?= =?UTF-8?q?=D1=82=D0=B4=D0=B0=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Pac-Man.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Pac-Man.py b/Pac-Man.py index be34c7a..1338e5b 100644 --- a/Pac-Man.py +++ b/Pac-Man.py @@ -114,7 +114,7 @@ def start_screen(): "Если в правилах несколько строк,", "приходится выводить их построчно"] - fon = pygame.transform.scale(load_image('pacman.jpg'), (WIDTH, HEIGHT)) + fon = pygame.transform.scale(load_image('fon.png'), (WIDTH, HEIGHT)) screen.blit(fon, (0, 0)) font = pygame.font.Font(None, 30) text_coord = 50 @@ -171,6 +171,10 @@ def update(self): else: self.image = load_image('pacman2.jpg') self.im += 1 + if pygame.sprite.collide_mask(self, blinky_red_spirit): + self.kill() + terminate() + class Dot(pygame.sprite.Sprite): @@ -206,6 +210,9 @@ def update(self): if event.type == pygame.QUIT: running = False elif event.type == pygame.KEYDOWN: + if event.key == pygame.K_s: + pygame.mixer.music.load('salo.mp3') + pygame.mixer.music.play(0) if event.key == pygame.K_LEFT and karta[player.choord_x][player.choord_y - 1] != '1': if k != 0: if run_down: From 53188a3360e700bd931076ce5c4fcad8b6679964 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BB=D1=8C=D1=8F?= Date: Wed, 22 Jan 2020 21:08:01 +0300 Subject: [PATCH 09/17] =?UTF-8?q?=D0=9E=D1=82=D0=B4=D0=B0=D0=B9=20=D1=81?= =?UTF-8?q?=D0=B0=D0=BB=D0=BE,=20=D1=81=D0=B0=D0=BB=D0=BE=20=D0=BE=D1=82?= =?UTF-8?q?=D0=B4=D0=B0=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/big_dot.jpg | Bin 0 -> 19329 bytes data/black.jpg | Bin 0 -> 18567 bytes data/blinky_1.jpg | Bin 0 -> 2126 bytes data/dot.jpg | Bin 0 -> 18682 bytes data/fon.png | Bin 0 -> 1472 bytes data/hor.jpg | Bin 0 -> 18770 bytes data/hor2.jpg | Bin 0 -> 18770 bytes data/left_down.jpg | Bin 0 -> 18965 bytes data/left_up.jpg | Bin 0 -> 19029 bytes data/map2.txt | 34 ++++++++++++++++++++++++++++++++++ data/pacman.jpg | Bin 0 -> 20642 bytes data/pacman2.jpg | Bin 0 -> 20038 bytes data/pacman3.jpg | Bin 0 -> 20609 bytes data/pacman4.jpg | Bin 0 -> 20566 bytes data/pacman5.jpg | Bin 0 -> 20607 bytes data/right_down.jpg | Bin 0 -> 18964 bytes data/right_up.jpg | Bin 0 -> 18997 bytes data/vert.jpg | Bin 0 -> 18788 bytes data/vert2.jpg | Bin 0 -> 18783 bytes salo.mp3 | Bin 0 -> 157632 bytes 20 files changed, 34 insertions(+) create mode 100644 data/big_dot.jpg create mode 100644 data/black.jpg create mode 100644 data/blinky_1.jpg create mode 100644 data/dot.jpg create mode 100644 data/fon.png create mode 100644 data/hor.jpg create mode 100644 data/hor2.jpg create mode 100644 data/left_down.jpg create mode 100644 data/left_up.jpg create mode 100644 data/map2.txt create mode 100644 data/pacman.jpg create mode 100644 data/pacman2.jpg create mode 100644 data/pacman3.jpg create mode 100644 data/pacman4.jpg create mode 100644 data/pacman5.jpg create mode 100644 data/right_down.jpg create mode 100644 data/right_up.jpg create mode 100644 data/vert.jpg create mode 100644 data/vert2.jpg create mode 100644 salo.mp3 diff --git a/data/big_dot.jpg b/data/big_dot.jpg new file mode 100644 index 0000000000000000000000000000000000000000..04c612c6672464d74d71f26b66c00050dfcb319e GIT binary patch literal 19329 zcmeI3dr(tX9>>qkJ0U31Ac9ds5JA^GZW07CgbacpDyvc+TD#i3fG7|iVF}3U097mn z5zub6x`0@>)mleTsoJdtMOJ8+TDLxz9Z^{yLu=G6;3D2VK?KL?AD;cAGdn#exii0e z@;&$5-{*cObMBe>QCFxNz->`fOcWpp0=x}Bfa-CVEU;UW0f>zSa{vGwzydCS2BTT< z#6U~}bQlxx0|;`ge+!`;iG@(}S*ZmuMl^uadS3+Cu#XSV69EuJiSEOQ0}tFV0ZafB zzyvS>OyE~ZAjy(pvgYN8m!(>5R`CLp#b(VGlM0zaMk*8}DI@2pg4N*lR7!gCvRUc_m4;M;pX-AISOk4^O~HaYCSHIE`{3S*U^_8wEZ$87jB4OM z3ypZOdm`9JqrHgfxucW6{d~N0uLcm*73w;O02~&J&0=!cY&Mt6;qis8d>0qK=cLIK zh10#fXH54JiNrHy{$j~oUy&#vX!cwMsaC7K{X?|D%21g~t#n?5;BvWq7yeXN*QrV$ zk&hC&QC|T82TTQ1>4XoU2?)A?pw0qsc$ZALyX4$p8f^rP&S0|G94^lV3XZwKjOlb5 zgU)0!;I(~pB!jxI(qDQ^XDf{ww^iLcCP)e=R3Z;`1kKGUA}Vl zTF=c}w|oC}=kC4x4<9}L_fP!;gHQhB%nPm*pQkmJ*(-SoU|uu^gU(<(^CD<@@SqDA zOdpapDSSCwpEX&cEaC{~SJfYB;rgoL9PWnf3%n^a)jfU>ovDpv_IimG|4*5XB{rVd zHNdA6@Zr$~KnKnYra1oA@nA{m>dSSHpFY(dYS_#>Fmb}Iit9(d>Rq&Z_npc$L(`kD zeA(7--*CS7$?B+{E~gOP-w zDq2=jC!P>JpB1gM*FAn1zeBStt!qWoP|%gSA&;8=rP9J$|7r7#z1O#rK$^d`mCt>JA9)OGt>@|Di8+74DIew^MDlOpRQgkt5Ta ztOm2pXib;f^_g-~rjUbBojp@;TxYh44dxU}hSvYVsnh;qi%ILB6d0?B&5SUoS{4>$ zo8Kt-ZM?ByoiW7ZuM2bKh1xat^vra#O)s{mr)A`5>{`jl)ip47cFQGUq1mQnOTTvQ=ijYVK}tzQyz_<6`4{}s zpy!%Uxih(!k_~&_1Np&dj5b6s{skJI1PL<6g>fMfKoVnjVO&TAki^(s7#9)&Br$du z#)U)xNsQfvaUl^v5@UB^Tu20v#MoUJ7ZL#^F?JWmg+u^JjNOHCArU|lV|QU(NCc3? z*j*SG5&5kL}ScVS#e1dznoT^JV<0VFYY7siD|07;D9g>fMf zKoVnjVO&TAki^(s7#9)&Br$f^FOF-xV#AyP%QW&}J;q376^$UA-_b^A(w&V3t9qDh z7A&`d2Z!sz<#2eg_=@MsY?|b&*7(Tms@piUkXww;I%=0mjaG$6ljfT9B6&!@t3kxY5JjCA1GIMH>3|m z*Y0`n43;`BORt5_LYOZ=6`;h*&c*#xbyB@S&F%PTJGaP#x#9R=<(XX@ z%R{vr_pR-pQn0_~z^d~p>&^MJE^9ucEN$^Js?f2P~}M)SEn#wf?J_Dx4`H#$z2$<15am!52FE}ygV zcc;>~dhV^Dwg1MgY0f6YEbtFFea_he=k)r6_dG6*Oy8bwUZ0{FnSMryu_^{m@3}ID z;TGN|TxM;_-|y>QYCCx9QEKff%ZVp`6kvA18|bwc=t@tvw^)m>ovXO{VWse1m-%L; zaOL9Z{k7}NS)NIaM{~PH7Z*?4QJvtYPn@&w>zL+%y(N#+hLndZ+B$M;Td&2WRd4*h Hi@N$>hsEud literal 0 HcmV?d00001 diff --git a/data/black.jpg b/data/black.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ca763415fca8b58531d76961f8b46d849222a379 GIT binary patch literal 18567 zcmeI3No*5W7{}ktc$x7+;>6I9n#OSg4hY*bW1GYyI}v0lAf+lHC2dcPJ(I+R*v58h z6RE183zQQHbX5;P>3XO{+jKp&P`cjen$Szr(w62@=uQu~Zyd*tA`W>yAXR+N9_yRu z|9dmv&wp8Op7a%_3g4pYtvy?M5JgdFCw`&AjNQ?lj}Ic$+l$sAgji%iW<=v?4L*rd zHHg76gv7EDh{XpqAOHk_01yBI zK;VWXFc42D$y~;H`*1RwbapH8Y%=W>crWi2cwP{^!Ulg^04+@=@**$sf+X-xAt>&h`dFj=Pq=5hs00KY& z2$TsdT5b3xK}6T;!vhQyQ(99P@Qz76(&Ik7cVatA-CT~JrdmoGyw5^Y^SdXulQcaa z)2Y(Mcg~I1_G%DSm@0gOIuUCy7!7*XXf$#hYqHp_7PHy1vZl7mzN)_AmR0o*hqKx1 zcDmL#IUFsmYuEEaAP{J9hazoa*y|67+9VXmaTc?s&T6d_8y$@zaVxxsY%Honbqv*r zXdA`YsKQy)fbUX|cbBvcrc$G5MyEFzSKTfZ6T?%tGnmc z&0Dr^@4sWmz@2y99aGf7q2c&Fne6Djx%}R-2OfOr;R6RBIW%$P=%bH4{=}0{op|Qt zv(G*M!iz7x^6G1oufOr;TW_Cv|Lg}Je)RDtpMLiF7hit$_0;tFneV>8@WYQkUHp0W z@~^-B{>Ptx{e9&hEib%MoJ*^m*`mB`I4@eKV{}F>FN)6LgR$xKje?#O;QY&V*w8ZxRr_9QURq{HIEDVKzJjRAP(3Pu) zP|Gp8{83eyF3boQhO^m}*h^pWx+vDBO`x$+2B())`fY;)#g+ zmv`QEJL5{kJrL~WdsCh2aD4MvTHQW&TYqe9S1hEsJKC+La9+xfq(;=N?97ksPGqEf z#8sSK!m-xvbG3)l%AnNO)l*X7vxuv7FS%UKoAY~<=^>vG3Wa>U=o3W`R(LXd6InU$ zNo1Nz6LhJWSUR4{#*+!BHlZ9%j%FjS(b2df4a$STsGv!ir=ra z28A|pP>8zbZ*U}4zWg;&;OpU(q|US|zoS9=;6D~V4SxqLh1vewNtjcOxrp3jYB0O3fh2Iv|$Z86*wxFiS1vN!z U@_%1bboKs=CvZX0f}=3~FXJC$NdN!< literal 0 HcmV?d00001 diff --git a/data/blinky_1.jpg b/data/blinky_1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ffe039b0527ae5ac92d6098a621233bea7a30f49 GIT binary patch literal 2126 zcmbW1do85GT5*Qz>LuXmXh* z#;^^Na!DAu>{PA|XN1Q6Hkud=bH+Yr?X%YT>zwm_o_DQht@nA}_5G}Otw%H@`U1$D zuye2jKp+rsRvdt67&r<*z~G$}3o1?+90r3zVF*b{3Ai*uS{jK!B2j2r85A0eMj~Yt zWUz8Ld3kwhjG~ePPDvIgkK1_!1QE|bVNx)d6b^+%;r?fd-T+uQU;r3EK)V4j76ie9 zM6CcG06;LY+a1II5(q5zC?N@#LLkKrH8KDg1c88|kR8|J?#tqP0E&glY8d?}A$OW2 zxjPDHeC2)tT=Pg}v%J&CWi1oGi>Xow1x2M@%G!H$boKTgG$ojsTUZ`FW@~4E+~I`t zFD|Zb?jD~00f9lm=gwasN5{m*#a~KDyL#>Vjr5zhGPANDZ(c{9RV(K&6^O90# zRdvma+Lv{&-nO*1vD)8tbbjjX>mL{#`ph01pZLn1oSL4Q<*j_afY&OXG>$&DdF zv8M*O;l(jw%`QxEfl|xe?dl}OWi*AS*rwTR$T0~_P-m|MU zv5zx%%hu(zOsOh#Ok1bcQPL?@VK1m#6cGTwN=P`iU|Kev`=b!b}dwUL*h5jY%t~BZexA{AtX4%SU(dvQLLEF3=sfRhEf< z*X6F7gg$nE=uA^~(C^S?MOA%TivBw26F_;io;86%{9T~m>Xu;2zte+VY4v&cOs zgf8A2L5;l_r{bb6PeNwRCed+aI)xCd(BS07l>X>9a|=Cl_<6{9zVhH0tDvBVKGeb(nIm^e zsbU!zEs-0sTXSj~PN4(a6N)8f&L_nrPLCSFZcDBQr+ApKKLhu-&LvY2kBIRs9 z!))D5&B>uE!PuXs}ZRd`&t2aqO`L1^(d;iK3aO;Y>dj zt~b|^l{g&8JZ!akg=gO?0x-fOys&39dVKAv<<+9n3s{fl7;=m}wZ9^-CG?`lf z^(-D=!j)%LF&p#eFKcf4#21anUEMYmTwikR7kU-NJ2@DTs$agSdzIRj$7Xr>2Wm)- zFl8kzP}3nR#PMHSMg^{o>S;eKiU78C40B|?(ec6U*X1MO7MuBGPSdeQjihAWRNF~4 zlun!F+A8&`8F+jdJKyjp||Z zi!5w1^JBzXvd-jZ8mL^kL*G9t%eg|2H4u@rcX73$B5^K;T75X<3r3iE5{c)JiU9i# zuSO7WRlEo6bDergb*XS#NUT?}%O889asq9&G5F4mW8G(p0nc!7nJR(3Wx;0Hccq*t zzW{Up*GgLx(U7O5$r#?r(Nv-B`LdyQ=~~y}RqeMqN9%T>ZPfYxoO;hkCiI01W=jP2 z=IE3FZ=1?fegZoi8A(exI0o;#9MOeiyKWK^d^s!D6}&Z8nBo|x5}jM(IV;z*4;je_ zQ8r%K*OgY+Zs9!q>6I@$zOa||3$u!-~Fq# z$+x_ynE_@=W)lhRm{I=fhnK#xMXEhAJhUK$7?d5hXOR&%L!Q+?pmu&E6%;2CiZ-W=<`1S9XsNu literal 0 HcmV?d00001 diff --git a/data/dot.jpg b/data/dot.jpg new file mode 100644 index 0000000000000000000000000000000000000000..661eeb07567eaeefd7cc033209eb146c11bc6c81 GIT binary patch literal 18682 zcmeI3ZERCj7{|};?aS>OtfSzVMY;~?Ahf;rwqslAwv4?9nCS+Cp=jiGw`CR9mbSBH zgb+{x;R9?UAezXV3TiM21BFChL=Z6=R1`2OLsVFd4pd&mP|w}Eju1X@{6J!OPJ5H* zp8n6d_xas_nsZO`Bu^&Kpp1!C6RHqJQD_GKpk#-!qB0TiBUD|DMj?b4q(oXI!_f$Q z;-xYXjbjRb5XGhYmr{IpY{Z&vO9DvVtwGGeP7_k$J{>-vijbko)QKYoAJBjR5C8%| z00;nqdy+tXASj07QFBdWC>AnTih)=tV&+&oYv)*&c!BGlH_7q6%KRyTbs7j=g8cwpsnPnr~x1_D3; z2mk>fkS1`;YQyQ~cyzlyJU~g&sWpWX@0esG1@6OpCx%tj{pt7>DletM`z$i5clX4w zStjd^WouIxpV2d3+N(iS@?`Q`RE`*>Ql(TdDwRsDW;8mZUZ>US24@cFZyb_6^noGS zCX;!X-D5j8Mp8M(N zU(R3Xym;x4KmWRXRjifu7Tdjam}D%u8!dsrPR7JyR*a={in>*iS^}m8tG^XKRnui zO3}3&%TV5W*`DkA(*2hbWxs`*Uq0V{QTO()ElZB^`tPTGzB*C(_&?uWuL)F_?f&f7 zh_S|Rtf4B=g5;@W2Y0S977M!_j$qU-h#{}f-VkbXB!sYov$GE5DNTfhhFQLt+3TAb z2o_s^-@DIh4v59p`uu9PI$Z8+42*Ay_$IeJT-VSttD#7=mX_!>o`gHm6mIgx1aqQk zb};Hr6kEDycjH*&>R#gUxION)haxi_Tv1VxgXJAOZ^H^( zbZ#&vBy7QGZfb%GU$h|-2*(1Upjnzw@P?XW#g^vgfavxM{(P?}=G(l2Q?zlMDA)wi z$=O7wQ!L2m3VA>0we;R#Q#gJ3+oHhN!zsDTBR&DY{?vs+vrF#ijmP7-by(j#z6v4c zE0O+?Y%FKv*gENzNcxkyX;6>Gq9?TC%Y1$aQ`7SiL2oYq!1-OU^5Q)KE zfQyI#kr>pA>i39^ui_DE!qiDn?R} zwVP^>EKqxd+W+^pM>iIn-}u3vtB-U=FONNuM8ep2G7@{w9$B$---_j%I(HoCcx(E| z=?~4jdiqSDYfbjNZAYgxEq`?<@*F-kqNL`+!Hy^97H+K?Q-5XMlf&o#(0a*ctS$T0 MSX+st1J@`03;fli`v3p{ literal 0 HcmV?d00001 diff --git a/data/fon.png b/data/fon.png new file mode 100644 index 0000000000000000000000000000000000000000..8c7e4176702662a55d6aaf33eb75aa6f0bb74a1e GIT binary patch literal 1472 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 CLNoCI literal 0 HcmV?d00001 diff --git a/data/left_up.jpg b/data/left_up.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e0b9aa910a7d3c2a2914d32bdd7ba226ea630a01 GIT binary patch literal 19029 zcmeI3drVVT9LLY??Yl*-q9QL#DOS+7_x2&sL7fOp=Ga6Tj%hOcLWC~IX==W8f4 zJ}T-)+*Cx7v9YM2qHaFs=A333V-KrAMV$&}QFOyS)b3nFFvdST`(w%CIqgk<_w;+t zy}wVtY0f>#FK{|=0StICJtG|u1OaBi7YMWk*Qa^yc>rW)f;a#GA8>&PuwXO-o|uV& zfP^stUx1){`4~>dWka-K_!qqaERZ2m8eEJO=yW3eLr70DqqA7}|RrDBbf(|^LN<(QV14SEXN=oYu zl+K`y2Y|bpe7Gu+gs*1z#*}YOcT7?g06t$|yqV}*-Sn+o1Ou3#2d`Y7Nt5EFF#${f z6Tk#8fnEZStv0j}TA5<(ylh(+R%pr8;lbdhKwdSHl0^yLMA;UsrMkq$c#_9B9 z;u8`L<5SbpUzm{b;*{)HbEdwQ`?|$y%bS^RFDQ1Gyy@}IEnU21={sf1mY4h1R;*jU z;l1}OtF~5e+g`Jy_M=_98yffQ-Pg4L=oiPn{Ob7EC%*Z<<%b`C`uVi~Oxwjvmw&l( z^;&yJ=dIhn{oZxwk3aun@`5YH2WjzOL;NPb^iLlOA;&F4=QbiV>W&KM#hlq?}jY->BhdhE6LS! zHb!Qb{8m3*o?R!u8vty7>#B`g${fatH|$z&SJ$Pi1HO)qS2T9IY0tuq;(ojc&fq20 zR~502Z+E2VE^difUl#BO+UU#qZnw*zRy&GSCacqIQ(2saYOl$qrd5<0B#rgDOqN+T zx72K#X?G+mZX7tIklL-uimCccD$_OImT#X>T4bA2`f|3Vbe1L2su*hw5+->K-a=QQ z&25r;3uilu4c=r~_v{83Gu>*LF{#L!XPBIt-lKqL$+Dh%@pwEck5=U@nyID}6BE^x zMy=5(p+Z?a*WosKm5$=*o(WQI#g-zw%WZc$q|AgSv$MpVEGsFoTMc=pJiXa!)ho>= ztyM|WR+G|X)zV6 z5kL}ScVS#e1dznoT^JV<0VFYY7siD|07;D9g>fMfKoVnjVO&TAki^(s7#9)&Br$du z#)U)xNsQfvaUl^v5@UB^Tu20v#MoUJ7ZL#^F?JWmg+u^JjNOHCArU|lV|V@MxcVwK zYz|na;equS-BnI3f?(b~jpUF_nn7&e}uU;iL+ zKPK+3a)P6oQSdG1^Z1MctvyoZB*Rrspz(iS<#d0+wW>`{XH4s{IcZ@hMz4@ah88~; z3CJd61?ShgVQKTUH&1qPZ+?5|!nCmSp?9Z$cR$SQTR^pX-ixR*Ri~rd<}beZ%F^>g?^+hrD1Tn|c|`l9>yg8o?A2Ko_v&*m z?V6n<7!k=|=_mVd2st9H$U34kO^IJpkfuMG<*)0g&8+z}`}2G%Nx9*vp{R50#raL08;-}HlXu44=~~}dJ9k0;zFU^EQ~uDe z4vjAOh+4MwZS9KRPgIqUx-u*0gWUa%(<-XZ79QAh?vp)toOQ;t{mZtcROC-8Um^2l T$bA{P^7YGOswSqc3i$s4|FKa1 literal 0 HcmV?d00001 diff --git a/data/map2.txt b/data/map2.txt new file mode 100644 index 0000000..4484360 --- /dev/null +++ b/data/map2.txt @@ -0,0 +1,34 @@ +############################ +############################ +1____________21____________2 +.dddddddddddd.!dddddddddddd! +.d1__2d1___2d.!d1___2d1__2d! +.D.##!d.###!d.!d.###!d.##!D! +.d3--4d3---4d34d3---4d3--4d! +.dddddddddddddddddddddddddd! +.d1__2d12d1______2d12d1__2d! +.d3--4d.!d3--21--4d.!d3--4d! +.dddddd.!dddd.!dddd.!dddddd! +3____2d.3__2#.!#1__4!d1____4 +#####!d.1--4#34#3--2!d.##### +#####!d.!##########.!d.##### +#####!d.!#1______2#.!d.##### +-----4d.!#.######!#.!d3----- +######d.!#.######!#.!d###### +_____2d.!#.######!#.!d1_____ +#####!d.!#3------4#.!d.##### +#####!d.!##########.!d.##### +#####!d.!#1______2#.!d.##### +1----4d34#3--21--4#34d3----2 +.dddddddddddd.!dddddddddddd! +.d1__2d1___2d.!d1___2d1__2d! +.d3-2!d3---4d34d3---4d.1-4d! +.Ddd.!ddddddd#@ddddddd.!ddD! +3_2d.!d12d1______2d12d.!d1_4 +1-4d34d.!d3--21--4d.!d34d3-2 +.dddddd.!dddd.!dddd.!dddddd! +.d1____43__2d.!d1__43____2d! +.d3--------4d34d3--------4d! +.dddddddddddddddddddddddddd! +3--------------------------4 +############################ \ No newline at end of file diff --git a/data/pacman.jpg b/data/pacman.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4781183ba3472be53c4bd258521db8315ab00b12 GIT binary patch literal 20642 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 literal 0 HcmV?d00001 diff --git a/data/pacman3.jpg b/data/pacman3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..05a63e7c35ead40608d280feb946f589241f7e50 GIT binary patch literal 20609 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 Opu^Zx)oiKNH? literal 0 HcmV?d00001 diff --git a/data/pacman5.jpg b/data/pacman5.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5693aa6d851f59605e54ec0651f3f4467724a223 GIT binary patch literal 20607 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 literal 0 HcmV?d00001 diff --git a/data/right_down.jpg b/data/right_down.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8e006c988f4ee7711de09a3378b15e00102cc266 GIT binary patch literal 18964 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 R*wkB~DlXH$v?j#0{|mOh=ehs@ literal 0 HcmV?d00001 diff --git a/data/vert2.jpg b/data/vert2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4e343365108cc854aa0d321e48f79674ee0ce686 GIT binary patch literal 18783 zcmeI3du&rx9LLY??c=uV7##z~EUxPc<<<7y+m5YukH8)bl7V}`P-8~B+pz*`OWWD9 zs0;HkoQc9jCrW}ad|=EJ5J5yvDb6Et|Np$cKn0Ha87%Z z-#z`FbMNnSziG}r$&bIp{{qG@Dq2_s2!a4B;0N&CNzWICTr~iclz>?P018M!91y{1 zIy`X@iGYML0Y89XV*MKkHWDX6O-Hi}h$9+69q&~G8SGQS^JM_2iqyR@qTqoWCV&ZG z0+;|MfC)U31S(x_&J*-&o~-o*Jeoqz74Y~p3~i*13{5kPk(q1GvVgIvSem76G-G3E z4U=J`EjDu|0Md=*$f`u8-YAa6bnB)_Owu#}t*xW+2gK;=W_0BuA1^!}ymEOYO^TDo z1TXYC2)61*kFn_LPUxsQW+&z#6iKn@i1eO6p2ZRL=3l$ zh!^1RK&+A^rZMxR6H4te?b;-E{if|y`uyF;CYGJ+)0rK9We@Pd#1DIcrwdx>orE_0I)E>l$8q`IT3jH@w!;`qt*R z-)Vby%X>T8cYgTM$Di!_bkE)|_kFehz}E+lpE!Byn{Q8_`R@FM?|-=X0(ytJiw_2mbhT@YY|qhwcb@!Ik20TCvRT%S#3G5{bp6SSI8}h=TASRbojRBTbxF zDzmShpk>!nN%J>t-+fG;ZZ7Ma=*M#cUxc#JP<7#YW1w~N>Jj>BW z?l%o!Mlvm5N3nK5u?GnbjcWU)1jLpySVb>7(JABX~852j?x z_c`tGwW-46S(7`aH>GUT{liA*aTeGE&RpS-%s?{+hOQ7^rG!7Xdj<__vQ0vA_avJ; z+ynW+C`KEi*F1!VFM@JK8i2#xqy9?t&B7h{u?!vf`2q1~EyD%;!0!U)) zE{qF_0FoHH>!ITst=Mq7VVOn{)?-9!mP7<0e4~w&kV2EfdKrmK3JaOwLCNFf6s3S= zO^SGhB2EdLOg=6lUO7&PBQ;BKv@i;Om6VJU6lm?9nk6l+Spxh1_ccr5#_QJ`Z|j41 z-l=Ig34Kd>aG^Xew|_x+ zVb`|7f#&eevfSbwEwg);oSlDoKM$IMjc2}i@%+!XW}CvTt1P8e&mKK8U~RrV3(mc3 e+qO_U4|F${+!@N}LD|eyU1{OO0sU1y-}x^|x8}$I literal 0 HcmV?d00001 diff --git a/salo.mp3 b/salo.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..45e894898d993e98198b4adbe9e11897fe28e139 GIT binary patch literal 157632 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

I@pQB#?lQs-p%_-8>lW;;F8zu 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

qdzB@K0ApM=-j!(Hh+SNv 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 literal 0 HcmV?d00001 From c8512a19ac3f6a0744b9bd19c537944841d00593 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BB=D1=8C=D1=8F?= Date: Thu, 23 Jan 2020 20:42:31 +0300 Subject: [PATCH 10/17] =?UTF-8?q?=D0=9F=D0=B0=D0=BA=D0=BC=D0=B0=D0=BD=20?= =?UTF-8?q?=D0=BE=D1=85=D0=BE=D1=82=D0=BD=D0=B8=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Pac-Man.py | 115 ++++++++++++++++++++++++++++++----------------------- Spirits.py | 3 ++ 2 files changed, 69 insertions(+), 49 deletions(-) diff --git a/Pac-Man.py b/Pac-Man.py index 1338e5b..0a00b2f 100644 --- a/Pac-Man.py +++ b/Pac-Man.py @@ -17,6 +17,7 @@ screen = pygame.display.set_mode((WIDTH, HEIGHT)) clock = pygame.time.Clock() player = None +pill = False all_sprites = pygame.sprite.Group() @@ -90,10 +91,10 @@ def generate_level(level): new_player = Pacman(x, y, 25, 14) s.append('.') elif level[y][x] == 'd': - Dot('dot', x, y) + Dot(x, y) s.append('.') elif level[y][x] == 'D': - Dot('big_dot', x, y) + Big_Dot(x, y) s.append('.') if len(s) == 28: karta.append(s) @@ -142,7 +143,8 @@ def start_screen(): 'vert2': load_image('vert2.jpg'), 'hor2': load_image('hor2.jpg')} player_image = load_image('pacman.jpg') blinky_image = load_image('blinky_1.jpg') -dot_images = {'dot': load_image('dot.jpg'), 'big_dot': load_image('big_dot.jpg')} +dot_image = load_image('dot.jpg') +big_dot_image = load_image('big_dot.jpg') tile_width = tile_height = 24 @@ -160,11 +162,12 @@ def __init__(self, pos_x, pos_y, choord_x, choord_y): self.choord_x = choord_x self.choord_y = choord_y self.im = 0 - self.rect = self.image.get_rect().move(tile_width * pos_x - 5, tile_height * pos_y - 8) + self.rect = self.image.get_rect().move(tile_width * pos_x - 8, tile_height * pos_y - 8) self.mask = pygame.mask.from_surface(self.image) def update(self): global pac + global pill if (self.im // 10) % 2 == 0: self.image = load_image(pac) self.im += 1 @@ -172,15 +175,19 @@ def update(self): self.image = load_image('pacman2.jpg') self.im += 1 if pygame.sprite.collide_mask(self, blinky_red_spirit): - self.kill() - terminate() + print(pill) + if pill: + blinky_red_spirit.kill() + else: + self.kill() + terminate() class Dot(pygame.sprite.Sprite): - def __init__(self, dot_type, pos_x, pos_y): + def __init__(self, pos_x, pos_y): super().__init__(dots_group, all_sprites) - self.image = dot_images[dot_type] + self.image = dot_image self.rect = self.image.get_rect().move(tile_width * pos_x, tile_height * pos_y) self.mask = pygame.mask.from_surface(self.image) @@ -190,7 +197,25 @@ def update(self): score += 1 self.kill() if score == 244: - terminate() + generate_level('map2.txt') + + +class Big_Dot(pygame.sprite.Sprite): + def __init__(self, pos_x, pos_y): + super().__init__(dots_group, all_sprites) + self.image = big_dot_image + self.rect = self.image.get_rect().move(tile_width * pos_x, tile_height * pos_y) + self.mask = pygame.mask.from_surface(self.image) + + def update(self): + global score + global pill + if pygame.sprite.collide_mask(self, player): + pill = True + score += 1 + self.kill() + if score == 244: + generate_level('map2.txt') blinky_red_spirit = Spirits.Blinky(14, 13, 13, 14, blinky_image) @@ -213,54 +238,50 @@ def update(self): if event.key == pygame.K_s: pygame.mixer.music.load('salo.mp3') pygame.mixer.music.play(0) - if event.key == pygame.K_LEFT and karta[player.choord_x][player.choord_y - 1] != '1': - if k != 0: - if run_down: - player.rect.y -= k - elif run_up: - player.rect.y += k - elif run_right: - player.rect.x -= k - k = 0 + if event.key == pygame.K_LEFT and karta[player.choord_x][player.choord_y - 1] != '1' and not run_left: + if run_down: + player.rect.y -= k + elif run_up: + player.rect.y += k + elif run_right: + player.rect.x -= k + k = 0 run_left = True run_right = False run_up = False run_down = False - if event.key == pygame.K_RIGHT and karta[player.choord_x][player.choord_y + 1] != '1': - if k != 0: - if run_down: - player.rect.y -= k - elif run_up: - player.rect.y += k - elif run_left: - player.rect.x += k - k = 0 + if event.key == pygame.K_RIGHT and karta[player.choord_x][player.choord_y + 1] != '1' and not run_right: + if run_down: + player.rect.y -= k + elif run_up: + player.rect.y += k + elif run_left: + player.rect.x -= k + k = 0 run_right = True run_left = False run_up = False run_down = False - if event.key == pygame.K_UP and karta[player.choord_x - 1][player.choord_y] != '1': - if k != 0: - if run_down: - player.rect.y -= k - elif run_left: - player.rect.x += k - elif run_right: - player.rect.x -= k - k = 0 + if event.key == pygame.K_UP and karta[player.choord_x - 1][player.choord_y] != '1' and not run_up: + if run_down: + player.rect.y -= k + elif run_left: + player.rect.y += k + elif run_right: + player.rect.x -= k + k = 0 run_up = True run_right = False run_left = False run_down = False - if event.key == pygame.K_DOWN and karta[player.choord_x + 1][player.choord_y] != '1': - if k != 0: - if run_up: - player.rect.y += k - elif run_left: - player.rect.x += k - elif run_right: - player.rect.x -= k - k = 0 + if event.key == pygame.K_DOWN and karta[player.choord_x + 1][player.choord_y] != '1' and not run_down: + if run_left: + player.rect.y -= k + elif run_up: + player.rect.y += k + elif run_right: + player.rect.x -= k + k = 0 run_down = True run_right = False run_up = False @@ -271,7 +292,6 @@ def update(self): k += 1 if k == 24: player.choord_x = player.choord_x + 1 - print(player.choord_x, player.choord_y) k = 0 elif run_up and karta[player.choord_x - 1][player.choord_y] != '1': player.rect.y -= 1 @@ -279,7 +299,6 @@ def update(self): k += 1 if k == 24: player.choord_x = player.choord_x - 1 - print(player.choord_x, player.choord_y) k = 0 elif run_left and karta[player.choord_x][player.choord_y - 1] != '1': player.rect.x -= 1 @@ -287,7 +306,6 @@ def update(self): k += 1 if k == 24: player.choord_y = player.choord_y - 1 - print(player.choord_x, player.choord_y) k = 0 elif run_right and karta[player.choord_x][player.choord_y + 1] != '1': player.rect.x += 1 @@ -295,7 +313,6 @@ def update(self): k += 1 if k == 24: player.choord_y = player.choord_y + 1 - print(player.choord_x, player.choord_y) k = 0 blinky_red_spirit.get_a_mission(player.choord_x, player.choord_y) if min_way == 'UP': diff --git a/Spirits.py b/Spirits.py index 8f5c4a9..2a83d02 100644 --- a/Spirits.py +++ b/Spirits.py @@ -83,6 +83,9 @@ def folow(self, karta, blinky_last_position, x, y, m_x, m_y, possible_turns): min_way = coords[2] return min_way + if pygame.sprite.collide_mask(self, player) and pill: + self.kill() + class Pinky(pygame.sprite.Sprite): # Пинки - Розовый призрак def __init__(self, pos_x, pos_y, choord_x, choord_y, filename): From 0f4458c2bff2aa8ada26010c110bf28da325e33f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BB=D1=8C=D1=8F?= Date: Sat, 25 Jan 2020 21:29:38 +0300 Subject: [PATCH 11/17] =?UTF-8?q?=D0=BF=D0=B0=D1=87=D1=82=D0=B8=20=D0=B3?= =?UTF-8?q?=D0=B0=D1=82=D0=BE=D0=B2=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Pac-Man.py | 305 +++++++++++++++++++++++++++++++++++++++++++++----- Spirits.py | 246 +++++++++++++++++++++++++++++++++++++--- data/dot.jpg | Bin 18682 -> 18648 bytes data/hor2.jpg | Bin 18770 -> 18794 bytes data/map2.txt | 58 +++++----- 5 files changed, 531 insertions(+), 78 deletions(-) diff --git a/Pac-Man.py b/Pac-Man.py index 0a00b2f..987b0b6 100644 --- a/Pac-Man.py +++ b/Pac-Man.py @@ -5,8 +5,6 @@ pygame.init() pygame.key.set_repeat(200, 70) - - FPS = 60 WIDTH = 24 * 28 HEIGHT = 24 * 34 @@ -18,8 +16,7 @@ clock = pygame.time.Clock() player = None pill = False - - +t = 0 all_sprites = pygame.sprite.Group() tiles_group = pygame.sprite.Group() player_group = pygame.sprite.Group() @@ -33,7 +30,6 @@ def load_image(name, color_key=None): except pygame.error as message: print('Cannot load image:', name) raise SystemExit(message) - if color_key is not None: if color_key == -1: color_key = image.get_at((0, 0)) @@ -44,20 +40,14 @@ def load_image(name, color_key=None): def load_level(filename): filename = "data/" + filename - # читаем уровень, убирая символы перевода строки with open(filename, 'r') as mapFile: level_map = [line.strip() for line in mapFile] - - # и подсчитываем максимальную длину max_width = max(map(len, level_map)) - - # дополняем каждую строку пустыми клетками ('.') return list(map(lambda x: x.ljust(max_width, '.'), level_map)) def generate_level(level): global karta s = [] - new_player, x, y = None, None, None for y in range(len(level)): for x in range(len(level[y])): if level[y][x] == '.': @@ -87,6 +77,18 @@ def generate_level(level): elif level[y][x] == '4': Tile('right_down', x, y) s.append('1') + elif level[y][x] == '*': + Tile('d_hor2', x, y) + s.append('1') + elif level[y][x] == '&': + Tile('d_hor', x, y) + s.append('1') + elif level[y][x] == '?': + Tile('d_vert2', x, y) + s.append('1') + elif level[y][x] == '+': + Tile('d_vert', x, y) + s.append('1') elif level[y][x] == '@': new_player = Pacman(x, y, 25, 14) s.append('.') @@ -101,8 +103,21 @@ def generate_level(level): s = [] karta[16][22] = 'x' karta[16][5] = 'x' - for elem in karta: - print(elem) + karta[14][14] = 'S' + karta[15][15] = '1' + karta[16][15] = 'O' + karta[17][15] = '1' + karta[16][13] = 'B' + karta[17][13] = '1' + karta[17][14] = '1' + karta[15][11] = '1' + karta[15][12] = '1' + karta[15][13] = '1' + karta[15][16] = '1' + karta[17][11] = '1' + karta[17][12] = '1' + karta[17][16] = '1' + karta[16][11] = '1' return new_player, x, y def terminate(): @@ -133,16 +148,20 @@ def start_screen(): if event.type == pygame.QUIT: terminate() elif event.type == pygame.KEYDOWN or event.type == pygame.MOUSEBUTTONDOWN: - return # начинаем игру + return pygame.display.flip() clock.tick(FPS) tile_images = {'empty': load_image('black.jpg'), 'vert': load_image('vert.jpg'), 'hor': load_image('hor.jpg'), 'left_up': load_image('left_up.jpg'), 'left_down': load_image('left_down.jpg'), 'right_up': load_image('right_up.jpg'), 'right_down': load_image('right_down.jpg'), - 'vert2': load_image('vert2.jpg'), 'hor2': load_image('hor2.jpg')} + 'vert2': load_image('vert2.jpg'), 'hor2': load_image('hor2.jpg'), 'd_hor2': load_image('d_hor2.jpg'), + 'd_hor': load_image('d_hor.jpg'), 'd_vert2': load_image('d_vert2.jpg'), 'd_vert': load_image('d_vert.jpg')} player_image = load_image('pacman.jpg') blinky_image = load_image('blinky_1.jpg') +pinky_image = load_image('pinky_1.jpg') +clyde_image = load_image('clyde_1.jpg') +inky_image = load_image('inky_1.jpg') dot_image = load_image('dot.jpg') big_dot_image = load_image('big_dot.jpg') tile_width = tile_height = 24 @@ -175,12 +194,29 @@ def update(self): self.image = load_image('pacman2.jpg') self.im += 1 if pygame.sprite.collide_mask(self, blinky_red_spirit): - print(pill) if pill: blinky_red_spirit.kill() else: self.kill() terminate() + if pygame.sprite.collide_mask(self, pinky_pink_spirit): + if pill: + pinky_pink_spirit.kill() + else: + self.kill() + terminate() + if pygame.sprite.collide_mask(self, clyde_orange_spirit): + if pill: + clyde_orange_spirit.kill() + else: + self.kill() + terminate() + if pygame.sprite.collide_mask(self, inky_blue_spirit): + if pill: + inky_blue_spirit.kill() + else: + self.kill() + terminate() @@ -211,16 +247,46 @@ def update(self): global score global pill if pygame.sprite.collide_mask(self, player): + pygame.mixer.music.load('salo.mp3') + pygame.mixer.music.play() pill = True score += 1 self.kill() if score == 244: generate_level('map2.txt') + if pill: + global t + if t < 1500: + t += 1 + else: + t = 0 + pill = False + print('j') + + blinky_red_spirit = Spirits.Blinky(14, 13, 13, 14, blinky_image) blinky_last_position = 'LEFT' -min_way = 'RIGHT' +min_way_red = 'RIGHT' +k_red = 0 +pinky_pink_spirit = Spirits.Pinky(14, 16, 16, 14, pinky_image) +pinky_last_position = 'DOWN' +min_way_pink = 'UP' +pinky_leave_home = False +k_pink = 0 +inky_blue_spirit = Spirits.Inky(11, 16, 16, 11, inky_image) +inky_last_position = 'LEFT' +min_way_blue = 'RIGHT' +inky_leave_home_1 = False +inky_leave_home_2 = False +k_blue = 0 +clyde_orange_spirit = Spirits.Clyde(16, 16, 16, 16, clyde_image) +clyde_last_position = 'RIGHT' +min_way_orange = 'LEFT' +clyde_leave_home_1 = False +clyde_leave_home_2 = False +k_orange = 0 start_screen() player, level_x, level_y = generate_level(load_level('map2.txt')) running = True @@ -235,9 +301,6 @@ def update(self): if event.type == pygame.QUIT: running = False elif event.type == pygame.KEYDOWN: - if event.key == pygame.K_s: - pygame.mixer.music.load('salo.mp3') - pygame.mixer.music.play(0) if event.key == pygame.K_LEFT and karta[player.choord_x][player.choord_y - 1] != '1' and not run_left: if run_down: player.rect.y -= k @@ -256,7 +319,7 @@ def update(self): elif run_up: player.rect.y += k elif run_left: - player.rect.x -= k + player.rect.x += k k = 0 run_right = True run_left = False @@ -266,7 +329,7 @@ def update(self): if run_down: player.rect.y -= k elif run_left: - player.rect.y += k + player.rect.x += k elif run_right: player.rect.x -= k k = 0 @@ -276,7 +339,7 @@ def update(self): run_down = False if event.key == pygame.K_DOWN and karta[player.choord_x + 1][player.choord_y] != '1' and not run_down: if run_left: - player.rect.y -= k + player.rect.x += k elif run_up: player.rect.y += k elif run_right: @@ -314,8 +377,11 @@ def update(self): if k == 24: player.choord_y = player.choord_y + 1 k = 0 + + # Движение Блинки (красный) + blinky_red_spirit.get_a_mission(player.choord_x, player.choord_y) - if min_way == 'UP': + if min_way_red == 'UP': blinky_last_position = 'DOWN' blinky_red_spirit.rect.y -= 1 k_red += 1 @@ -323,12 +389,12 @@ def update(self): blinky_red_spirit.choord_x = blinky_red_spirit.choord_x - 1 if karta[blinky_red_spirit.choord_x][blinky_red_spirit.choord_y] == '.': possible_turns = ['UP', 'DOWN', 'LEFT', 'RIGHT'] - min_way = blinky_red_spirit.folow(karta, blinky_last_position, + min_way_red = blinky_red_spirit.folow(karta, blinky_last_position, blinky_red_spirit.choord_x, blinky_red_spirit.choord_y, blinky_red_spirit.mission[0], blinky_red_spirit.mission[1], possible_turns) k_red = 0 - elif min_way == 'DOWN': + elif min_way_red == 'DOWN': blinky_last_position = 'UP' blinky_red_spirit.rect.y += 1 k_red += 1 @@ -336,12 +402,12 @@ def update(self): blinky_red_spirit.choord_x = blinky_red_spirit.choord_x + 1 if karta[blinky_red_spirit.choord_x][blinky_red_spirit.choord_y] == '.': possible_turns = ['UP', 'DOWN', 'LEFT', 'RIGHT'] - min_way = blinky_red_spirit.folow(karta, blinky_last_position, + min_way_red = blinky_red_spirit.folow(karta, blinky_last_position, blinky_red_spirit.choord_x, blinky_red_spirit.choord_y, blinky_red_spirit.mission[0], blinky_red_spirit.mission[1], possible_turns) k_red = 0 - elif min_way == 'LEFT': + elif min_way_red == 'LEFT': blinky_last_position = 'RIGHT' blinky_red_spirit.rect.x -= 1 k_red += 1 @@ -349,12 +415,12 @@ def update(self): blinky_red_spirit.choord_y = blinky_red_spirit.choord_y - 1 if karta[blinky_red_spirit.choord_x][blinky_red_spirit.choord_y] == '.': possible_turns = ['UP', 'DOWN', 'LEFT', 'RIGHT'] - min_way = blinky_red_spirit.folow(karta, blinky_last_position, + min_way_red = blinky_red_spirit.folow(karta, blinky_last_position, blinky_red_spirit.choord_x, blinky_red_spirit.choord_y, blinky_red_spirit.mission[0], blinky_red_spirit.mission[1], possible_turns) k_red = 0 - elif min_way == 'RIGHT': + elif min_way_red == 'RIGHT': blinky_last_position = 'LEFT' blinky_red_spirit.rect.x += 1 k_red += 1 @@ -362,11 +428,188 @@ def update(self): blinky_red_spirit.choord_y = blinky_red_spirit.choord_y + 1 if karta[blinky_red_spirit.choord_x][blinky_red_spirit.choord_y] == '.': possible_turns = ['UP', 'DOWN', 'LEFT', 'RIGHT'] - min_way = blinky_red_spirit.folow(karta, blinky_last_position, + min_way_red = blinky_red_spirit.folow(karta, blinky_last_position, blinky_red_spirit.choord_x, blinky_red_spirit.choord_y, blinky_red_spirit.mission[0], blinky_red_spirit.mission[1], possible_turns) k_red = 0 + + # Движение Пинки (розовый) + + if pinky_pink_spirit.choord_x == 13 and pinky_pink_spirit.choord_y == 14: + pinky_leave_home = True + + pinky_pink_spirit.get_a_mission(player.choord_x, player.choord_y, karta) + if min_way_pink == 'UP': + pinky_last_position = 'DOWN' + pinky_pink_spirit.rect.y -= 1 + k_pink += 1 + if k_pink == 24: + pinky_pink_spirit.choord_x = pinky_pink_spirit.choord_x - 1 + if karta[pinky_pink_spirit.choord_x][pinky_pink_spirit.choord_y] == '.': + possible_turns_pink = ['UP', 'DOWN', 'LEFT', 'RIGHT'] + min_way_pink = pinky_pink_spirit.folow(karta, pinky_last_position, + pinky_pink_spirit.choord_x, pinky_pink_spirit.choord_y, + pinky_pink_spirit.mission[0], pinky_pink_spirit.mission[1], + possible_turns_pink, pinky_leave_home) + k_pink = 0 + elif min_way_pink == 'DOWN': + pinky_last_position = 'UP' + pinky_pink_spirit.rect.y += 1 + k_pink += 1 + if k_pink == 24: + pinky_pink_spirit.choord_x = pinky_pink_spirit.choord_x + 1 + if karta[pinky_pink_spirit.choord_x][pinky_pink_spirit.choord_y] == '.': + possible_turns_pink = ['UP', 'DOWN', 'LEFT', 'RIGHT'] + min_way_pink = pinky_pink_spirit.folow(karta, pinky_last_position, + pinky_pink_spirit.choord_x, pinky_pink_spirit.choord_y, + pinky_pink_spirit.mission[0], pinky_pink_spirit.mission[1], + possible_turns_pink, pinky_leave_home) + k_pink = 0 + elif min_way_pink == 'LEFT': + pinky_last_position = 'RIGHT' + pinky_pink_spirit.rect.x -= 1 + k_pink += 1 + if k_pink == 24: + pinky_pink_spirit.choord_y = pinky_pink_spirit.choord_y - 1 + if karta[pinky_pink_spirit.choord_x][pinky_pink_spirit.choord_y] == '.': + possible_turns_pink = ['UP', 'DOWN', 'LEFT', 'RIGHT'] + min_way_pink = pinky_pink_spirit.folow(karta, pinky_last_position, + pinky_pink_spirit.choord_x, pinky_pink_spirit.choord_y, + pinky_pink_spirit.mission[0], pinky_pink_spirit.mission[1], + possible_turns_pink, pinky_leave_home) + k_pink = 0 + elif min_way_pink == 'RIGHT': + pinky_last_position = 'LEFT' + pinky_pink_spirit.rect.x += 1 + k_pink += 1 + if k_pink == 24: + pinky_pink_spirit.choord_y = pinky_pink_spirit.choord_y + 1 + if karta[pinky_pink_spirit.choord_x][pinky_pink_spirit.choord_y] == '.': + possible_turns_pink = ['UP', 'DOWN', 'LEFT', 'RIGHT'] + min_way_pink = pinky_pink_spirit.folow(karta, pinky_last_position, + pinky_pink_spirit.choord_x, pinky_pink_spirit.choord_y, + pinky_pink_spirit.mission[0], pinky_pink_spirit.mission[1], + possible_turns_pink, pinky_leave_home) + k_pink = 0 + + # Движение Клайда (Оранжевый) + + if clyde_orange_spirit.choord_x == 16 and clyde_orange_spirit.choord_y == 14: + clyde_leave_home_1 = True + if clyde_orange_spirit.choord_x == 13 and clyde_orange_spirit.choord_y == 14: + clyde_leave_home_2 = True + + clyde_orange_spirit.get_a_mission(player.choord_x, player.choord_y, + clyde_orange_spirit.choord_x, clyde_orange_spirit.choord_y) + if min_way_orange == 'UP': + clyde_last_position = 'DOWN' + clyde_orange_spirit.rect.y -= 1 + k_orange += 1 + if k_orange == 24: + clyde_orange_spirit.choord_x = clyde_orange_spirit.choord_x - 1 + if karta[clyde_orange_spirit.choord_x][clyde_orange_spirit.choord_y] == '.': + possible_turns_orange = ['UP', 'DOWN', 'LEFT', 'RIGHT'] + min_way_orange = clyde_orange_spirit.folow(karta, clyde_last_position, + clyde_orange_spirit.choord_x, clyde_orange_spirit.choord_y, + clyde_orange_spirit.mission[0], clyde_orange_spirit.mission[1], + possible_turns_orange, clyde_leave_home_1, clyde_leave_home_2) + k_orange = 0 + elif min_way_orange == 'DOWN': + clyde_last_position = 'UP' + clyde_orange_spirit.rect.y += 1 + k_orange += 1 + if k_orange == 24: + clyde_orange_spirit.choord_x = clyde_orange_spirit.choord_x + 1 + if karta[clyde_orange_spirit.choord_x][clyde_orange_spirit.choord_y] == '.': + possible_turns_orange = ['UP', 'DOWN', 'LEFT', 'RIGHT'] + min_way_orange = clyde_orange_spirit.folow(karta, clyde_last_position, + clyde_orange_spirit.choord_x, clyde_orange_spirit.choord_y, + clyde_orange_spirit.mission[0], clyde_orange_spirit.mission[1], + possible_turns_orange, clyde_leave_home_1, clyde_leave_home_2) + k_orange = 0 + elif min_way_orange == 'LEFT': + clyde_last_position = 'RIGHT' + clyde_orange_spirit.rect.x -= 1 + k_orange += 1 + if k_orange == 24: + clyde_orange_spirit.choord_y = clyde_orange_spirit.choord_y - 1 + if karta[clyde_orange_spirit.choord_x][clyde_orange_spirit.choord_y] == '.': + possible_turns_orange = ['UP', 'DOWN', 'LEFT', 'RIGHT'] + min_way_orange = clyde_orange_spirit.folow(karta, clyde_last_position, + clyde_orange_spirit.choord_x, clyde_orange_spirit.choord_y, + clyde_orange_spirit.mission[0], clyde_orange_spirit.mission[1], + possible_turns_orange, clyde_leave_home_1, clyde_leave_home_2) + k_orange = 0 + elif min_way_orange == 'RIGHT': + clyde_last_position = 'LEFT' + clyde_orange_spirit.rect.x += 1 + k_orange += 1 + if k_orange == 24: + clyde_orange_spirit.choord_y = clyde_orange_spirit.choord_y + 1 + if karta[clyde_orange_spirit.choord_x][clyde_orange_spirit.choord_y] == '.': + possible_turns_orange = ['UP', 'DOWN', 'LEFT', 'RIGHT'] + min_way_orange = clyde_orange_spirit.folow(karta, clyde_last_position, + clyde_orange_spirit.choord_x, clyde_orange_spirit.choord_y, + clyde_orange_spirit.mission[0], clyde_orange_spirit.mission[1], + possible_turns_orange, clyde_leave_home_1, clyde_leave_home_2) + + # Движение Инки (синий) + + inky_blue_spirit.get_a_mission(player.choord_x, player.choord_y, + blinky_red_spirit.choord_x, blinky_red_spirit.choord_y) + if min_way_blue == 'UP': + inky_last_position = 'DOWN' + inky_blue_spirit.rect.y -= 1 + k_blue += 1 + if k_blue == 24: + inky_blue_spirit.choord_x = inky_blue_spirit.choord_x - 1 + if karta[inky_blue_spirit.choord_x][inky_blue_spirit.choord_y] == '.': + possible_turns_blue = ['UP', 'DOWN', 'LEFT', 'RIGHT'] + min_way_blue = inky_blue_spirit.folow(karta, inky_last_position, + inky_blue_spirit.choord_x, inky_blue_spirit.choord_y, + inky_blue_spirit.mission[0], inky_blue_spirit.mission[1], + possible_turns_blue, inky_leave_home_1, inky_leave_home_2) + k_blue = 0 + elif min_way_blue == 'DOWN': + inky_last_position = 'UP' + inky_blue_spirit.rect.y += 1 + k_blue += 1 + if k_blue == 24: + inky_blue_spirit.choord_x = inky_blue_spirit.choord_x + 1 + if karta[inky_blue_spirit.choord_x][inky_blue_spirit.choord_y] == '.': + possible_turns_blue = ['UP', 'DOWN', 'LEFT', 'RIGHT'] + min_way_blue = inky_blue_spirit.folow(karta, inky_last_position, + inky_blue_spirit.choord_x, inky_blue_spirit.choord_y, + inky_blue_spirit.mission[0], inky_blue_spirit.mission[1], + possible_turns_blue, inky_leave_home_1, inky_leave_home_2) + k_blue = 0 + elif min_way_blue == 'LEFT': + inky_last_position = 'RIGHT' + inky_blue_spirit.rect.x -= 1 + k_blue += 1 + if k_blue == 24: + inky_blue_spirit.choord_y = inky_blue_spirit.choord_y - 1 + if karta[inky_blue_spirit.choord_x][inky_blue_spirit.choord_y] == '.': + possible_turns_blue = ['UP', 'DOWN', 'LEFT', 'RIGHT'] + min_way_blue = inky_blue_spirit.folow(karta, inky_last_position, + inky_blue_spirit.choord_x, inky_blue_spirit.choord_y, + inky_blue_spirit.mission[0], inky_blue_spirit.mission[1], + possible_turns_blue, inky_leave_home_1, inky_leave_home_2) + k_blue = 0 + elif min_way_blue == 'RIGHT': + inky_last_position = 'LEFT' + inky_blue_spirit.rect.x += 1 + k_blue += 1 + if k_blue == 24: + inky_blue_spirit.choord_y = inky_blue_spirit.choord_y + 1 + if karta[inky_blue_spirit.choord_x][inky_blue_spirit.choord_y] == '.': + possible_turns_blue = ['UP', 'DOWN', 'LEFT', 'RIGHT'] + min_way_blue = inky_blue_spirit.folow(karta, inky_last_position, + inky_blue_spirit.choord_x, inky_blue_spirit.choord_y, + inky_blue_spirit.mission[0], inky_blue_spirit.mission[1], + possible_turns_blue, inky_leave_home_1, inky_leave_home_2) + k_blue = 0 screen.fill(pygame.Color(0, 0, 0)) tiles_group.draw(screen) dots_group.draw(screen) diff --git a/Spirits.py b/Spirits.py index 2a83d02..7ef2377 100644 --- a/Spirits.py +++ b/Spirits.py @@ -1,7 +1,7 @@ - import os import sys import pygame +from random import randint pygame.init() @@ -10,7 +10,7 @@ tile_width = tile_height = 24 -class Blinky(pygame.sprite.Sprite): # Блинки - Красный призрак +class Blinky(pygame.sprite.Sprite): # TODO Блинки - Красный призрак TODO def __init__(self, pos_x, pos_y, choord_x, choord_y, filename): super().__init__(spirits_group, all_sprites) self.mission = ('', '') @@ -29,22 +29,22 @@ def folow(self, karta, blinky_last_position, x, y, m_x, m_y, possible_turns): if possible_turns[i] == blinky_last_position: del possible_turns[i] break - if karta[x + 1][y] == '1' or karta[x + 1][y] == 'x': + if karta[x + 1][y] == '1' or karta[x + 1][y] == 'x' or karta[x + 1][y] == 'S': for i in range(len(possible_turns)): if possible_turns[i] == 'DOWN': del possible_turns[i] break - if karta[x - 1][y] == '1' or karta[x - 1][y] == 'x': + if karta[x - 1][y] == '1' or karta[x - 1][y] == 'x' or karta[x - 1][y] == 'S': for i in range(len(possible_turns)): if possible_turns[i] == 'UP': del possible_turns[i] break - if karta[x][y + 1] == '1' or karta[x][y + 1] == 'x': + if karta[x][y + 1] == '1' or karta[x][y + 1] == 'x' or karta[x][y + 1] == 'S': for i in range(len(possible_turns)): if possible_turns[i] == 'RIGHT': del possible_turns[i] break - if karta[x][y - 1] == '1' or karta[x][y + 1] == 'x': + if karta[x][y - 1] == '1' or karta[x][y - 1] == 'x' or karta[x][y - 1] == 'S': for i in range(len(possible_turns)): if possible_turns[i] == 'LEFT': del possible_turns[i] @@ -83,11 +83,105 @@ def folow(self, karta, blinky_last_position, x, y, m_x, m_y, possible_turns): min_way = coords[2] return min_way - if pygame.sprite.collide_mask(self, player) and pill: - self.kill() + +class Pinky(pygame.sprite.Sprite): # TODO Пинки - Розовый призрак TODO + def __init__(self, pos_x, pos_y, choord_x, choord_y, filename): + super().__init__(spirits_group, all_sprites) + self.mission = ('', '') + self.image = filename + self.choord_x = choord_x + self.choord_y = choord_y + self.rect = self.image.get_rect().move(tile_width * pos_x - 10, tile_height * pos_y - 10) + + def get_a_mission(self, choord_x, choord_y, karta): + min_m_x = int(choord_x) - 4 + if min_m_x < 3: + min_m_x = 3 + max_m_x = int(choord_x) + 4 + if max_m_x > 31: + max_m_x = 31 + min_m_y = int(choord_y) - 4 + if min_m_y < 1: + min_m_y = 1 + max_m_y = int(choord_y) + 4 + if max_m_y > 26: + max_m_y = 26 + m_x = randint(min_m_x, max_m_x) + m_y = randint(min_m_y, max_m_y) + while karta[m_x][m_y] == '1': + m_x = randint(min_m_x, max_m_x) + m_y = randint(min_m_y, max_m_y) + self.mission = (m_x, m_y) + + def folow(self, karta, blinky_last_position, x, y, m_x, m_y, possible_turns, pinky_leave_home): + x = int(x) + y = int(y) + for i in range(len(possible_turns)): + if possible_turns[i] == blinky_last_position: + del possible_turns[i] + break + if karta[x + 1][y] == '1' or karta[x + 1][y] == 'x' or karta[x + 1][y] == 'B' or karta[x + 1][y] == 'O': + for i in range(len(possible_turns)): + if possible_turns[i] == 'DOWN': + del possible_turns[i] + break + if karta[x - 1][y] == '1' or karta[x - 1][y] == 'x' or karta[x - 1][y] == 'B' or karta[x - 1][y] == 'O': + for i in range(len(possible_turns)): + if possible_turns[i] == 'UP': + del possible_turns[i] + break + if karta[x][y + 1] == '1' or karta[x][y + 1] == 'x' or karta[x][y + 1] == 'B' or karta[x][y + 1] == 'O': + for i in range(len(possible_turns)): + if possible_turns[i] == 'RIGHT': + del possible_turns[i] + break + if karta[x][y - 1] == '1' or karta[x][y - 1] == 'x' or karta[x][y - 1] == 'B' or karta[x][y - 1] == 'O': + for i in range(len(possible_turns)): + if possible_turns[i] == 'LEFT': + del possible_turns[i] + break + if pinky_leave_home: + if karta[x + 1][y] == 'S': + for i in range(len(possible_turns)): + if possible_turns[i] == 'DOWN': + del possible_turns[i] + break + min_l = 999999999 + min_way = '' + if len(possible_turns) < 2: + min_way = possible_turns[0] + return min_way + else: + possible_turns_coords = list() + for turn in possible_turns: + if turn == 'UP': + sp_x, sp_y = x - 1, y + possible_turns_coords.append([sp_x, sp_y, 'UP']) + if turn == 'DOWN': + sp_x, sp_y = x + 1, y + possible_turns_coords.append([sp_x, sp_y, 'DOWN']) + if turn == 'LEFT': + sp_x, sp_y = x, y - 1 + possible_turns_coords.append([sp_x, sp_y, 'LEFT']) + if turn == 'RIGHT': + sp_x, sp_y = x, y + 1 + possible_turns_coords.append([sp_x, sp_y, 'RIGHT']) + for coords in possible_turns_coords: + m_y = int(m_y) + m_x = int(m_x) + coords[0] = int(coords[0]) + coords[1] = int(coords[1]) + l = (((m_x - coords[0]) ** 2) + (m_y - coords[1]) ** 2) ** 0.5 + if l < 0: + l += 2 * l + coords.append(l) + if l < min_l: + min_l = l + min_way = coords[2] + return min_way -class Pinky(pygame.sprite.Sprite): # Пинки - Розовый призрак +class Inky(pygame.sprite.Sprite): # TODO Инки - Голубой призрак TODO def __init__(self, pos_x, pos_y, choord_x, choord_y, filename): super().__init__(spirits_group, all_sprites) self.mission = ('', '') @@ -96,39 +190,155 @@ def __init__(self, pos_x, pos_y, choord_x, choord_y, filename): self.choord_y = choord_y self.rect = self.image.get_rect().move(tile_width * pos_x - 10, tile_height * pos_y - 10) - def get_a_mission(self, choord_x, choord_y): - self.mission = (choord_x, choord_y) + def get_a_mission(self, choord_x, choord_y, blinky_red_spirit_choord_x, blinky_red_spirit_choord_y): + m_x = 2 * int(choord_x) - int(blinky_red_spirit_choord_x) + m_y = 2 * int(choord_y) - int(blinky_red_spirit_choord_y) + self.mission = (m_x, m_y) - def folow(self, karta, blinky_last_position, x, y, m_x, m_y, possible_turns): + def folow(self, karta, inky_last_position, x, y, m_x, m_y, possible_turns, inky_leave_home_1, inky_leave_home_2): + x = int(x) + y = int(y) + for i in range(len(possible_turns)): + if possible_turns[i] == inky_last_position: + del possible_turns[i] + break + if karta[x + 1][y] == '1' or karta[x + 1][y] == 'x' or karta[x + 1][y] == 'O': + for i in range(len(possible_turns)): + if possible_turns[i] == 'DOWN': + del possible_turns[i] + break + if karta[x - 1][y] == '1' or karta[x - 1][y] == 'x' or karta[x - 1][y] == 'O': + for i in range(len(possible_turns)): + if possible_turns[i] == 'UP': + del possible_turns[i] + break + if karta[x][y + 1] == '1' or karta[x][y + 1] == 'x' or karta[x][y + 1] == 'O': + for i in range(len(possible_turns)): + if possible_turns[i] == 'RIGHT': + del possible_turns[i] + break + if karta[x][y - 1] == '1' or karta[x][y - 1] == 'x' or karta[x][y - 1] == 'O': + for i in range(len(possible_turns)): + if possible_turns[i] == 'LEFT': + del possible_turns[i] + break + if inky_leave_home_1: + if karta[x][y - 1] == 'B': + for i in range(len(possible_turns)): + if possible_turns[i] == 'RIGHT': + del possible_turns[i] + break + if inky_leave_home_2: + if karta[x + 1][y] == 'S': + for i in range(len(possible_turns)): + if possible_turns[i] == 'DOWN': + del possible_turns[i] + break + min_l = 999999999 + min_way = '' + if len(possible_turns) < 2: + min_way = possible_turns[0] + return min_way + else: + possible_turns_coords = list() + for turn in possible_turns: + if turn == 'UP': + sp_x, sp_y = x - 1, y + possible_turns_coords.append([sp_x, sp_y, 'UP']) + if turn == 'DOWN': + sp_x, sp_y = x + 1, y + possible_turns_coords.append([sp_x, sp_y, 'DOWN']) + if turn == 'LEFT': + sp_x, sp_y = x, y - 1 + possible_turns_coords.append([sp_x, sp_y, 'LEFT']) + if turn == 'RIGHT': + sp_x, sp_y = x, y + 1 + possible_turns_coords.append([sp_x, sp_y, 'RIGHT']) + for coords in possible_turns_coords: + m_y = int(m_y) + m_x = int(m_x) + coords[0] = int(coords[0]) + coords[1] = int(coords[1]) + l = (((m_x - coords[0]) ** 2) + (m_y - coords[1]) ** 2) ** 0.5 + if l < 0: + l += 2 * l + coords.append(l) + if l < min_l: + min_l = l + min_way = coords[2] + return min_way + + +class Clyde(pygame.sprite.Sprite): # TODO Клайд - Оранжевый призрак TODO + def __init__(self, pos_x, pos_y, choord_x, choord_y, filename): + super().__init__(spirits_group, all_sprites) + self.mission = ('', '') + self.image = filename + self.choord_x = choord_x + self.choord_y = choord_y + self.rect = self.image.get_rect().move(tile_width * pos_x - 10, tile_height * pos_y - 10) + + def get_a_mission(self, choord_x, choord_y, clyde_choord_x, clyde_choord_y): + min_m_x = int(choord_x) - 8 + if min_m_x < 3: + min_m_x = 3 + max_m_x = int(choord_x) + 8 + if max_m_x > 31: + max_m_x = 31 + min_m_y = int(choord_y) - 8 + if min_m_y < 1: + min_m_y = 1 + max_m_y = int(choord_y) + 8 + if max_m_y > 26: + max_m_y = 26 + clyde_choord_x = int(clyde_choord_x) + clyde_choord_y = int(clyde_choord_y) + if clyde_choord_x > min_m_x and clyde_choord_x < max_m_x and clyde_choord_y > min_m_y and clyde_choord_y < max_m_y: + self.mission = (28, 6) + else: + self.mission = (choord_x, choord_y) + + def folow(self, karta, blinky_last_position, x, y, m_x, m_y, possible_turns, clyde_leave_home_1, clyde_leave_home_2): x = int(x) y = int(y) for i in range(len(possible_turns)): if possible_turns[i] == blinky_last_position: del possible_turns[i] break - if karta[x + 1][y] == '1' or karta[x + 1][y] == 'x': + if karta[x + 1][y] == '1' or karta[x + 1][y] == 'x' or karta[x + 1][y] == 'B': for i in range(len(possible_turns)): if possible_turns[i] == 'DOWN': del possible_turns[i] break - if karta[x - 1][y] == '1' or karta[x - 1][y] == 'x': + if karta[x - 1][y] == '1' or karta[x - 1][y] == 'x' or karta[x - 1][y] == 'B': for i in range(len(possible_turns)): if possible_turns[i] == 'UP': del possible_turns[i] break - if karta[x][y + 1] == '1' or karta[x][y + 1] == 'x': + if karta[x][y + 1] == '1' or karta[x][y + 1] == 'x' or karta[x][y + 1] == 'B': for i in range(len(possible_turns)): if possible_turns[i] == 'RIGHT': del possible_turns[i] break - if karta[x][y - 1] == '1' or karta[x][y + 1] == 'x': + if karta[x][y - 1] == '1' or karta[x][y - 1] == 'x' or karta[x][y - 1] == 'B': for i in range(len(possible_turns)): if possible_turns[i] == 'LEFT': del possible_turns[i] break + if clyde_leave_home_1: + if karta[x][y + 1] == 'O': + for i in range(len(possible_turns)): + if possible_turns[i] == 'RIGHT': + del possible_turns[i] + break + if clyde_leave_home_2: + if karta[x + 1][y] == 'S': + for i in range(len(possible_turns)): + if possible_turns[i] == 'DOWN': + del possible_turns[i] + break min_l = 999999999 min_way = '' - print(possible_turns) if len(possible_turns) < 2: min_way = possible_turns[0] return min_way @@ -159,4 +369,4 @@ def folow(self, karta, blinky_last_position, x, y, m_x, m_y, possible_turns): if l < min_l: min_l = l min_way = coords[2] - return min_way \ No newline at end of file + return min_way diff --git a/data/dot.jpg b/data/dot.jpg index 661eeb07567eaeefd7cc033209eb146c11bc6c81..f04515a1e68ad3bf920d9d0bcbb882abd44c9da1 100644 GIT binary patch delta 126 zcmV-^0D=Gdkpb9|0gx8~Jh2#+5do01t`T?wBD*j6qQBu<{{Yn2{{U^j=ePa){{UD1 zb3vs(O?mri>T$HQP!v!!K*|3Aj79$dhem(Z)_>e<{)1omFaH3LZ~5~mI~a*dNEA>sTDtg8@N@P%)&BrtJFgIUyW+=>w7-vwqw2H4 z;j3FITT6TR+TdyMml}Jn$yIHOpR@ox#>*x?Q0c_adE++MV7?aK&oiQ!>q{?%XJK;CuKfIma7XPJSp74K$eYy5O_4UXt9s|x bxzHPS*Y*E=sXy1HvG|tvj-qwP|K9`vmn)(5 delta 261 zcmaDgiSg1T#tGt#c^f6B3NjwtyiTx!DSG!mL0#p4ZM)@9+W**P|4`_X{fq34e*KJ4GRG5!m${_+0|6ZwC*Z0Y|c^`>6sKf|LJi(yLa5h^UDv`^Vy zSkz#@xn9J@r2b$1i}h>&Gd#R|pZh<G^7|1;D?)qg6L|M2d8>wktXMfaHgGwjo~ z|7o>v_g~j@^^@d(m`(rBpjKD=pFz;O-TwJg|388q{~4aTpA-qd_MZVmTbKQnnCCwg d|1&ga)_+Pw*Ti>HB+#{{^A|^;s|e%&n*f)EiEjV^ diff --git a/data/map2.txt b/data/map2.txt index 4484360..96d974f 100644 --- a/data/map2.txt +++ b/data/map2.txt @@ -1,34 +1,34 @@ ############################ ############################ -1____________21____________2 -.dddddddddddd.!dddddddddddd! -.d1__2d1___2d.!d1___2d1__2d! -.D.##!d.###!d.!d.###!d.##!D! -.d3--4d3---4d34d3---4d3--4d! -.dddddddddddddddddddddddddd! -.d1__2d12d1______2d12d1__2d! -.d3--4d.!d3--21--4d.!d3--4d! -.dddddd.!dddd.!dddd.!dddddd! -3____2d.3__2#.!#1__4!d1____4 -#####!d.1--4#34#3--2!d.##### -#####!d.!##########.!d.##### -#####!d.!#1______2#.!d.##### ------4d.!#.######!#.!d3----- -######d.!#.######!#.!d###### -_____2d.!#.######!#.!d1_____ -#####!d.!#3------4#.!d.##### -#####!d.!##########.!d.##### -#####!d.!#1______2#.!d.##### -1----4d34#3--21--4#34d3----2 -.dddddddddddd.!dddddddddddd! -.d1__2d1___2d.!d1___2d1__2d! -.d3-2!d3---4d34d3---4d.1-4d! -.Ddd.!ddddddd#@ddddddd.!ddD! +1************21************2 +?dddddddddddd.!dddddddddddd+ +?d1__2d1___2d.!d1___2d1__2d+ +?D.##!d.###!d.!d.###!d.##!D+ +?d3--4d3---4d34d3---4d3--4d+ +?dddddddddddddddddddddddddd+ +?d1__2d12d1______2d12d1__2d+ +?d3--4d.!d3--21--4d.!d3--4d+ +?dddddd.!dddd.!dddd.!dddddd+ +3****2d.3__2#.!#1__4!d1****4 +#####?d.1--4#34#3--2!d.##### +#####?d.!##########.!d.##### +#####?d.!#1******2#.!d.##### +&&&&&4d.!#?######+#.!d3&&&&& +######d.!#?######+#.!d###### +*****2d.!#?######+#.!d+***** +#####?d.!#3&&&&&&4#.!d+##### +#####?d.!##########.!d+##### +#####?d.!#1______2#.!d+##### +1&&&&4d34#3--21--4#34d3&&&&2 +?dddddddddddd.!dddddddddddd+ +?d1__2d1___2d.!d1___2d1__2d+ +?d3-2!d3---4d34d3---4d.1-4d+ +?Ddd.!ddddddd#@ddddddd.!ddD+ 3_2d.!d12d1______2d12d.!d1_4 1-4d34d.!d3--21--4d.!d34d3-2 -.dddddd.!dddd.!dddd.!dddddd! -.d1____43__2d.!d1__43____2d! -.d3--------4d34d3--------4d! -.dddddddddddddddddddddddddd! -3--------------------------4 +?dddddd.!dddd.!dddd.!dddddd+ +?d1____43__2d.!d1__43____2d+ +?d3--------4d34d3--------4d+ +?dddddddddddddddddddddddddd+ +3&&&&&&&&&&&&&&&&&&&&&&&&&&4 ############################ \ No newline at end of file From ac89eb6f3c1543b69c86b98d1be7d3335dc46f47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BB=D1=8C=D1=8F?= Date: Sat, 25 Jan 2020 21:38:24 +0300 Subject: [PATCH 12/17] =?UTF-8?q?=D0=BF=D0=B0=D1=87=D1=82=D0=B8=20=D0=B3?= =?UTF-8?q?=D0=B0=D1=82=D0=BE=D0=B2=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Pac-Man.py | 6 ++---- data.zip | Bin 0 -> 57540 bytes 2 files changed, 2 insertions(+), 4 deletions(-) create mode 100644 data.zip diff --git a/Pac-Man.py b/Pac-Man.py index 987b0b6..775fbc7 100644 --- a/Pac-Man.py +++ b/Pac-Man.py @@ -83,10 +83,10 @@ def generate_level(level): elif level[y][x] == '&': Tile('d_hor', x, y) s.append('1') - elif level[y][x] == '?': + elif level[y][x] == '+': Tile('d_vert2', x, y) s.append('1') - elif level[y][x] == '+': + elif level[y][x] == '?': Tile('d_vert', x, y) s.append('1') elif level[y][x] == '@': @@ -264,8 +264,6 @@ def update(self): print('j') - - blinky_red_spirit = Spirits.Blinky(14, 13, 13, 14, blinky_image) blinky_last_position = 'LEFT' min_way_red = 'RIGHT' diff --git a/data.zip b/data.zip new file mode 100644 index 0000000000000000000000000000000000000000..8903cfb620ed9a3314cc17302c70714c8a45e60e GIT binary patch literal 57540 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 CfD91; literal 0 HcmV?d00001 From 73c8300abdd4eb722d541550ca775b0d55110d8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BB=D1=8C=D1=8F?= Date: Sat, 25 Jan 2020 23:01:05 +0300 Subject: [PATCH 13/17] =?UTF-8?q?=D0=A1=D1=82=D1=80=D0=B0=D1=88=D0=BD?= =?UTF-8?q?=D0=B0,=20=D0=B2=D1=8B=D1=80=D1=83=D0=B1=D0=B0=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Pac-Man.py | 125 +++++++++++++++++++++++++++++--------------------- data/map2.txt | 58 +++++++++++------------ 2 files changed, 102 insertions(+), 81 deletions(-) diff --git a/Pac-Man.py b/Pac-Man.py index 775fbc7..43afe71 100644 --- a/Pac-Man.py +++ b/Pac-Man.py @@ -38,6 +38,7 @@ def load_image(name, color_key=None): image = image.convert_alpha() return image + def load_level(filename): filename = "data/" + filename with open(filename, 'r') as mapFile: @@ -45,6 +46,7 @@ def load_level(filename): max_width = max(map(len, level_map)) return list(map(lambda x: x.ljust(max_width, '.'), level_map)) + def generate_level(level): global karta s = [] @@ -77,18 +79,6 @@ def generate_level(level): elif level[y][x] == '4': Tile('right_down', x, y) s.append('1') - elif level[y][x] == '*': - Tile('d_hor2', x, y) - s.append('1') - elif level[y][x] == '&': - Tile('d_hor', x, y) - s.append('1') - elif level[y][x] == '+': - Tile('d_vert2', x, y) - s.append('1') - elif level[y][x] == '?': - Tile('d_vert', x, y) - s.append('1') elif level[y][x] == '@': new_player = Pacman(x, y, 25, 14) s.append('.') @@ -120,10 +110,12 @@ def generate_level(level): karta[16][11] = '1' return new_player, x, y + def terminate(): pygame.quit() sys.exit() + def start_screen(): intro_text = ["ЗАСТАВКА", "", "Правила игры", @@ -152,11 +144,11 @@ def start_screen(): pygame.display.flip() clock.tick(FPS) + tile_images = {'empty': load_image('black.jpg'), 'vert': load_image('vert.jpg'), 'hor': load_image('hor.jpg'), 'left_up': load_image('left_up.jpg'), 'left_down': load_image('left_down.jpg'), 'right_up': load_image('right_up.jpg'), 'right_down': load_image('right_down.jpg'), - 'vert2': load_image('vert2.jpg'), 'hor2': load_image('hor2.jpg'), 'd_hor2': load_image('d_hor2.jpg'), - 'd_hor': load_image('d_hor.jpg'), 'd_vert2': load_image('d_vert2.jpg'), 'd_vert': load_image('d_vert.jpg')} + 'vert2': load_image('vert2.jpg'), 'hor2': load_image('hor2.jpg')} player_image = load_image('pacman.jpg') blinky_image = load_image('blinky_1.jpg') pinky_image = load_image('pinky_1.jpg') @@ -219,7 +211,6 @@ def update(self): terminate() - class Dot(pygame.sprite.Sprite): def __init__(self, pos_x, pos_y): super().__init__(dots_group, all_sprites) @@ -250,6 +241,14 @@ def update(self): pygame.mixer.music.load('salo.mp3') pygame.mixer.music.play() pill = True + global blinky_image + global pinky_image + global inky_image + global clyde_image + blinky_image = load_image('dead_1.jpg') + pinky_image = load_image('dead_1.jpg') + clyde_image = load_image('dead_1.jpg') + inky_image = load_image('dead_1.jpg') score += 1 self.kill() if score == 244: @@ -261,7 +260,10 @@ def update(self): else: t = 0 pill = False - print('j') + blinky_image = load_image('blinky_1.jpg') + pinky_image = load_image('pinky_1.jpg') + clyde_image = load_image('clyde_1.jpg') + inky_image = load_image('inky_1.jpg') blinky_red_spirit = Spirits.Blinky(14, 13, 13, 14, blinky_image) @@ -295,6 +297,16 @@ def update(self): k = 0 k_red = 0 while running: + if pill: + blinky_red_spirit.image = load_image('dead_1.jpg') + pinky_pink_spirit_image = load_image('dead_1.jpg') + clyde_orange_spirit.image = load_image('dead_1.jpg') + inky_blue_spirit.image = load_image('dead_1.jpg') + else: + blinky_red_spirit.image = load_image('blinky_1.jpg') + pinky_pink_spirit.image = load_image('pinky_1.jpg') + clyde_orange_spirit.image = load_image('clyde_1.jpg') + inky_blue_spirit.image = load_image('inky_1.jpg') for event in pygame.event.get(): if event.type == pygame.QUIT: running = False @@ -388,9 +400,9 @@ def update(self): if karta[blinky_red_spirit.choord_x][blinky_red_spirit.choord_y] == '.': possible_turns = ['UP', 'DOWN', 'LEFT', 'RIGHT'] min_way_red = blinky_red_spirit.folow(karta, blinky_last_position, - blinky_red_spirit.choord_x, blinky_red_spirit.choord_y, - blinky_red_spirit.mission[0], blinky_red_spirit.mission[1], - possible_turns) + blinky_red_spirit.choord_x, blinky_red_spirit.choord_y, + blinky_red_spirit.mission[0], blinky_red_spirit.mission[1], + possible_turns) k_red = 0 elif min_way_red == 'DOWN': blinky_last_position = 'UP' @@ -401,9 +413,9 @@ def update(self): if karta[blinky_red_spirit.choord_x][blinky_red_spirit.choord_y] == '.': possible_turns = ['UP', 'DOWN', 'LEFT', 'RIGHT'] min_way_red = blinky_red_spirit.folow(karta, blinky_last_position, - blinky_red_spirit.choord_x, blinky_red_spirit.choord_y, - blinky_red_spirit.mission[0], blinky_red_spirit.mission[1], - possible_turns) + blinky_red_spirit.choord_x, blinky_red_spirit.choord_y, + blinky_red_spirit.mission[0], blinky_red_spirit.mission[1], + possible_turns) k_red = 0 elif min_way_red == 'LEFT': blinky_last_position = 'RIGHT' @@ -414,9 +426,9 @@ def update(self): if karta[blinky_red_spirit.choord_x][blinky_red_spirit.choord_y] == '.': possible_turns = ['UP', 'DOWN', 'LEFT', 'RIGHT'] min_way_red = blinky_red_spirit.folow(karta, blinky_last_position, - blinky_red_spirit.choord_x, blinky_red_spirit.choord_y, - blinky_red_spirit.mission[0], blinky_red_spirit.mission[1], - possible_turns) + blinky_red_spirit.choord_x, blinky_red_spirit.choord_y, + blinky_red_spirit.mission[0], blinky_red_spirit.mission[1], + possible_turns) k_red = 0 elif min_way_red == 'RIGHT': blinky_last_position = 'LEFT' @@ -427,9 +439,9 @@ def update(self): if karta[blinky_red_spirit.choord_x][blinky_red_spirit.choord_y] == '.': possible_turns = ['UP', 'DOWN', 'LEFT', 'RIGHT'] min_way_red = blinky_red_spirit.folow(karta, blinky_last_position, - blinky_red_spirit.choord_x, blinky_red_spirit.choord_y, - blinky_red_spirit.mission[0], blinky_red_spirit.mission[1], - possible_turns) + blinky_red_spirit.choord_x, blinky_red_spirit.choord_y, + blinky_red_spirit.mission[0], blinky_red_spirit.mission[1], + possible_turns) k_red = 0 # Движение Пинки (розовый) @@ -447,9 +459,9 @@ def update(self): if karta[pinky_pink_spirit.choord_x][pinky_pink_spirit.choord_y] == '.': possible_turns_pink = ['UP', 'DOWN', 'LEFT', 'RIGHT'] min_way_pink = pinky_pink_spirit.folow(karta, pinky_last_position, - pinky_pink_spirit.choord_x, pinky_pink_spirit.choord_y, - pinky_pink_spirit.mission[0], pinky_pink_spirit.mission[1], - possible_turns_pink, pinky_leave_home) + pinky_pink_spirit.choord_x, pinky_pink_spirit.choord_y, + pinky_pink_spirit.mission[0], pinky_pink_spirit.mission[1], + possible_turns_pink, pinky_leave_home) k_pink = 0 elif min_way_pink == 'DOWN': pinky_last_position = 'UP' @@ -460,9 +472,9 @@ def update(self): if karta[pinky_pink_spirit.choord_x][pinky_pink_spirit.choord_y] == '.': possible_turns_pink = ['UP', 'DOWN', 'LEFT', 'RIGHT'] min_way_pink = pinky_pink_spirit.folow(karta, pinky_last_position, - pinky_pink_spirit.choord_x, pinky_pink_spirit.choord_y, - pinky_pink_spirit.mission[0], pinky_pink_spirit.mission[1], - possible_turns_pink, pinky_leave_home) + pinky_pink_spirit.choord_x, pinky_pink_spirit.choord_y, + pinky_pink_spirit.mission[0], pinky_pink_spirit.mission[1], + possible_turns_pink, pinky_leave_home) k_pink = 0 elif min_way_pink == 'LEFT': pinky_last_position = 'RIGHT' @@ -473,9 +485,9 @@ def update(self): if karta[pinky_pink_spirit.choord_x][pinky_pink_spirit.choord_y] == '.': possible_turns_pink = ['UP', 'DOWN', 'LEFT', 'RIGHT'] min_way_pink = pinky_pink_spirit.folow(karta, pinky_last_position, - pinky_pink_spirit.choord_x, pinky_pink_spirit.choord_y, - pinky_pink_spirit.mission[0], pinky_pink_spirit.mission[1], - possible_turns_pink, pinky_leave_home) + pinky_pink_spirit.choord_x, pinky_pink_spirit.choord_y, + pinky_pink_spirit.mission[0], pinky_pink_spirit.mission[1], + possible_turns_pink, pinky_leave_home) k_pink = 0 elif min_way_pink == 'RIGHT': pinky_last_position = 'LEFT' @@ -486,9 +498,9 @@ def update(self): if karta[pinky_pink_spirit.choord_x][pinky_pink_spirit.choord_y] == '.': possible_turns_pink = ['UP', 'DOWN', 'LEFT', 'RIGHT'] min_way_pink = pinky_pink_spirit.folow(karta, pinky_last_position, - pinky_pink_spirit.choord_x, pinky_pink_spirit.choord_y, - pinky_pink_spirit.mission[0], pinky_pink_spirit.mission[1], - possible_turns_pink, pinky_leave_home) + pinky_pink_spirit.choord_x, pinky_pink_spirit.choord_y, + pinky_pink_spirit.mission[0], pinky_pink_spirit.mission[1], + possible_turns_pink, pinky_leave_home) k_pink = 0 # Движение Клайда (Оранжевый) @@ -509,9 +521,11 @@ def update(self): if karta[clyde_orange_spirit.choord_x][clyde_orange_spirit.choord_y] == '.': possible_turns_orange = ['UP', 'DOWN', 'LEFT', 'RIGHT'] min_way_orange = clyde_orange_spirit.folow(karta, clyde_last_position, - clyde_orange_spirit.choord_x, clyde_orange_spirit.choord_y, - clyde_orange_spirit.mission[0], clyde_orange_spirit.mission[1], - possible_turns_orange, clyde_leave_home_1, clyde_leave_home_2) + clyde_orange_spirit.choord_x, clyde_orange_spirit.choord_y, + clyde_orange_spirit.mission[0], + clyde_orange_spirit.mission[1], + possible_turns_orange, clyde_leave_home_1, + clyde_leave_home_2) k_orange = 0 elif min_way_orange == 'DOWN': clyde_last_position = 'UP' @@ -522,9 +536,11 @@ def update(self): if karta[clyde_orange_spirit.choord_x][clyde_orange_spirit.choord_y] == '.': possible_turns_orange = ['UP', 'DOWN', 'LEFT', 'RIGHT'] min_way_orange = clyde_orange_spirit.folow(karta, clyde_last_position, - clyde_orange_spirit.choord_x, clyde_orange_spirit.choord_y, - clyde_orange_spirit.mission[0], clyde_orange_spirit.mission[1], - possible_turns_orange, clyde_leave_home_1, clyde_leave_home_2) + clyde_orange_spirit.choord_x, clyde_orange_spirit.choord_y, + clyde_orange_spirit.mission[0], + clyde_orange_spirit.mission[1], + possible_turns_orange, clyde_leave_home_1, + clyde_leave_home_2) k_orange = 0 elif min_way_orange == 'LEFT': clyde_last_position = 'RIGHT' @@ -535,9 +551,11 @@ def update(self): if karta[clyde_orange_spirit.choord_x][clyde_orange_spirit.choord_y] == '.': possible_turns_orange = ['UP', 'DOWN', 'LEFT', 'RIGHT'] min_way_orange = clyde_orange_spirit.folow(karta, clyde_last_position, - clyde_orange_spirit.choord_x, clyde_orange_spirit.choord_y, - clyde_orange_spirit.mission[0], clyde_orange_spirit.mission[1], - possible_turns_orange, clyde_leave_home_1, clyde_leave_home_2) + clyde_orange_spirit.choord_x, clyde_orange_spirit.choord_y, + clyde_orange_spirit.mission[0], + clyde_orange_spirit.mission[1], + possible_turns_orange, clyde_leave_home_1, + clyde_leave_home_2) k_orange = 0 elif min_way_orange == 'RIGHT': clyde_last_position = 'LEFT' @@ -548,9 +566,12 @@ def update(self): if karta[clyde_orange_spirit.choord_x][clyde_orange_spirit.choord_y] == '.': possible_turns_orange = ['UP', 'DOWN', 'LEFT', 'RIGHT'] min_way_orange = clyde_orange_spirit.folow(karta, clyde_last_position, - clyde_orange_spirit.choord_x, clyde_orange_spirit.choord_y, - clyde_orange_spirit.mission[0], clyde_orange_spirit.mission[1], - possible_turns_orange, clyde_leave_home_1, clyde_leave_home_2) + clyde_orange_spirit.choord_x, clyde_orange_spirit.choord_y, + clyde_orange_spirit.mission[0], + clyde_orange_spirit.mission[1], + possible_turns_orange, clyde_leave_home_1, + clyde_leave_home_2) + k_orange = 0 # Движение Инки (синий) diff --git a/data/map2.txt b/data/map2.txt index 96d974f..e25e767 100644 --- a/data/map2.txt +++ b/data/map2.txt @@ -1,34 +1,34 @@ ############################ ############################ -1************21************2 -?dddddddddddd.!dddddddddddd+ -?d1__2d1___2d.!d1___2d1__2d+ -?D.##!d.###!d.!d.###!d.##!D+ -?d3--4d3---4d34d3---4d3--4d+ -?dddddddddddddddddddddddddd+ -?d1__2d12d1______2d12d1__2d+ -?d3--4d.!d3--21--4d.!d3--4d+ -?dddddd.!dddd.!dddd.!dddddd+ -3****2d.3__2#.!#1__4!d1****4 -#####?d.1--4#34#3--2!d.##### -#####?d.!##########.!d.##### -#####?d.!#1******2#.!d.##### -&&&&&4d.!#?######+#.!d3&&&&& -######d.!#?######+#.!d###### -*****2d.!#?######+#.!d+***** -#####?d.!#3&&&&&&4#.!d+##### -#####?d.!##########.!d+##### -#####?d.!#1______2#.!d+##### -1&&&&4d34#3--21--4#34d3&&&&2 -?dddddddddddd.!dddddddddddd+ -?d1__2d1___2d.!d1___2d1__2d+ -?d3-2!d3---4d34d3---4d.1-4d+ -?Ddd.!ddddddd#@ddddddd.!ddD+ +1____________21____________2 +.dddddddddddd.!dddddddddddd! +.d1__2d1___2d.!d1___2d1__2d! +.D.##!d.###!d.!d.###!d.##!D! +.d3--4d3---4d34d3---4d3--4d! +.dddddddddddddddddddddddddd! +.d1__2d12d1______2d12d1__2d! +.d3--4d.!d3--21--4d.!d3--4d! +.dddddd.!dddd.!dddd.!dddddd! +3____2d.3__2#.!#1__4!d1____4 +#####.d.1--4#34#3--2!d!##### +#####.d.!##########.!d!##### +#####.d.!#1______2#.!d!##### +-----4d.!#.######!#.!d3----- +######d.!#.######!#.!d###### +_____2d.!#.######!#.!d1_____ +#####.d.!#3------4#.!d!##### +#####.d.!##########.!d!##### +#####.d.!#1______2#.!d!##### +1----4d34#3--21--4#34d3----2 +.dddddddddddd.!dddddddddddd! +.d1__2d1___2d.!d1___2d1__2d! +.d3-2!d3---4d34d3---4d.1-4d! +.Ddd.!ddddddd#@ddddddd.!ddD! 3_2d.!d12d1______2d12d.!d1_4 1-4d34d.!d3--21--4d.!d34d3-2 -?dddddd.!dddd.!dddd.!dddddd+ -?d1____43__2d.!d1__43____2d+ -?d3--------4d34d3--------4d+ -?dddddddddddddddddddddddddd+ -3&&&&&&&&&&&&&&&&&&&&&&&&&&4 +.dddddd.!dddd.!dddd.!dddddd! +.d1____43__2d.!d1__43____2d! +.d3--------4d34d3--------4d! +.dddddddddddddddddddddddddd! +3--------------------------4 ############################ \ No newline at end of file From 29af51cd9fa96788a99809d809650fbd4da1ede5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BB=D1=8C=D1=8F?= Date: Sat, 25 Jan 2020 23:01:57 +0300 Subject: [PATCH 14/17] =?UTF-8?q?=D0=A1=D1=82=D1=80=D0=B0=D1=88=D0=BD?= =?UTF-8?q?=D0=B0,=20=D0=B2=D1=8B=D1=80=D1=83=D0=B1=D0=B0=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Pac-Man.py | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/Pac-Man.py b/Pac-Man.py index 43afe71..97ca48d 100644 --- a/Pac-Man.py +++ b/Pac-Man.py @@ -241,14 +241,6 @@ def update(self): pygame.mixer.music.load('salo.mp3') pygame.mixer.music.play() pill = True - global blinky_image - global pinky_image - global inky_image - global clyde_image - blinky_image = load_image('dead_1.jpg') - pinky_image = load_image('dead_1.jpg') - clyde_image = load_image('dead_1.jpg') - inky_image = load_image('dead_1.jpg') score += 1 self.kill() if score == 244: @@ -260,10 +252,6 @@ def update(self): else: t = 0 pill = False - blinky_image = load_image('blinky_1.jpg') - pinky_image = load_image('pinky_1.jpg') - clyde_image = load_image('clyde_1.jpg') - inky_image = load_image('inky_1.jpg') blinky_red_spirit = Spirits.Blinky(14, 13, 13, 14, blinky_image) From 66d23cdc9f4cfaa04a9fc9946c9771fbe5f37930 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BB=D1=8C=D1=8F?= Date: Sun, 26 Jan 2020 13:38:39 +0300 Subject: [PATCH 15/17] =?UTF-8?q?=D0=A2=D0=B5=D0=BB=D0=B5=D0=BF=D0=BE?= =?UTF-8?q?=D1=80=D1=82=D0=B0=D1=86=D0=B8=D1=8F=20=D0=BF=D0=B0=D0=BA=D0=BC?= =?UTF-8?q?=D0=B0=D0=BD=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Pac-Man.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/Pac-Man.py b/Pac-Man.py index 97ca48d..114ee38 100644 --- a/Pac-Man.py +++ b/Pac-Man.py @@ -287,7 +287,7 @@ def update(self): while running: if pill: blinky_red_spirit.image = load_image('dead_1.jpg') - pinky_pink_spirit_image = load_image('dead_1.jpg') + pinky_pink_spirit.image = load_image('dead_1.jpg') clyde_orange_spirit.image = load_image('dead_1.jpg') inky_blue_spirit.image = load_image('dead_1.jpg') else: @@ -361,20 +361,28 @@ def update(self): if k == 24: player.choord_x = player.choord_x - 1 k = 0 - elif run_left and karta[player.choord_x][player.choord_y - 1] != '1': + elif run_left and karta[player.choord_x][player.choord_y - 1] != '1' and player.choord_y != 0: player.rect.x -= 1 pac = 'pacman5.jpg' k += 1 if k == 24: player.choord_y = player.choord_y - 1 k = 0 - elif run_right and karta[player.choord_x][player.choord_y + 1] != '1': + elif run_right and player.choord_y != 27 and karta[player.choord_x][player.choord_y + 1] != '1': player.rect.x += 1 pac = 'pacman.jpg' k += 1 if k == 24: player.choord_y = player.choord_y + 1 k = 0 + elif player.choord_y == 0: + player.choord_y = 27 + player.rect.x += STEP * 27 + k = 0 + elif player.choord_y == 27: + player.choord_y = 0 + player.rect.x -= STEP * 27 + k = 0 # Движение Блинки (красный) From f252859587562188468f5336b6e2c5c4abecb8bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BB=D1=8C=D1=8F?= Date: Sun, 26 Jan 2020 18:44:42 +0300 Subject: [PATCH 16/17] T Error --- Pac-Man.py | 131 +++++++++++++++++++++++++++++++++++++++++++++++------ Spirits.py | 105 ++++++++++++++++++++++++------------------ 2 files changed, 176 insertions(+), 60 deletions(-) diff --git a/Pac-Man.py b/Pac-Man.py index 114ee38..80de423 100644 --- a/Pac-Man.py +++ b/Pac-Man.py @@ -10,6 +10,7 @@ HEIGHT = 24 * 34 STEP = 24 karta = [] +dots = 0 score = 0 pac = 'pacman.jpg' screen = pygame.display.set_mode((WIDTH, HEIGHT)) @@ -17,6 +18,11 @@ player = None pill = False t = 0 +killed_spirits = 1 +red_eat = False +pink_eat = False +blue_eat = False +orange_eat = False all_sprites = pygame.sprite.Group() tiles_group = pygame.sprite.Group() player_group = pygame.sprite.Group() @@ -108,6 +114,8 @@ def generate_level(level): karta[17][12] = '1' karta[17][16] = '1' karta[16][11] = '1' + for elem in karta: + print(elem) return new_player, x, y @@ -178,7 +186,13 @@ def __init__(self, pos_x, pos_y, choord_x, choord_y): def update(self): global pac + global score global pill + global killed_spirits + global red_eat + global blue_eat + global pink_eat + global orange_eat if (self.im // 10) % 2 == 0: self.image = load_image(pac) self.im += 1 @@ -187,25 +201,89 @@ def update(self): self.im += 1 if pygame.sprite.collide_mask(self, blinky_red_spirit): if pill: - blinky_red_spirit.kill() + global blinky_last_position + global min_way_red + global k_red + k_red = 0 + blinky_last_position = 'LEFT' + min_way_red = 'RIGHT' + blinky_red_spirit.choord_y = 14 + blinky_red_spirit.choord_x = 13 + blinky_red_spirit.rect.x = STEP * 14 - 10 + blinky_red_spirit.rect.y = STEP * 13 - 10 + if not red_eat: + score += (2 ** killed_spirits) * 100 + if killed_spirits == 4: + killed_spirits = 0 + else: + killed_spirits += 1 + red_eat = True else: self.kill() terminate() if pygame.sprite.collide_mask(self, pinky_pink_spirit): if pill: - pinky_pink_spirit.kill() + global pinky_last_position + global min_way_pink + global k_pink + k_pink = 0 + pinky_last_position = 'LEFT' + min_way_pink = 'RIGHT' + pinky_pink_spirit.choord_y = 14 + pinky_pink_spirit.choord_x = 13 + pinky_pink_spirit.rect.x = STEP * 14 - 10 + pinky_pink_spirit.rect.y = STEP * 13 - 10 + if not pink_eat: + score += (2 ** killed_spirits) * 100 + if killed_spirits == 4: + killed_spirits = 0 + else: + killed_spirits += 1 + pink_eat = True else: self.kill() terminate() if pygame.sprite.collide_mask(self, clyde_orange_spirit): if pill: - clyde_orange_spirit.kill() + global clyde_last_position + global min_way_orange + global k_orange + k_orange = 0 + clyde_last_position = 'LEFT' + min_way_orange = 'RIGHT' + clyde_orange_spirit.choord_y = 14 + clyde_orange_spirit.choord_x = 13 + clyde_orange_spirit.rect.x = STEP * 14 - 10 + clyde_orange_spirit.rect.y = STEP * 13 - 10 + if not orange_eat: + score += (2 ** killed_spirits) * 100 + if killed_spirits == 4: + killed_spirits = 0 + else: + killed_spirits += 1 + orange_eat = True else: self.kill() terminate() if pygame.sprite.collide_mask(self, inky_blue_spirit): if pill: - inky_blue_spirit.kill() + global inky_last_position + global min_way_blue + global k_blue + k_blue = 0 + inky_last_position = 'LEFT' + min_way_blue = 'RIGHT' + inky_blue_spirit.choord_y = 14 + inky_blue_spirit.choord_x = 13 + inky_blue_spirit.rect.x = STEP * 14 - 10 + inky_blue_spirit.rect.y = STEP * 13 - 10 + if not blue_eat: + score += (2 ** killed_spirits) * 100 + if killed_spirits == 4: + killed_spirits = 0 + else: + killed_spirits += 1 + blue_eat = True else: self.kill() terminate() @@ -220,10 +298,13 @@ def __init__(self, pos_x, pos_y): def update(self): global score + global dots if pygame.sprite.collide_mask(self, player): - score += 1 + dots += 1 + score += 10 + print(dots, score) self.kill() - if score == 244: + if dots == 244: generate_level('map2.txt') @@ -237,13 +318,18 @@ def __init__(self, pos_x, pos_y): def update(self): global score global pill + global dots + global killed_spirits if pygame.sprite.collide_mask(self, player): pygame.mixer.music.load('salo.mp3') pygame.mixer.music.play() pill = True - score += 1 + killed_spirits = 1 + dots += 1 + score += 50 + print(dots, score) self.kill() - if score == 244: + if dots == 244: generate_level('map2.txt') if pill: global t @@ -257,10 +343,12 @@ def update(self): blinky_red_spirit = Spirits.Blinky(14, 13, 13, 14, blinky_image) blinky_last_position = 'LEFT' min_way_red = 'RIGHT' +red_terror = False k_red = 0 pinky_pink_spirit = Spirits.Pinky(14, 16, 16, 14, pinky_image) pinky_last_position = 'DOWN' min_way_pink = 'UP' +pink_terror = False pinky_leave_home = False k_pink = 0 inky_blue_spirit = Spirits.Inky(11, 16, 16, 11, inky_image) @@ -268,12 +356,14 @@ def update(self): min_way_blue = 'RIGHT' inky_leave_home_1 = False inky_leave_home_2 = False +blue_terror = False k_blue = 0 clyde_orange_spirit = Spirits.Clyde(16, 16, 16, 16, clyde_image) clyde_last_position = 'RIGHT' min_way_orange = 'LEFT' -clyde_leave_home_1 = False -clyde_leave_home_2 = False +clyde_leave_home_1 = True +clyde_leave_home_2 = True +orange_terror = False k_orange = 0 start_screen() player, level_x, level_y = generate_level(load_level('map2.txt')) @@ -286,11 +376,23 @@ def update(self): k_red = 0 while running: if pill: + if not red_eat: + red_terror = True + if not pink_eat: + pink_terror = True + if not blue_eat: + blue_terror = True + if not orange_eat: + orange_terror = True blinky_red_spirit.image = load_image('dead_1.jpg') pinky_pink_spirit.image = load_image('dead_1.jpg') clyde_orange_spirit.image = load_image('dead_1.jpg') inky_blue_spirit.image = load_image('dead_1.jpg') else: + red_terror = False + pink_terror = False + blue_terror = False + orange_terror = False blinky_red_spirit.image = load_image('blinky_1.jpg') pinky_pink_spirit.image = load_image('pinky_1.jpg') clyde_orange_spirit.image = load_image('clyde_1.jpg') @@ -386,7 +488,7 @@ def update(self): # Движение Блинки (красный) - blinky_red_spirit.get_a_mission(player.choord_x, player.choord_y) + blinky_red_spirit.get_a_mission(player.choord_x, player.choord_y, red_terror) if min_way_red == 'UP': blinky_last_position = 'DOWN' blinky_red_spirit.rect.y -= 1 @@ -445,7 +547,7 @@ def update(self): if pinky_pink_spirit.choord_x == 13 and pinky_pink_spirit.choord_y == 14: pinky_leave_home = True - pinky_pink_spirit.get_a_mission(player.choord_x, player.choord_y, karta) + pinky_pink_spirit.get_a_mission(player.choord_x, player.choord_y, karta, pink_terror) if min_way_pink == 'UP': pinky_last_position = 'DOWN' pinky_pink_spirit.rect.y -= 1 @@ -500,14 +602,13 @@ def update(self): k_pink = 0 # Движение Клайда (Оранжевый) - if clyde_orange_spirit.choord_x == 16 and clyde_orange_spirit.choord_y == 14: clyde_leave_home_1 = True if clyde_orange_spirit.choord_x == 13 and clyde_orange_spirit.choord_y == 14: clyde_leave_home_2 = True clyde_orange_spirit.get_a_mission(player.choord_x, player.choord_y, - clyde_orange_spirit.choord_x, clyde_orange_spirit.choord_y) + clyde_orange_spirit.choord_x, clyde_orange_spirit.choord_y, orange_terror) if min_way_orange == 'UP': clyde_last_position = 'DOWN' clyde_orange_spirit.rect.y -= 1 @@ -572,7 +673,7 @@ def update(self): # Движение Инки (синий) inky_blue_spirit.get_a_mission(player.choord_x, player.choord_y, - blinky_red_spirit.choord_x, blinky_red_spirit.choord_y) + blinky_red_spirit.choord_x, blinky_red_spirit.choord_y, blue_terror) if min_way_blue == 'UP': inky_last_position = 'DOWN' inky_blue_spirit.rect.y -= 1 diff --git a/Spirits.py b/Spirits.py index 7ef2377..8de2fd6 100644 --- a/Spirits.py +++ b/Spirits.py @@ -8,6 +8,7 @@ all_sprites = pygame.sprite.Group() spirits_group = pygame.sprite.Group() tile_width = tile_height = 24 +STEP = 24 class Blinky(pygame.sprite.Sprite): # TODO Блинки - Красный призрак TODO @@ -17,10 +18,15 @@ def __init__(self, pos_x, pos_y, choord_x, choord_y, filename): self.image = filename self.choord_x = choord_x self.choord_y = choord_y - self.rect = self.image.get_rect().move(tile_width * pos_x - 10, tile_height * pos_y - 10) + self.pos_x = pos_x + self.pos_y = pos_y + self.rect = self.image.get_rect().move(tile_width * self.pos_x - 10, tile_height * self.pos_y - 10) - def get_a_mission(self, choord_x, choord_y): - self.mission = (choord_x, choord_y) + def get_a_mission(self, choord_x, choord_y, red_terror): + if red_terror: + self.mission = (0, 25) + else: + self.mission = (choord_x, choord_y) def folow(self, karta, blinky_last_position, x, y, m_x, m_y, possible_turns): x = int(x) @@ -93,31 +99,34 @@ def __init__(self, pos_x, pos_y, choord_x, choord_y, filename): self.choord_y = choord_y self.rect = self.image.get_rect().move(tile_width * pos_x - 10, tile_height * pos_y - 10) - def get_a_mission(self, choord_x, choord_y, karta): - min_m_x = int(choord_x) - 4 - if min_m_x < 3: - min_m_x = 3 - max_m_x = int(choord_x) + 4 - if max_m_x > 31: - max_m_x = 31 - min_m_y = int(choord_y) - 4 - if min_m_y < 1: - min_m_y = 1 - max_m_y = int(choord_y) + 4 - if max_m_y > 26: - max_m_y = 26 - m_x = randint(min_m_x, max_m_x) - m_y = randint(min_m_y, max_m_y) - while karta[m_x][m_y] == '1': + def get_a_mission(self, choord_x, choord_y, karta, pink_terror): + if pink_terror: + self.mission = (0, 2) + else: + min_m_x = int(choord_x) - 4 + if min_m_x < 3: + min_m_x = 3 + max_m_x = int(choord_x) + 4 + if max_m_x > 31: + max_m_x = 31 + min_m_y = int(choord_y) - 4 + if min_m_y < 1: + min_m_y = 1 + max_m_y = int(choord_y) + 4 + if max_m_y > 26: + max_m_y = 26 m_x = randint(min_m_x, max_m_x) m_y = randint(min_m_y, max_m_y) - self.mission = (m_x, m_y) + while karta[m_x][m_y] == '1': + m_x = randint(min_m_x, max_m_x) + m_y = randint(min_m_y, max_m_y) + self.mission = (m_x, m_y) - def folow(self, karta, blinky_last_position, x, y, m_x, m_y, possible_turns, pinky_leave_home): + def folow(self, karta, pinky_last_position, x, y, m_x, m_y, possible_turns, pinky_leave_home): x = int(x) y = int(y) for i in range(len(possible_turns)): - if possible_turns[i] == blinky_last_position: + if possible_turns[i] == pinky_last_position: del possible_turns[i] break if karta[x + 1][y] == '1' or karta[x + 1][y] == 'x' or karta[x + 1][y] == 'B' or karta[x + 1][y] == 'O': @@ -190,10 +199,13 @@ def __init__(self, pos_x, pos_y, choord_x, choord_y, filename): self.choord_y = choord_y self.rect = self.image.get_rect().move(tile_width * pos_x - 10, tile_height * pos_y - 10) - def get_a_mission(self, choord_x, choord_y, blinky_red_spirit_choord_x, blinky_red_spirit_choord_y): - m_x = 2 * int(choord_x) - int(blinky_red_spirit_choord_x) - m_y = 2 * int(choord_y) - int(blinky_red_spirit_choord_y) - self.mission = (m_x, m_y) + def get_a_mission(self, choord_x, choord_y, blinky_red_spirit_choord_x, blinky_red_spirit_choord_y, blue_terror): + if blue_terror: + self.mission = (35, 27) + else: + m_x = 2 * int(choord_x) - int(blinky_red_spirit_choord_x) + m_y = 2 * int(choord_y) - int(blinky_red_spirit_choord_y) + self.mission = (m_x, m_y) def folow(self, karta, inky_last_position, x, y, m_x, m_y, possible_turns, inky_leave_home_1, inky_leave_home_2): x = int(x) @@ -278,25 +290,28 @@ def __init__(self, pos_x, pos_y, choord_x, choord_y, filename): self.choord_y = choord_y self.rect = self.image.get_rect().move(tile_width * pos_x - 10, tile_height * pos_y - 10) - def get_a_mission(self, choord_x, choord_y, clyde_choord_x, clyde_choord_y): - min_m_x = int(choord_x) - 8 - if min_m_x < 3: - min_m_x = 3 - max_m_x = int(choord_x) + 8 - if max_m_x > 31: - max_m_x = 31 - min_m_y = int(choord_y) - 8 - if min_m_y < 1: - min_m_y = 1 - max_m_y = int(choord_y) + 8 - if max_m_y > 26: - max_m_y = 26 - clyde_choord_x = int(clyde_choord_x) - clyde_choord_y = int(clyde_choord_y) - if clyde_choord_x > min_m_x and clyde_choord_x < max_m_x and clyde_choord_y > min_m_y and clyde_choord_y < max_m_y: - self.mission = (28, 6) + def get_a_mission(self, choord_x, choord_y, clyde_choord_x, clyde_choord_y, orange_terror): + if orange_terror: + self.mission = (30, 0) else: - self.mission = (choord_x, choord_y) + min_m_x = int(choord_x) - 8 + if min_m_x < 3: + min_m_x = 3 + max_m_x = int(choord_x) + 8 + if max_m_x > 31: + max_m_x = 31 + min_m_y = int(choord_y) - 8 + if min_m_y < 1: + min_m_y = 1 + max_m_y = int(choord_y) + 8 + if max_m_y > 26: + max_m_y = 26 + clyde_choord_x = int(clyde_choord_x) + clyde_choord_y = int(clyde_choord_y) + if clyde_choord_x > min_m_x and clyde_choord_x < max_m_x and clyde_choord_y > min_m_y and clyde_choord_y < max_m_y: + self.mission = (28, 6) + else: + self.mission = (choord_x, choord_y) def folow(self, karta, blinky_last_position, x, y, m_x, m_y, possible_turns, clyde_leave_home_1, clyde_leave_home_2): x = int(x) @@ -369,4 +384,4 @@ def folow(self, karta, blinky_last_position, x, y, m_x, m_y, possible_turns, cly if l < min_l: min_l = l min_way = coords[2] - return min_way + return min_way \ No newline at end of file From 2130ae526e9bc06df38b3eb3ee0a7dc4cee8989c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BB=D1=8C=D1=8F?= Date: Sun, 26 Jan 2020 18:54:03 +0300 Subject: [PATCH 17/17] T Error 2.0 --- Pac-Man.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/Pac-Man.py b/Pac-Man.py index 80de423..f6e6304 100644 --- a/Pac-Man.py +++ b/Pac-Man.py @@ -378,16 +378,28 @@ def update(self): if pill: if not red_eat: red_terror = True + blinky_red_spirit.image = load_image('dead_1.jpg') + else: + blinky_red_spirit.image = load_image('blinky_1.jpg') + red_terror = False if not pink_eat: pink_terror = True + pinky_pink_spirit.image = load_image('dead_1.jpg') + else: + pinky_pink_spirit.image = load_image('pinky_1.jpg') + pink_terror = False if not blue_eat: blue_terror = True + inky_blue_spirit.image = load_image('dead_1.jpg') + else: + inky_blue_spirit.image = load_image('inky_1.jpg') + blue_terror = False if not orange_eat: orange_terror = True - blinky_red_spirit.image = load_image('dead_1.jpg') - pinky_pink_spirit.image = load_image('dead_1.jpg') - clyde_orange_spirit.image = load_image('dead_1.jpg') - inky_blue_spirit.image = load_image('dead_1.jpg') + clyde_orange_spirit.image = load_image('dead_1.jpg') + else: + clyde_orange_spirit.image = load_image('clyde_1.jpg') + orange_terror = False else: red_terror = False pink_terror = False