У меня есть игра, в которой пользователь может перемещать игрока («mrhinckleberg») с помощью клавиш со стрелками. Есть также два «врага», которые автоматически отскакивают вверх и вниз.Проблема обнаружения столкновений в pygame
Как я могу обнаружить столкновение между игроком и врагом?
Вот мой код, который я до сих пор:
import pygame
import time
pygame.init()
window = pygame.display.set_mode((800,800))
pygame.display.set_caption("Yues")
theboard = pygame.image.load('theboard.png')
enemy = pygame.image.load('mrenemy.png')
mrhinckleberg = pygame.image.load('MrHinckleBerg.png')
mrhincklebergdead = pygame.image.load('MrHinckleBergdead.png')
deathscreen = pygame.image.load('deathscreen.png')
black = (0,0,0)
clock1 = pygame.time.Clock()
def quitt():
pygame.quit()
quit()
playerx = 750
playery = 450
enemydirection = 'down'
enemyx = 500
enemyy = 50
enemyspeed = 100
enemydirection2 = 'up'
enemyx2 = 350
enemyy2 = 750
enemyspeed2 = 50
enemydirection3 = 'down'
enemyx3 = 200
enemyy3 = 50
enemyspeed3 = 150
while True:
window.blit(theboard, (0,0))
if enemydirection == 'down':
enemyy += enemyspeed
if enemyy >= 790:
enemydirection = 'up'
elif enemydirection == 'up':
enemyy -= enemyspeed
if enemyy <= 10:
enemydirection = 'down'
if enemydirection2 == 'up':
enemyy2 -= enemyspeed2
if enemyy2 <= 10:
enemydirection2 = 'down'
elif enemydirection2 == 'down':
enemyy2 += enemyspeed2
if enemyy2 >= 790:
enemydirection2 = 'up'
for event in pygame.event.get():
if event.type == pygame.QUIT:
quitt()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_RIGHT:
playerx += 12
elif event.key == pygame.K_LEFT:
playerx -= 12
elif event.key == pygame.K_UP:
playery -= 12
elif event.key == pygame.K_DOWN:
playery += 12
if playerx == enemyx and playery == enemyy:
print("hai")
window.blit(theboard, (0,0))
window.blit(mrhinckleberg, (playerx,playery))
window.blit(enemy, (enemyx,enemyy))
window.blit(enemy, (enemyx2,enemyy2))
window.blit(enemy, (enemyx3,enemyy3))
pygame.display.update()
Этот код действительно должен быть более организованным. И вы должны использовать прямоугольники, а не пучок отдельных переменных. И ваше движение будет очень изменчивым. И вы не указали проблему. У этого списка нет конца. –
Я не могу понять, как это сделать, когда два изображения имеют одинаковые x и y, они что-то делают. Я знаю, что он не организован хорошо и не так, но я новичок в pygame. @MalikBrahimi –
Используйте прямоугольники Pygame, у них есть встроенные методы для столкновения и перекрытия. –