From b4a9fca53f0c91637b43a292ed9ddc8f61757d1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Artjoms=20Marians=20=C5=85e=C4=8Dajevs?= Date: Mon, 26 Feb 2024 10:28:25 +0000 Subject: [PATCH] Update Gaame with menu --- Gaame with menu | 43 ++++++++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/Gaame with menu b/Gaame with menu index 71a921c..153455f 100644 --- a/Gaame with menu +++ b/Gaame with menu @@ -40,15 +40,21 @@ class Tank(pygame.sprite.Sprite): self.rect = self.image.get_rect(center=(x, y)) self.angle = -90 # Поворот на 90 градусов против часовой стрелки self.last_fire_time = pygame.time.get_ticks() # Время последнего выстрела + self.turn_threshold = 50 # Пороговое значение расстояния для разворота def update(self): keys = pygame.key.get_pressed() if keys[pygame.K_w]: self.move_forward() mouse_pos = pygame.mouse.get_pos() - self.angle = math.degrees(math.atan2(mouse_pos[1] - self.rect.centery, mouse_pos[0] - self.rect.centerx)) + 90 - self.image = pygame.transform.rotate(self.original_image, -self.angle) - self.rect = self.image.get_rect(center=self.rect.center) + + # Проверяем расстояние до курсора + distance_to_cursor = math.hypot(mouse_pos[0] - self.rect.centerx, mouse_pos[1] - self.rect.centery) + if distance_to_cursor > self.turn_threshold: + # Если расстояние больше порогового значения, разворачиваем объект + self.angle = math.degrees(math.atan2(mouse_pos[1] - self.rect.centery, mouse_pos[0] - self.rect.centerx)) + 90 + self.image = pygame.transform.rotate(self.original_image, -self.angle) + self.rect = self.image.get_rect(center=self.rect.center) def move_forward(self): angle_rad = math.radians(self.angle + 270) @@ -86,7 +92,8 @@ class PlayerBullet(pygame.sprite.Sprite): if not screen.get_rect().colliderect(self.rect): self.kill() if pygame.sprite.spritecollideany(self, walls): - self.kill() # Удаляем снаряд, если он столкнулся со стеной + self.kill() + # Определение класса снаряда бота class BotBullet(pygame.sprite.Sprite): @@ -103,8 +110,10 @@ class BotBullet(pygame.sprite.Sprite): if not screen.get_rect().colliderect(self.rect): self.kill() if pygame.sprite.spritecollideany(self, walls): + self.kill() # Удаляем снаряд, если он столкнулся со стеной + # Определение класса для бота class Bot(pygame.sprite.Sprite): def __init__(self, x, y): @@ -121,7 +130,7 @@ class Bot(pygame.sprite.Sprite): self.move_random() self.rotate_random() self.check_bounds() - #self.shoot_random() + # self.shoot_random() def move_random(self): # Движение вперёд в направлении текущего угла поворота @@ -148,15 +157,14 @@ class Bot(pygame.sprite.Sprite): elif self.rect.bottom > SCREEN_HEIGHT: self.rect.bottom = SCREEN_HEIGHT - #def shoot_random(self): - # Выстрел в направлении дула - #current_time = pygame.time.get_ticks() - #if current_time - self.last_fire_time > random.randint(1000, 5000): - #bullet = BotBullet(self.rect.centerx, self.rect.centery, self.angle + 90) # Стрельба в направлении дула - #all_sprites.add(bullet) - #bullets.add(bullet) - #self.last_fire_time = current_time - + # def shoot_random(self): + # Выстрел в направлении дула + # current_time = pygame.time.get_ticks() + # if current_time - self.last_fire_time > random.randint(1000, 5000): + # bullet = BotBullet(self.rect.centerx, self.rect.centery, self.angle + 90) # Стрельба в направлении дула + # all_sprites.add(bullet) + # bullets.add(bullet) + # self.last_fire_time = current_time class Wall(pygame.sprite.Sprite): @@ -211,9 +219,6 @@ for pos in wall_stenki_positions: all_sprites.add(wall_stenki) walls.add(wall_stenki) - - - # Создание групп спрайтов all_sprites = pygame.sprite.Group() tanks = pygame.sprite.Group() @@ -229,7 +234,6 @@ all_sprites.add(bot) tanks.add(bot) - def draw_menu(): screen.blit(menu_background, (0, 0)) # Рисуем текст меню @@ -261,13 +265,10 @@ while menu_active: else: menu_active = False # Нажата кнопка "Старт" - - # Основной игровой цикл clock = pygame.time.Clock() running = True - while running: player_bullets = [] bot_bullets = []