Увеличить размер изображения при столкновении с Pygame? - PullRequest
0 голосов
/ 08 октября 2018

У меня есть программа с плеером (который является изображением) и прямоугольником, и я хочу, чтобы, когда игрок сталкивался с прямоугольником, размер изображения увеличивался.


Длятеперь у меня есть этот код:

import pygame
from random import randint

WIDTH, HEIGHT = 800, 800
FPS = 60

pygame.init()

win = pygame.display.set_mode((WIDTH, HEIGHT))
fenetre_rect = pygame.Rect(0, 0, WIDTH, HEIGHT)
pygame.display.set_caption("Hagar.io")
clock = pygame.time.Clock()

bg = pygame.image.load("bg.png").convert()
bg_surface = bg.get_rect(center=(WIDTH / 2, HEIGHT / 2))
bg_x = bg_surface.x
bg_y = bg_surface.y
x_max = WIDTH / 2
y_max = HEIGHT / 2

# player
player = pygame.transform.scale(pygame.image.load("player.png").convert_alpha(), (i, i))
player_rect = player.get_rect(center=(x_max, y_max))

# cell
rect_surface = pygame.Rect(300, 500, 20, 20)

# Game loop
running = True
while running:
    dt = clock.tick(FPS) / 1000

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    if player_rect.colliderect(rect_surface):
        print("collide")

    bg_surface.x = bg_x
    bg_surface.y = bg_y

    # draw on screen
    win.blit(bg, bg_surface)
    pygame.draw.rect(win, (255, 0, 0), rect_surface)
    win.blit(player, player_rect)
    pygame.display.flip()

pygame.quit()

Я пытаюсь добавить условие "colliderect", но оно не работает:

player_rect.width += 1
player_rect.height += 1

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 08 октября 2018

Эта строка

player = pygame.transform.scale(pygame.image.load("player.png").convert_alpha(), (i, i))

использует переменную i, но она не определена в вашем коде.Я не уверен, где это определено, но это ключ к тому, что вы хотите.В любом случае я постараюсь ответить без этой информации:

Дело в том, что увеличение rect ничего не даст, потому что прямоугольник - это просто координаты.Вы должны масштабировать фактическое изображение, и pygame.transform.scale делает именно это.

Вы можете сохранить изображение в отдельной переменной player_img:

player_img = pygame.image.load("player.png").convert_alpha()
player = pygame.transform.scale(player_img, (i, i))

Затем, когда вы хотите масштабироватьэто по-другому, просто позвоните .scale() еще раз:

double_size_player = pygame.transform.scale(player_img, (i*2, i*2))

Это все еще оставляет нас в загадке вашей неопределенной переменной i, но я думаю, вы понимаете суть этого.Помните, что вы должны извлечь новый rect из масштабированного изображения, потому что он будет больше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...