Как я могу нарисовать объект в зависимости от состояния переменной в Pygame? - PullRequest
2 голосов
/ 28 октября 2019

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

import pygame
pygame.init

flashlight = 1
if flashlight ==1:
    flashlight = pygame.draw.rect(win, RED, (item_spawns_x,item_spawns_y, 32, 32))

Player = pygame.draw.rect(win, WHITE, (x, y, 32, 32))
if Player.colliderect(flashlight):
    flashlight = 0

if flashlight == 0:
    del flashlight
pygame.display.update()

1 Ответ

1 голос
/ 28 октября 2019

pygame.draw.rect возвращает объект pygame.Rect. flashlight - это состояние, которое указывает, включен ли фонарик, поэтому не следует присваивать возвращаемое значение от pygame.draw.rect() до flashlight. Вы должны использовать отдельную переменную для прямоугольника фонарика (например, flash_rect).
Вы должны реализовать игровой цикл, который непрерывно перерисовывает сцену. Когда фонарик должен быть выключен, вам нужно изменить состояние переменной flashlight. например:

flashlight = 1

run = True
while run:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

    window.fill(0)

    if flashlight == 1:
        flash_rect = pygame.draw.rect(win, RED, (item_spawns_x,item_spawns_y, 32, 32))   
    player_rect = pygame.draw.rect(win, WHITE, (x, y, 32, 32))

    if flashlight and player_rect.colliderect(flash_rect):
        flashlight = 0

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