Update Gaame with menu

52
Artjoms Marians Ņečajevs 2024-02-26 10:28:25 +00:00
parent 0fb5eb5666
commit b4a9fca53f
1 changed files with 22 additions and 21 deletions

View File

@ -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 = []