#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 Спасибо. Пожалуйста.