@NGT1VE

Как реализовать столкновения на pygame?

Я написал небольшую игру на pygame, но никак не получается отслеживать столкновения.
Необходимо чтобы при столкновении квадрата (корабль) и шарика (астероид) игра завершалась.

import pygame, random

size_screen = width, height = 600, 600
screen = pygame.display.set_mode(size_screen)
pygame.init()
pygame.display.set_caption('Space Traveler')
events = pygame.event.get()
clock = pygame.time.Clock()

#Словарь, содержит положение корабля по X и Y 
pos_shutle = {
	'y' : height / 2,
	'x' : width / 6
}

fps = 30

#переменная задает лимит астероидов
limit_balls = 6

def draw_shutle():
	"""Функция рисует корабль"""
	pygame.draw.rect(screen, pygame.Color('red'), (pos_shutle['x'], pos_shutle['y'], 30, 30))
	
asteroids = []

flag = True

while flag:
	
	screen.fill((65,74,76))
		
	#Проверка выхода из игры
	events = pygame.event.get()
	for event in events:
	    if event.type == pygame.QUIT:
	        flag = False

	for i in asteroids:
		"""цикл рисует и перемещает астероиды"""
		pygame.draw.circle(screen, pygame.Color('yellow'), (i[0], i[1]), i[3])
		i[0] -= i[2]

	for i in asteroids:
       """удаляет астероиды, если те улетели за границу"""
		if i[0] < - 50:
			asteroids.remove(i)

	if len(asteroids) < limit_balls:
        """создает новые астероиды,если лимит не превышен"""
		y_ran = random.randint(25, 675)
		speed_ran = random.randint(5, 20)
		radius_ran = random.randint(15, 30)
		asteroids.append([width+200, y_ran, speed_ran, radius_ran])

	keys = pygame.key.get_pressed()

	if keys[pygame.K_UP]:
		pos_shutle['y'] -= 10

	if keys[pygame.K_DOWN]:
		pos_shutle['y'] += 10

	draw_shutle()
	clock.tick(fps)
	pygame.display.flip()
pygame.quit()
  • Вопрос задан
  • 35 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы