Member 13977575 Ответов: 0

Как проверить, перекрываются ли 2 цвета в Python


Итак ... дело обстоит так:
Я создал небольшой "редактор уровней", просто так, для удовольствия и опыта.
Во всяком случае, я закончил его, но не смог найти способ заставить игрока взаимодействовать с объектами, которые помещаются пользователем, как будто я проверяю с помощью colliderect, что он не работает, потому что переменная должна быть объектом стиля rect! Поэтому мое единственное решение-проверить, перекрываются ли цвета.
Вы все поймете, как только увидите код:
с Pygame
время импорта
size = 30
playing = False
pozx = 0
pozy = 0
color = 'red' # Sets cube color to red
cube_list_red = [] # Creates list of all red cubes
cube_list_green = []
running = True
pygame.init()
screen = pygame.display.set_mode((800, 500))

class Cube:
    def update(self):
        self.cx, self.cy = pygame.mouse.get_pos()
        self.square = pygame.Rect(self.cx, self.cy, 50, 50)

    def draw_red(self): 
        pygame.draw.rect(screen, (255, 0, 0), self.square)
    def draw_green(self):
        pygame.draw.rect(screen, (0, 255, 0), self.square)

cube = Cube()
drawing_cube = False
drawing_cube2 = False

while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        elif event.type == pygame.MOUSEBUTTONDOWN:
            if not playing:
                cube = Cube()
                cube.update()
                if color == 'red':
                    cube_list_red.append(cube)
                elif color == 'green':
                    cube_list_green.append(cube)
                drawing_cube = True
            
    key = pygame.key.get_pressed()
    if key[pygame.K_c]:
        if not playing:
            if color == 'red':
                color = 'green'
                time.sleep(0.5)
                print(color)
            else:
                color = 'red'
                time.sleep(0.5)
                print(color)
    elif key[pygame.K_r]:
        cube_list_red.clear()
        cube_list_green.clear()
    elif key[pygame.K_u]:
        if not playing:
            if color == 'red':
                if len(cube_list_red) > 0:
                    cube_list_red.pop()
                    time.sleep(0.5)
            elif color == 'green':
                if len(cube_list_green) > 0:
                    cube_list_green.pop()
                    time.sleep(0.5)
    elif key[pygame.K_p]:
        playing = True
    elif key[pygame.K_9]:
        playing = False
        pozx = 0
        pozy = 0
    if key[pygame.K_w] == True:
        if pozy >= 0 and playing != False:
            pozy = pozy - 0.40
    if key[pygame.K_a] == True:
        if pozx >= 0 and playing != False:
            pozx = pozx - 0.40
    if key[pygame.K_s] == True:
        if pozy <= 500 - size and playing != False:
            pozy = pozy + 0.40
    if key[pygame.K_d] == True and playing != False:
        if pozx <= 800 - size:
            pozx = pozx + 0.40

    screen.fill((0, 0, 255))
    player = pygame.Rect(pozx, pozy, size, size)
    if drawing_cube: 
        for cube in cube_list_red:
            cube.draw_red()
        for cube in cube_list_green:
            cube.draw_green()
    if playing:
        pygame.draw.rect(screen, (255, 255, 0), player)
    pygame.display.flip()


pygame.quit()


Что я уже пробовал:

Я пытался сделать player.colliderect(cube) и много других вещей для цикла с переменными cube_list_red и cube_list_green

0 Ответов