Update Gaame with menu
parent
c0d65c7c1a
commit
a40b5b84a6
|
@ -113,7 +113,7 @@ class PlayerBullet(pygame.sprite.Sprite):
|
||||||
if not screen.get_rect().colliderect(self.rect):
|
if not screen.get_rect().colliderect(self.rect):
|
||||||
self.kill()
|
self.kill()
|
||||||
if pygame.sprite.spritecollideany(self, walls):
|
if pygame.sprite.spritecollideany(self, walls):
|
||||||
self.kill() # Удаляем снаряд, если он столкнулся со стеной
|
self.kill() # Удаляем снаряд, если он столкнулся со стеной
|
||||||
|
|
||||||
# Определение класса снаряда бота
|
# Определение класса снаряда бота
|
||||||
class BotBullet(pygame.sprite.Sprite):
|
class BotBullet(pygame.sprite.Sprite):
|
||||||
|
@ -130,7 +130,7 @@ class BotBullet(pygame.sprite.Sprite):
|
||||||
if not screen.get_rect().colliderect(self.rect):
|
if not screen.get_rect().colliderect(self.rect):
|
||||||
self.kill()
|
self.kill()
|
||||||
if pygame.sprite.spritecollideany(self, walls):
|
if pygame.sprite.spritecollideany(self, walls):
|
||||||
self.kill() # Удаляем снаряд, если он столкнулся со стеной
|
self.kill() # Удаляем снаряд, если он столкнулся со стеной
|
||||||
|
|
||||||
# Определение класса для бота
|
# Определение класса для бота
|
||||||
class Bot(pygame.sprite.Sprite):
|
class Bot(pygame.sprite.Sprite):
|
||||||
|
@ -261,6 +261,8 @@ bot = Bot(3 * SCREEN_WIDTH // 4, SCREEN_HEIGHT // 2)
|
||||||
all_sprites.add(bot)
|
all_sprites.add(bot)
|
||||||
tanks.add(bot)
|
tanks.add(bot)
|
||||||
|
|
||||||
|
music_enabled = True
|
||||||
|
|
||||||
def draw_menu():
|
def draw_menu():
|
||||||
screen.blit(menu_background, (0, 0))
|
screen.blit(menu_background, (0, 0))
|
||||||
# Рисуем текст меню
|
# Рисуем текст меню
|
||||||
|
@ -274,9 +276,31 @@ def draw_menu():
|
||||||
quit_rect = quit_text.get_rect(center=(SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2 + 50))
|
quit_rect = quit_text.get_rect(center=(SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2 + 50))
|
||||||
screen.blit(quit_text, quit_rect)
|
screen.blit(quit_text, quit_rect)
|
||||||
|
|
||||||
|
# Рисуем кнопку включения/выключения музыки
|
||||||
|
music_text = font.render("Music: " + ("On" if music_enabled else "Off"), True, WHITE)
|
||||||
|
music_rect = music_text.get_rect(center=(SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2 + 150))
|
||||||
|
screen.blit(music_text, music_rect)
|
||||||
|
|
||||||
pygame.display.flip()
|
pygame.display.flip()
|
||||||
|
|
||||||
return quit_rect # Возвращаем прямоугольник для кнопки "Выйти"
|
return quit_rect, music_rect # Возвращаем прямоугольники для кнопок "Выйти" и "Музыка"
|
||||||
|
|
||||||
|
# Главный цикл программы
|
||||||
|
menu_active = True
|
||||||
|
while menu_active:
|
||||||
|
quit_rect, music_rect = draw_menu()
|
||||||
|
for event in pygame.event.get():
|
||||||
|
if event.type == pygame.MOUSEBUTTONDOWN:
|
||||||
|
if event.button == 1: # Левая кнопка мыши
|
||||||
|
if quit_rect.collidepoint(event.pos):
|
||||||
|
pygame.quit()
|
||||||
|
quit()
|
||||||
|
elif music_rect.collidepoint(event.pos): # Проверяем, нажата ли кнопка музыки
|
||||||
|
music_enabled = not music_enabled # Инвертируем состояние звука
|
||||||
|
if music_enabled:
|
||||||
|
pygame.mixer.music.unpause() # Включаем музыку
|
||||||
|
else:
|
||||||
|
pygame.mixer.music.pause() # Выключаем музыку
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -340,7 +364,7 @@ while running:
|
||||||
# Обновление всех спрайтов только в случае, если игра не на паузе
|
# Обновление всех спрайтов только в случае, если игра не на паузе
|
||||||
all_sprites.update()
|
all_sprites.update()
|
||||||
|
|
||||||
# Проверка столкновений пуль с танками
|
# Проверка столкновений пуль с танками
|
||||||
for bullet in bullets:
|
for bullet in bullets:
|
||||||
if isinstance(bullet, PlayerBullet):
|
if isinstance(bullet, PlayerBullet):
|
||||||
tank_hit = pygame.sprite.spritecollideany(bullet, tanks, pygame.sprite.collide_mask)
|
tank_hit = pygame.sprite.spritecollideany(bullet, tanks, pygame.sprite.collide_mask)
|
||||||
|
@ -400,7 +424,7 @@ while running:
|
||||||
# Обновление всех спрайтов
|
# Обновление всех спрайтов
|
||||||
all_sprites.update()
|
all_sprites.update()
|
||||||
|
|
||||||
# Проверка столкновений пуль с танками
|
# Проверка столкновений пуль с танками
|
||||||
for bullet in bullets:
|
for bullet in bullets:
|
||||||
if isinstance(bullet, PlayerBullet):
|
if isinstance(bullet, PlayerBullet):
|
||||||
tank_hit = pygame.sprite.spritecollideany(bullet, tanks, pygame.sprite.collide_mask)
|
tank_hit = pygame.sprite.spritecollideany(bullet, tanks, pygame.sprite.collide_mask)
|
||||||
|
@ -503,10 +527,9 @@ while running:
|
||||||
screen.blit(stenki, (1600, 1030))
|
screen.blit(stenki, (1600, 1030))
|
||||||
screen.blit(stenki, (1800, 1030))
|
screen.blit(stenki, (1800, 1030))
|
||||||
|
|
||||||
|
|
||||||
pygame.display.flip()
|
pygame.display.flip()
|
||||||
clock.tick(FPS)
|
clock.tick(FPS)
|
||||||
|
|
||||||
# Завершение работы Pygame
|
# Завершение работы Pygame
|
||||||
pygame.quit()
|
pygame.quit()
|
||||||
|
|
||||||
# token: 8f195a885b18a96da6577884cc731f850f33a9e2 переделай код так чтоби игру мозно било приостанавливат кнопкой escape
|
|
Loading…
Reference in New Issue