From e7026a39bfe8c28c2d69b76c3f90fdebf2905c41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rom=C4=81ns=20=C5=A0aduncs?= Date: Mon, 12 Feb 2024 10:49:31 +0000 Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=B2=20=C2=AB?= =?UTF-8?q?/=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Lai kods stradātu vēl japievieno modeļus "player.png", "enemy.png", "bullet.png" --- sshooting.py | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 sshooting.py diff --git a/sshooting.py b/sshooting.py new file mode 100644 index 0000000..46d73ec --- /dev/null +++ b/sshooting.py @@ -0,0 +1,78 @@ +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()