import pygame import math import sys # Инициализация Pygame pygame.init() # Настройки экрана WIDTH, HEIGHT = 800, 600 screen = pygame.display.set_mode((WIDTH, HEIGHT)) pygame.display.set_caption("Shooting Game") # Загрузка изображения пули и персонажей bullet_img = pygame.transform.scale(pygame.image.load('bullet.png'), (50, 100)) player_img = pygame.transform.scale(pygame.image.load('player.png'), (50, 30)) enemy_img = pygame.transform.scale(pygame.image.load('enemy.png'), (50, 30)) crosshair_img = pygame.transform.scale(pygame.image.load('crosshair.png'), (30, 30)) # Позиции игрока и врага player_pos = [WIDTH // 2 - player_img.get_width() // 2, HEIGHT - player_img.get_height()] enemy_pos = [WIDTH // 2 - enemy_img.get_width() // 2, 50] # Скорость перемещения игрока player_speed = 5 # Списки для хранения пуль игрока и врага player_bullets = [] # Функция для отрисовки объектов def draw_elements(): screen.fill((255, 255, 255)) # Фон белого цвета screen.blit(player_img, player_pos) screen.blit(enemy_img, enemy_pos) screen.blit(crosshair_img, pygame.mouse.get_pos()) # Отображение мушки for bullet in player_bullets: screen.blit(bullet_img, bullet["position"]) # Основной игровой цикл while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() elif event.type == pygame.MOUSEBUTTONDOWN and event.button == 1: # Стрельба по нажатию ЛКМ mouse_x, mouse_y = pygame.mouse.get_pos() # Получаем координаты курсора мыши angle = math.atan2(mouse_y - player_pos[1], mouse_x - player_pos[0]) # Вычисляем угол между игроком и курсором player_bullets.append({"position": [player_pos[0] + player_img.get_width() // 2 - bullet_img.get_width() // 2, player_pos[1] + player_img.get_height() // 2 - bullet_img.get_height() // 2], "angle": angle}) keys = pygame.key.get_pressed() if keys[pygame.K_w] and player_pos[1] > 0: # Перемещение вверх player_pos[1] -= player_speed if keys[pygame.K_s] and player_pos[1] < HEIGHT - player_img.get_height(): # Перемещение вниз player_pos[1] += player_speed if keys[pygame.K_a] and player_pos[0] > 0: # Перемещение влево player_pos[0] -= player_speed if keys[pygame.K_d] and player_pos[0] < WIDTH - player_img.get_width(): # Перемещение вправо player_pos[0] += player_speed # Обновление позиции пуль игрока for bullet in player_bullets: bullet["position"][0] += 5 * math.cos(bullet["angle"]) # Учитываем направление пули bullet["position"][1] += 5 * math.sin(bullet["angle"]) # Учитываем направление пули # Удаляем пули, которые выходят за пределы экрана if bullet["position"][0] < 0 or bullet["position"][0] > WIDTH or bullet["position"][1] < 0 or bullet["position"][1] > HEIGHT: player_bullets.remove(bullet) # Отрисовка элементов draw_elements() clock = pygame.time.Clock() dt = 0 dt = clock.tick(60) / 1000 # Обновление экрана pygame.display.flip()