如何使对象从不重叠?

2024-09-30 20:29:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图在pygame中制作一个汽车游戏,但每当我尝试生成汽车时,它们中的一些会相互叠加,我该如何修复它

以下是生成汽车的代码:

        if len(enemiesL) == 0:
            if len(enemiesR) == 0:
                wavelengthL += 3
            for _ in range(wavelengthL):
                enemy = EnemyL(random.randrange(160, Width/2 - 50), random.randrange(-1500, -100), random.choice(["black", "blue", "brown", "darkblue", "orange", "pale", "purple", "red", "white", "yellow"]))
                enemiesL.append(enemy)
        
        if len(enemiesR) == 0:
            wavelengthR += 3
            for _ in range(wavelengthR):
                enemy = EnemyR(random.randrange(Width/2, Width-200), random.randrange(-1500, -100), random.choice(["black", "blue", "brown", "darkblue", "orange", "pale", "purple", "red", "white", "yellow"]))
                enemiesR.append(enemy)

Tags: inforlenifrangerandomwidth汽车
1条回答
网友
1楼 · 发布于 2024-09-30 20:29:12

创建一个随机位置,并评估泰国位置的新车是否与任何其他车辆重叠。如果车辆重叠,则丢弃该位置。使用^{}对象和^{}评估汽车是否重叠。
在以下情况中,假设汽车的位置为(enmey.xenemy.y),汽车的大小为(enemy_widthenemy_height):

for _ in range(wavelengthL):
    while True:
        x, y = random.randrange(160, Width/2 - 50), random.randrange(-1500, -100)
    
        new_rect = pygame.Rect(x, y, enemy_width, enemy_height)
        if not any(enmey for enmey in enemiesL if new_rect.colliderect(enmey.x, enmey.y, enemy_width, enemy_height)):
            break
    
    enemy = EnemyL(x, y, random.choice(["black", "blue", "brown", "darkblue", "orange", "pale", "purple", "red", "white", "yellow"]))
    enemiesL.append(enemy)
for _ in range(wavelengthR):
    while True:
        x, y = random.randrange(Width/2, Width-200), random.randrange(-1500, -100)

        new_rect = pygame.Rect(x, y, enemy_width, enemy_height)
        if not any(enmey for enmey in enemiesR if new_rect.colliderect(enmey.x, enmey.y, enemy_width, enemy_height)):
            break

    enemy = EnemyR(x, y, random.choice(["black", "blue", "brown", "darkblue", "orange", "pale", "purple", "red", "white", "yellow"]))
    enemiesR.append(enemy)

相关问题 更多 >