Статья Автор: Омарбек Нұр-Мұхаммед

Практикум 2

Метод .collide() класса Player

В методе нужно реализовать столкновение игрока с препятствиями.

Модуль player
import pygame


class Player(pygame.sprite.Sprite):
    def __init__(self, x, y):
        ...

    def reset(self, screen):
        ...

    def update(self, left, right, up, down):
        ...

    def collide(self, group):
        for wall in group:
            if pygame.sprite.collide_rect(self, wall):
                if self.x_speed < 0:
                    self.rect.left = wall.rect.right
                elif self.x_speed > 0:
                    self.rect.right = wall.rect.left
  • group - это группа препятствий
  • Цикл перебирает каждый объект в группе и проверяет пересечение игрока с препятствием
  • Если игрок движется влево и пересекается с препятствием, то левая часть игрока принимает координаты правой части препятствия
  • Если игрок движется вправо и пересекается с препятствием, то правая часть игрока принимает координаты левой части препятствия
Модуль main
from player import Player
from wall import Wall

import sys
import pygame
pygame.init()

SIZE = WIDTH, HEIGHT = 800, 600
screen = pygame.display.set_mode(SIZE)
clock = pygame.time.Clock()

LEFT = RIGHT = UP = DOWN = False

p1 = Player(400, 300)

walls = pygame.sprite.Group()

...

while 1:
    ...

    screen.fill((255, 255, 255))

    p1.reset(screen)
    p1.update(LEFT, RIGHT, UP, DOWN)
    p1.collide(walls)

    walls.draw(screen)

    pygame.display.update()

    clock.tick(60)

 

Задание: собрать алгоритм для проверки пересечения игрока с препятствиями по вертикали.

Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация
Печать