Как заставить pygame выдавать предупреждение, когда игрок касается боковой части экрана?

#python #pygame

#python #pygame

Вопрос:

Я создал игру с помощью pygame, и я хотел, чтобы pygame выдавал ошибку типа «Вы не можете касаться сторон экрана», когда игрок касается стороны экрана. Я пытался искать в Интернете, но не нашел никаких хороших результатов. Я думал о добавлении блока за пределы экрана, и когда игрок касается блока, он выдает предупреждение, но это заняло слишком много времени и в любом случае не сработало. Я также не знаю, как подать оповещение, а затем, после подачи предупреждения, снова запустить игру. Кто-нибудь знает, как это сделать?

Ответ №1:

Определите pygame.Rect объект для игрока:

 player_rect = pygame.Rect(w, y, width, height)
 

или получить прямоугольник из изображения игрока ( player_image ):

 player_rect = player_image.get_Rect(topleft = (x, y))
 

Получить прямоугольник поверхности дисплея ( screen )

 screen_rect = screen.get_rect()
 

Оцените, находится ли игрок вне экрана:

 if player_rect.left < screen_rect.left or player_rect.right < screen_rect.right or 
   player_rect.top < screen_rect.top or player_rect.bottom < screen_rect.bottom:
    printe("You can't touch the screen sides")
 

Смотрите pygame.Rect.clamp() соответственно pygame.Rect.clamp_ip() :

Возвращает новый прямоугольник, который перемещается, чтобы быть полностью внутри аргумента Rect .

С помощью этой функции объект может быть полностью сохранен в окне:

 player_rect.clamp_ip(screen_rect)
 

Вы можете использовать зажатый прямоугольник, чтобы оценить, касается ли игрок края окна:

 screen_rect = screen.get_rect()
player_rect = player_image.get_Rect(topleft = (x, y))

clamped_rect = player_rect.clamp(screen_rect)
if clamped_rect.x != player_rect.x or clamped_rect.y != player_rect.y:
    printe("You can't touch the screen sides")

player_rect = clamped_rect
x, y = player_rect.topleft
 

Комментарии:

1. Спасибо, это действительно помогло!

2. @NikiGholipour Спасибо. Пожалуйста.