Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pygame
- import random
- from pygame.math import Vector2
- import os
- width = 1280
- height = 720
- fps = 60
- gameName = 'Creative brawl'
- pygame.init()
- BLACK = (0, 0, 0)
- NAVI = (0, 0, 128)
- GREEN = (0, 255, 0)
- BLUE = (0, 0, 255)
- Brightgreen = (102,255,0)
- WHITE = (255, 255, 255)
- imgdir = os.getcwd() + '/venv/media-2/img'
- snddir = os.getcwd() + '/venv/media-2/snd'
- screen = pygame.display.set_mode((width, height,))
- pygame.display.set_caption(gameName)
- icon = pygame.image.load('ivon.png')
- pygame.display.set_icon(icon)
- clock = pygame.time.Clock()
- all_sprites = pygame.sprite.Group()
- mobs = pygame.sprite.Group()
- bullets = pygame.sprite.Group()
- def drawText(screen,text,size,x,y,color):
- fontname = pygame.font.match_font('arial')
- font = pygame.font.Font(fontname, size)
- textsprite = font.render(text, True, color)
- text_rect = textsprite.get_rect()
- text_rect.center = (x, y)
- screen.blit(textsprite, text_rect)
- bg = pygame.image.load(imgdir + '/bg2.jpg')
- bg = pygame.transform.scale(bg,(width,height))
- bg_rect = bg.get_rect()
- class Bullet(pygame.sprite.Sprite): #100 000 хп
- def __init__(self):
- pygame.sprite.Sprite.__init__(self)
- self.image = pygame.image.load(imgdir + '/shell.png')
- self.image = pygame.transform.scale(self.image, (4, 10))
- self.image = pygame.transform.rotate(self.image, key.angle-90)
- self.rect = self.image.get_rect()
- self.rect.center = Vector2(key.rect.center)
- self.speed = 40
- self.move = key.direction * self.speed
- def update(self):
- self.rect.center += self.move
- class Player(pygame.sprite.Sprite): #100 000 хп
- def __init__(self):
- pygame.sprite.Sprite.__init__(self)
- self.image = pygame.image.load(imgdir + '/player/2.png')
- self.image = pygame.transform.scale(self.image, (100, 75))
- self.rect = self.image.get_rect()
- self.rect.center = (width//2,height//2)
- self.points = 0
- self.speed = 6
- self.copy = self.image
- self.position = Vector2(self.rect.center)
- self.angle = 0
- self.direction = Vector2(1, 0)
- self.bullet = 30
- self.anim_speed = 4
- self.frame = 0
- self.anim = []
- for i in range(1,21):
- image = pygame.image.load(imgdir + f'/player/{i}.png')
- image = pygame.transform.scale(image,(100,75))
- self.anim.append(image)
- def animation(self):
- self.image = self.anim[self.frame // self.anim_speed]
- self.image = pygame.transform.rotate(self.image, self.angle)
- self.rect =self.image.get_rect(center = self.rect.center)
- self.frame += 1 # Меняем кадр анимации
- if self.frame == self.anim_speed * len(self.anim): # Проверяем достижение конца картинок
- self.frame = 0 # Сбрасываем счетчик кадров
- def rotate(self, rotate_speed):
- self.direction.rotate_ip(-rotate_speed)
- self.angle += rotate_speed
- self.image = pygame.transform.rotate(self.copy, self.angle)
- self.rect = self.image.get_rect(center = self.rect.center)
- self.frame += 1
- if self.frame == self.anim_speed * len(self.anim):
- self.frame = 0
- def update (self):
- self.animation()
- key = pygame.key.get_pressed()
- if key[pygame.K_d]:
- self.rotate(-5)
- if key[pygame.K_a]:
- self.rotate(5)
- if key[pygame.K_w]:
- self.position += self.speed * self.direction
- if key[pygame.K_s]:
- self.position -= self.speed * self.direction
- self.rect.center = self.position
- if self.rect.right > width:
- self.rect.right = -0
- if self.rect.left < 0:
- self.rect.left = 2500
- if self.rect.top < 0:
- self.rect.top = 1500
- if self.rect.bottom > width:
- self.rect.bottom = 2500
- class Mob_left(pygame.sprite.Sprite): # 100 hp
- def __init__(self):
- pygame.sprite.Sprite.__init__(self)
- self.image = pygame.Surface((16,16),pygame.SRCALPHA)
- # self.image.fill(NAVI)
- self.rect = self.image.get_rect()
- self.image = pygame.image.load(imgdir + '/enemy1/4.png')
- self.image = pygame.transform.scale(self.image, (60, 60))
- self.rect.x = -12
- self.rect.y = random.randrange(0,height)
- self.speedx = random.randrange(+3,6)
- self.speedy = random.randrange(-3, 6)
- self.copy = self.image
- self.position = Vector2(self.rect.center)
- self.angle = 0
- self.direction = Vector2(0, -1)
- self.anim_speed = 4
- self.frame = 0
- self.anim = []
- for i in range(1, 9):
- image = pygame.image.load(imgdir + f'/enemy1/{i}.png')
- image = pygame.transform.scale(image, (100, 75))
- self.anim.append(image)
- def rotate(self, rotate_speed):
- self.direction.rotate_ip(-rotate_speed)
- self.angle += rotate_speed
- self.image = pygame.transform.rotate(self.copy, self.angle)
- self.rect = self.image.get_rect(center=self.rect.center)
- def animation(self):
- self.image = self.anim[self.frame // self.anim_speed]
- self.image = pygame.transform.rotate(self.image, self.angle)
- self.rect = self.image.get_rect(center=self.rect.center)
- self.frame += 1 # Меняем кадр анимации
- if self.frame == self.anim_speed * len(self.anim): # Проверяем достижение конца картинок
- self.frame = 0 # Сбрасываем счетчик кадров
- def update(self):
- self.rect.x += random.randrange(+4,8)
- self.rect.y -= random.randrange(-4,8)
- if self.rect.right > width:
- self.rect.right = 0
- if self.rect.top < 0:
- self.rect.top = 1500
- for i in range(9):
- mob1 = Mob_left()
- all_sprites.add(mob1)
- mobs.add(mob1)
- class Mob1_right(pygame.sprite.Sprite): # 100 hp
- def __init__(self):
- pygame.sprite.Sprite.__init__(self)
- #self.image = pygame.Surface((16,16),pygame.SRCALPHA)
- self.image = pygame.image.load(imgdir + '/powerups/money.png')
- self.image = pygame.transform.scale(self.image, (60, 60))
- self.rect = self.image.get_rect()
- self.rect.y = random.randrange(700,1000)
- self.rect.x = random.randrange(10,height)
- self.speedx = random.randrange(+0, 1)
- self.speedy = random.randrange(-0, 1)
- self.copy = self.image
- self.position = Vector2(self.rect.center)
- self.angle = 0
- self.direction = Vector2(1, 0)
- def rotate(self, rotate_speed):
- self.direction.rotate_ip(-rotate_speed)
- self.angle += rotate_speed
- self.image = pygame.transform.rotate(self.copy, self.angle)
- self.rect = self.image.get_rect(center=self.rect.center)
- def update(self):
- self.rotate(-5)
- self.rect.x += self.speedx
- self.rect.y -= self.speedy
- if self.rect.right > width:
- self.rect.right = 0
- if self.rect.top < 0:
- self.rect.top = 1500
- for i in range(9):
- mob1 = Mob1_right()
- all_sprites.add(mob1)
- mobs.add(mob1)
- class Mob2_right(pygame.sprite.Sprite): # 100 hp
- def __init__(self):
- pygame.sprite.Sprite.__init__(self)
- #self.image = pygame.Surface((16,16),pygame.SRCALPHA)
- self.image = pygame.image.load(imgdir + '/powerups/health.png')
- self.image = pygame.transform.scale(self.image, (60, 60))
- self.rect = self.image.get_rect()
- self.rect.y = random.randrange(700,1000)
- self.rect.x = random.randrange(10,height)
- self.speedx = random.randrange(+0, 1)
- self.speedy = random.randrange(-0, 1)
- self.copy = self.image
- self.position = Vector2(self.rect.center)
- self.angle = 0
- self.direction = Vector2(1, 0)
- def rotate(self, rotate_speed):
- self.direction.rotate_ip(-rotate_speed)
- self.angle += rotate_speed
- self.image = pygame.transform.rotate(self.copy, self.angle)
- self.rect = self.image.get_rect(center=self.rect.center)
- def update(self):
- self.rotate(-5)
- self.rect.x += self.speedx
- self.rect.y -= self.speedy
- if self.rect.right > width:
- self.rect.right = 0
- if self.rect.top < 0:
- self.rect.top = 1500
- for i in range(9):
- mob2 = Mob2_right()
- all_sprites.add(mob2)
- mobs.add(mob2)
- class Mob3_UP(pygame.sprite.Sprite): # 100 hp
- def __init__(self):
- pygame.sprite.Sprite.__init__(self)
- # self.image = pygame.Surface((50,16),pygame.SRCALPHA)
- self.image = pygame.image.load(imgdir + '/enemy1/4.png')
- self.image = pygame.transform.scale(self.image, (60, 60))
- self.rect = self.image.get_rect()
- self.rect.y = 345
- self.rect.x = random.randrange(10,height)
- self.speedx = random.randrange(4, 8)
- self.speedy = random.randrange(4, 8)
- self.anim_speed = 4
- self.frame = 0
- self.anim = []
- for i in range(1,9):
- image = pygame.image.load(imgdir + f'/enemy1/{i}.png')
- image = pygame.transform.scale(image,(100,75))
- self.anim.append(image)
- def animation(self):
- self.image = self.anim[self.frame // self.anim_speed]
- self.image = pygame.transform.rotate(self.image, self.angle)
- self.rect =self.image.get_rect(center = self.rect.center)
- self.frame += 1 # Меняем кадр анимации
- if self.frame == self.anim_speed * len(self.anim): # Проверяем достижение конца картинок
- self.frame = 0 # Сбрасываем счетчик кадров
- def update(self):
- self.rect.y += self.speedx
- self.rect.x -= self.speedy
- if self.rect.right > width:
- self.rect.right = 0
- if self.rect.top < 0:
- self.rect.top = 1500
- for i in range(9):
- mob3 = Mob3_UP()
- all_sprites.add(mob3)
- mobs.add(mob3)
- class Mob4_DOWN(pygame.sprite.Sprite): # 1000 hp
- def __init__(self):
- pygame.sprite.Sprite.__init__(self)
- self.image = pygame.Surface((16,16),pygame.SRCALPHA)
- self.image.fill(NAVI)
- self.rect = self.image.get_rect()
- self.rect.y = -300
- self.rect.x = random.randrange(0,height)
- self.speedx = random.randrange(4, 8)
- self.speedy = random.randrange(4, 8)
- self.image = pygame.image.load(imgdir + '/enemy1/4.png')
- self.image = pygame.transform.scale(self.image, (60, 60))
- self.copy = self.image
- self.position = Vector2(self.rect.center)
- self.angle = 0
- self.direction = Vector2(1, 0)
- def animation(self):
- self.image = self.anim[self.frame // self.anim_speed]
- self.image = pygame.transform.rotate(self.image, self.angle)
- self.rect = self.image.get_rect(center=self.rect.center)
- self.frame += 1 # Меняем кадр анимации
- if self.frame == self.anim_speed * len(self.anim): # Проверяем достижение конца картинок
- self.frame = 0 # Сбрасываем счетчик кадров
- def rotate(self, rotate_speed):
- self.direction.rotate_ip(-rotate_speed)
- self.angle += rotate_speed
- self.image = pygame.transform.rotate(self.copy, self.angle)
- self.rect = self.image.get_rect(center=self.rect.center)
- def update(self):
- self.rect.x += self.speedx
- self.rect.y -= self.speedy
- if self.rect.right > width:
- self.rect.right = 0
- if self.rect.top < 0:
- self.rect.top = 1500
- for i in range(9):
- mob4 = Mob4_DOWN()
- all_sprites.add(mob4)
- mobs.add(mob4)
- class Mob5_DOWN(pygame.sprite.Sprite): # 10000 hp
- def __init__(self):
- pygame.sprite.Sprite.__init__(self)
- self.image = pygame.Surface((16,16),pygame.SRCALPHA)
- self.image.fill(WHITE)
- self.rect = self.image.get_rect()
- self.rect.y = 1499
- self.rect.x = random.randrange(-34,height)
- self.speedx = random.randrange(4, 8)
- self.speedy = random.randrange(4, 8)
- self.image = pygame.image.load(imgdir + '/explosion/2.png')
- self.image = pygame.transform.scale(self.image, (50, 60))
- self.copy = self.image
- self.position = Vector2(self.rect.center)
- self.angle = 0
- self.direction = Vector2(1, 0)
- def rotate(self, rotate_speed):
- self.direction.rotate_ip(-rotate_speed)
- self.angle += rotate_speed
- self.image = pygame.transform.rotate(self.copy, self.angle)
- self.rect = self.image.get_rect(center=self.rect.center)
- def update(self):
- self.rect.x += self.speedx
- self.rect.y -= self.speedy
- if self.rect.right > width:
- self.rect.right = 0
- if self.rect.top < 0:
- self.rect.top = 1500
- for i in range(9):
- mob5 = Mob5_DOWN()
- all_sprites.add(mob5)
- mobs.add(mob5)
- key = Player()
- all_sprites.add(key)
- run = True
- while run:
- clock.tick(fps)
- all_sprites.update()
- hits = pygame.sprite.spritecollide(key,mobs,False)
- if hits:
- key.points += 10
- shoots = pygame.sprite.groupcollide(bullets,mobs,False,True)
- if shoots:
- key.points += 10
- key.bullet += 3
- screen.blit(bg, bg_rect) # Выводим задний фон
- all_sprites.draw(screen)
- for event in pygame.event.get():
- if event.type == pygame.QUIT:
- run = False
- if event.type == pygame.KEYDOWN:
- if event.key == pygame.K_SPACE and key.bullet > 0:
- bul = Bullet()
- all_sprites.add(bul)
- bullets.add(bul)
- key.bullet -= 1
- drawText(screen, str(key.points), 60, 2000, 1300, BLUE)
- drawText(screen, str(key.bullet), 40, 1000, -1300, BLUE)
- pygame.display.flip()
- pygame.quit()
Add Comment
Please, Sign In to add comment