Update bla.py
parent
37bfa8d6b9
commit
231297adb1
59
bla.py
59
bla.py
|
@ -2,7 +2,6 @@ import pygame
|
||||||
import random
|
import random
|
||||||
import math
|
import math
|
||||||
|
|
||||||
from test import current_time
|
|
||||||
|
|
||||||
# Определение констант
|
# Определение констант
|
||||||
SCREEN_WIDTH = 1920
|
SCREEN_WIDTH = 1920
|
||||||
|
@ -19,7 +18,7 @@ BOT_SPEED = 2
|
||||||
FIRE_DELAY = 1000 # Задержка между выстрелами в миллисекундах
|
FIRE_DELAY = 1000 # Задержка между выстрелами в миллисекундах
|
||||||
WHITE = (255, 255, 255)
|
WHITE = (255, 255, 255)
|
||||||
BLACK = (0, 0, 0)
|
BLACK = (0, 0, 0)
|
||||||
|
score = 0
|
||||||
# Инициализация Pygame
|
# Инициализация Pygame
|
||||||
pygame.init()
|
pygame.init()
|
||||||
|
|
||||||
|
@ -70,7 +69,7 @@ class Explosion(pygame.sprite.Sprite):
|
||||||
self.rect = self.image.get_rect()
|
self.rect = self.image.get_rect()
|
||||||
self.rect.center = center
|
self.rect.center = center
|
||||||
|
|
||||||
# Добавление класса для анимации удара о каменную стену
|
# Добавление класса для анимации удара о каменную стену
|
||||||
class StoneExplosion(pygame.sprite.Sprite):
|
class StoneExplosion(pygame.sprite.Sprite):
|
||||||
def __init__(self, x, y):
|
def __init__(self, x, y):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
@ -161,14 +160,13 @@ class Tank(pygame.sprite.Sprite):
|
||||||
bullets.add(bullet)
|
bullets.add(bullet)
|
||||||
self.last_fire_time = current_time # Обновление времени последнего выстрела
|
self.last_fire_time = current_time # Обновление времени последнего выстрела
|
||||||
|
|
||||||
# Проверяем столкновение пули с каменными стенами
|
# Проверяем столкновение пули с каменными стенами
|
||||||
if pygame.sprite.spritecollideany(bullet, walls):
|
if pygame.sprite.spritecollideany(bullet, walls):
|
||||||
stoneexplosion_sound.play() # Воспроизведение звука столкновения с каменной стеной
|
stoneexplosion_sound.play() # Воспроизведение звука столкновения с каменной стеной
|
||||||
explosion = StoneExplosion(bullet.rect.centerx, bullet.rect.centery) # Создание анимации удара о стену
|
explosion = StoneExplosion(bullet.rect.centerx, bullet.rect.centery) # Создание анимации удара о стену
|
||||||
all_sprites.add(explosion) # Добавление анимации удара о стену в группу спрайтов
|
all_sprites.add(explosion) # Добавление анимации удара о стену в группу спрайтов
|
||||||
bullet.kill() # Удаление пули
|
bullet.kill() # Удаление пули
|
||||||
|
|
||||||
|
|
||||||
class PlayerBullet(pygame.sprite.Sprite):
|
class PlayerBullet(pygame.sprite.Sprite):
|
||||||
def __init__(self, x, y, angle):
|
def __init__(self, x, y, angle):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
@ -183,7 +181,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() # Удаляем снаряд, если он столкнулся со стеной
|
||||||
|
|
||||||
|
|
||||||
# Определение класса снаряда бота
|
# Определение класса снаряда бота
|
||||||
|
@ -201,7 +199,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() # Удаляем снаряд, если он столкнулся со стеной
|
||||||
|
|
||||||
|
|
||||||
# Определение класса для бота
|
# Определение класса для бота
|
||||||
|
@ -248,7 +246,7 @@ class Bot(pygame.sprite.Sprite):
|
||||||
self.rect.bottom = SCREEN_HEIGHT
|
self.rect.bottom = SCREEN_HEIGHT
|
||||||
|
|
||||||
def shoot_random(self):
|
def shoot_random(self):
|
||||||
# Vыстрел в направлении дула
|
# Vыстрел в направлении дула
|
||||||
current_time = pygame.time.get_ticks()
|
current_time = pygame.time.get_ticks()
|
||||||
if current_time - self.last_fire_time > random.randint(1000, 5000):
|
if current_time - self.last_fire_time > random.randint(1000, 5000):
|
||||||
bullet = BotBullet(self.rect.centerx, self.rect.centery, self.angle + 90) # Стрельба в направлении дула
|
bullet = BotBullet(self.rect.centerx, self.rect.centery, self.angle + 90) # Стрельба в направлении дула
|
||||||
|
@ -429,24 +427,26 @@ while running:
|
||||||
# Update sprites
|
# Update sprites
|
||||||
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)
|
||||||
if tank_hit and isinstance(tank_hit, Bot):
|
if tank_hit and isinstance(tank_hit, Bot):
|
||||||
explosion_sound.play() # Воспроизведение звука взрыва
|
explosion_sound.play() # Воспроизведение звука взрыва
|
||||||
explosion = Explosion(tank_hit.rect.centerx, tank_hit.rect.centery) # Создание взрыва
|
explosion = Explosion(tank_hit.rect.centerx, tank_hit.rect.centery) # Создание взрыва
|
||||||
all_sprites.add(explosion) # Добавление взрыва в группу спрайтов
|
all_sprites.add(explosion) # Добавление взрыва в группу спрайтов
|
||||||
bullet.kill() # Удаляем пулю
|
bullet.kill() # Удаляем пулю
|
||||||
tank_hit.kill() # Удаляем бота
|
tank_hit.kill() # Удаляем бота
|
||||||
respawn_bot() # Создаем нового бота
|
respawn_bot() # Создаем нового бота
|
||||||
elif isinstance(bullet, BotBullet):
|
score += 1
|
||||||
# Проверяем столкновение пули бота с стенами
|
|
||||||
if pygame.sprite.spritecollideany(bullet, walls):
|
elif isinstance(bullet, BotBullet):
|
||||||
stoneexplosion_sound.play() # Воспроизведение звука взрыва камня
|
# Проверяем столкновение пули бота с стенами
|
||||||
explosion = Explosion(bullet.rect.centerx, bullet.rect.centery) # Создание взрыва камня
|
if pygame.sprite.spritecollideany(bullet, walls):
|
||||||
all_sprites.add(explosion) # Добавление взрыва камня в группу спрайтов
|
stoneexplosion_sound.play() # Воспроизведение звука взрыва камня
|
||||||
bullet.kill() # Удаляем пулю бота
|
explosion = Explosion(bullet.rect.centerx, bullet.rect.centery) # Создание взрыва камня
|
||||||
|
all_sprites.add(explosion) # Добавление взрыва камня в группу спрайтов
|
||||||
|
bullet.kill() # Удаляем пулю бота
|
||||||
|
|
||||||
# Отрисовка фона
|
# Отрисовка фона
|
||||||
for i in range(2):
|
for i in range(2):
|
||||||
|
@ -532,6 +532,13 @@ while running:
|
||||||
screen.blit(stenki, (1600, 1030))
|
screen.blit(stenki, (1600, 1030))
|
||||||
screen.blit(stenki, (1800, 1030))
|
screen.blit(stenki, (1800, 1030))
|
||||||
|
|
||||||
|
font = pygame.font.Font(None, 36)
|
||||||
|
score_text = font.render(f'Score: {score}', True, WHITE)
|
||||||
|
screen.blit(score_text, (10, 10))
|
||||||
|
score_rect = score_text.get_rect(topleft=(10, 10))
|
||||||
|
pygame.draw.rect(screen, (0, 255, 0), (
|
||||||
|
score_rect.topleft, (score_rect.width, score_rect.height))) # Draw a green rectangle behind the score
|
||||||
|
screen.blit(score_text, score_rect.topleft)
|
||||||
pygame.display.flip()
|
pygame.display.flip()
|
||||||
clock.tick(FPS)
|
clock.tick(FPS)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue