Метод .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)
|
Задание: собрать алгоритм для проверки пересечения игрока с препятствиями по вертикали.