Może użycie pygame.Rect.colliderect ułatwi Tobie "oprogramowanie wykrywania kolizji" obiektów.
przykład
import pygame
from pygame.locals import *
from sys import exit
pygame.init()
window_size = (600, 400)
window = pygame.display.set_mode(window_size)
pygame.display.set_caption('Squares')
clock = pygame.time.Clock()
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)
BLACK = (0, 0, 0)
green_square_x_pos = 300
green_square_y_pos = 100
blue_square_x_pos = 100
blue_square_y_pos = 50
window_frame = Rect(0, 0, window_size[0], window_size[1])
square_green = Rect(green_square_x_pos, green_square_y_pos, 100, 100)
square_blue = Rect(blue_square_x_pos, blue_square_y_pos, 100, 100)
pixel_step = 5
while True:
keys = pygame.key.get_pressed()
for event in pygame.event.get():
if event.type == pygame.QUIT or keys[pygame.K_ESCAPE]:
pygame.quit()
exit()
blue_square_x_pos = 0
blue_square_y_pos = 0
if keys[pygame.K_RIGHT]:
blue_square_x_pos = pixel_step
if keys[pygame.K_LEFT]:
blue_square_x_pos = -pixel_step
if keys[pygame.K_DOWN]:
blue_square_y_pos = pixel_step
if keys[pygame.K_UP]:
blue_square_y_pos = -pixel_step
square_blue.move_ip(blue_square_x_pos, blue_square_y_pos)
collide = pygame.Rect.colliderect(square_blue, square_green)
if collide:
if keys[pygame.K_RIGHT]:
blue_square_x_pos = -pixel_step
if keys[pygame.K_LEFT]:
blue_square_x_pos = pixel_step
if keys[pygame.K_DOWN]:
blue_square_y_pos = -pixel_step
if keys[pygame.K_UP]:
blue_square_y_pos = pixel_step
square_blue.move_ip(blue_square_x_pos, blue_square_y_pos)
square_blue.clamp_ip(window_frame)
window.fill(BLACK)
pygame.draw.rect(window, GREEN, square_green)
pygame.draw.rect(window, BLUE, square_blue)
pygame.display.flip()
clock.tick(60)