I'm trying to figure out how to do some basic collision detection between rectangles. It's working on all sides of my enemy rectangle except the left side. While the collision seems to be detected, my player is moving in a direction contrary to my instructions.
#!/usr/bin/python
import pygame
from random import randrange
pygame.init()
BLACK = ( 0, 0, 0)
WHITE = (255, 255, 255)
GREEN = (0, 255, 0)
RED = (255, 0, 0)
color = GREEN
w = 800
h = 600
size = (w, h)
screen = pygame.display.set_mode(size)
pygame.display.set_caption("Cool Window")
done = False
clock = pygame.time.Clock()
pos_x = 0
pos_y = 0
enemy_pos_x = w/2
enemy_pos_y = h/2
last_move = "none"
while not done:
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
if(event.type==pygame.KEYDOWN):
if(event.key == pygame.K_ESCAPE):
done = True
if(event.key == pygame.K_LEFT):
pos_x -= 5
last_move = "left"
print 'Posx: %s.\n' % pos_x
if(event.key == pygame.K_RIGHT):
pos_x += 5
las_move = "right"
print 'Posx: %s.\n' % pos_x
if(event.key == pygame.K_UP):
pos_y -= 5
last_move = "up"
print 'Posy: %s.\n' % pos_y
if(event.key == pygame.K_DOWN):
pos_y += 5
last_move = "down"
print 'Posy: %s.\n' % pos_y
if pos_x+40 > 800:
pos_x -= 5
if pos_x < 0:
pos_x += 5
if pos_y+40 > 600:
pos_y -= 5
if pos_y < 0:
pos_y += 5
#collision with enemy
if (pos_x+40 >= enemy_pos_x ) & (pos_y+40 >= enemy_pos_y) & (pos_x <= enemy_pos_x+40) & (pos_y <= enemy_pos_y+40):
print 'Collision \n'
if last_move == "left" :
pos_x += 5
if last_move == "right" :
pos_x -= 5
if last_move == "up" :
pos_y += 5
if last_move == "down" :
pos_y -= 5
screen.fill(BLACK)
#Draw
pygame.draw.rect(screen, WHITE, [enemy_pos_x, enemy_pos_y, 40, 40])
pygame.draw.rect(screen, color, [pos_x, pos_y, 40, 40])
pygame.display.flip()
clock.tick(60)
pygame.quit()