Orleon

Bogdan

Nov 22nd, 2020 (edited)
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 14.33 KB | None | 0 0
  1. import pygame
  2. import random
  3. from pygame.math import Vector2
  4. import os
  5.  
  6. width  = 1280
  7. height = 720
  8. fps = 60
  9. gameName = 'Creative brawl'
  10.  
  11. pygame.init()
  12. BLACK = (0, 0, 0)
  13. NAVI = (0, 0, 128)
  14. GREEN =  (0, 255, 0)
  15. BLUE = (0, 0, 255)
  16. Brightgreen = (102,255,0)
  17. WHITE = (255, 255, 255)
  18.  
  19. imgdir = os.getcwd() + '/venv/media-2/img'
  20. snddir = os.getcwd() + '/venv/media-2/snd'
  21.  
  22.  
  23. screen = pygame.display.set_mode((width, height,))
  24.  
  25. pygame.display.set_caption(gameName)
  26.  
  27. icon = pygame.image.load('ivon.png')
  28. pygame.display.set_icon(icon)
  29. clock = pygame.time.Clock()
  30. all_sprites = pygame.sprite.Group()
  31. mobs = pygame.sprite.Group()
  32. bullets = pygame.sprite.Group()
  33.  
  34.  
  35. def drawText(screen,text,size,x,y,color):
  36.     fontname = pygame.font.match_font('arial')
  37.     font = pygame.font.Font(fontname, size)
  38.     textsprite = font.render(text, True, color)
  39.     text_rect = textsprite.get_rect()
  40.     text_rect.center = (x, y)
  41.     screen.blit(textsprite, text_rect)
  42.  
  43. bg = pygame.image.load(imgdir + '/bg2.jpg')
  44. bg = pygame.transform.scale(bg,(width,height))
  45. bg_rect = bg.get_rect()
  46.  
  47.  
  48. class Bullet(pygame.sprite.Sprite):       #100 000 хп
  49.     def __init__(self):
  50.         pygame.sprite.Sprite.__init__(self)
  51.         self.image = pygame.image.load(imgdir + '/shell.png')
  52.         self.image = pygame.transform.scale(self.image, (4, 10))
  53.         self.image = pygame.transform.rotate(self.image, key.angle-90)
  54.         self.rect = self.image.get_rect()
  55.  
  56.         self.rect.center = Vector2(key.rect.center)
  57.         self.speed = 40
  58.         self.move = key.direction * self.speed
  59.  
  60.     def update(self):
  61.         self.rect.center += self.move
  62.  
  63. class Player(pygame.sprite.Sprite):       #100 000 хп
  64.     def __init__(self):
  65.         pygame.sprite.Sprite.__init__(self)
  66.         self.image = pygame.image.load(imgdir + '/player/2.png')
  67.         self.image = pygame.transform.scale(self.image, (100, 75))
  68.         self.rect = self.image.get_rect()
  69.         self.rect.center =  (width//2,height//2)
  70.         self.points = 0
  71.         self.speed = 6
  72.  
  73.         self.copy = self.image
  74.         self.position = Vector2(self.rect.center)
  75.         self.angle = 0
  76.         self.direction = Vector2(1, 0)
  77.  
  78.         self.bullet = 30
  79.  
  80.         self.anim_speed = 4
  81.         self.frame = 0
  82.         self.anim = []
  83.  
  84.         for i in range(1,21):
  85.             image = pygame.image.load(imgdir + f'/player/{i}.png')
  86.             image = pygame.transform.scale(image,(100,75))
  87.             self.anim.append(image)
  88.  
  89.  
  90.     def animation(self):
  91.         self.image = self.anim[self.frame // self.anim_speed]
  92.         self.image = pygame.transform.rotate(self.image, self.angle)
  93.         self.rect =self.image.get_rect(center = self.rect.center)
  94.  
  95.         self.frame += 1  # Меняем кадр анимации
  96.         if self.frame == self.anim_speed * len(self.anim):  # Проверяем достижение конца картинок
  97.             self.frame = 0  # Сбрасываем счетчик кадров
  98.  
  99.  
  100.     def rotate(self, rotate_speed):
  101.         self.direction.rotate_ip(-rotate_speed)
  102.         self.angle += rotate_speed
  103.         self.image = pygame.transform.rotate(self.copy, self.angle)
  104.         self.rect = self.image.get_rect(center = self.rect.center)
  105.         self.frame += 1
  106.         if self.frame == self.anim_speed * len(self.anim):
  107.            self.frame = 0
  108.  
  109.     def update (self):
  110.         self.animation()
  111.         key = pygame.key.get_pressed()
  112.         if key[pygame.K_d]:
  113.             self.rotate(-5)
  114.         if key[pygame.K_a]:
  115.             self.rotate(5)
  116.         if key[pygame.K_w]:
  117.             self.position += self.speed * self.direction
  118.         if key[pygame.K_s]:
  119.             self.position -= self.speed * self.direction
  120.         self.rect.center = self.position
  121.  
  122.  
  123.         if self.rect.right > width:
  124.            self.rect.right = -0
  125.         if self.rect.left < 0:
  126.            self.rect.left = 2500
  127.         if self.rect.top < 0:
  128.             self.rect.top = 1500
  129.         if self.rect.bottom > width:
  130.             self.rect.bottom = 2500
  131.  
  132.  
  133. class Mob_left(pygame.sprite.Sprite):                # 100 hp
  134.     def __init__(self):
  135.         pygame.sprite.Sprite.__init__(self)
  136.         self.image = pygame.Surface((16,16),pygame.SRCALPHA)
  137.        # self.image.fill(NAVI)
  138.         self.rect = self.image.get_rect()
  139.         self.image = pygame.image.load(imgdir + '/enemy1/4.png')
  140.         self.image = pygame.transform.scale(self.image, (60, 60))
  141.         self.rect.x = -12
  142.         self.rect.y = random.randrange(0,height)
  143.         self.speedx = random.randrange(+3,6)
  144.         self.speedy = random.randrange(-3, 6)
  145.  
  146.         self.copy = self.image
  147.         self.position = Vector2(self.rect.center)
  148.         self.angle = 0
  149.         self.direction = Vector2(0, -1)
  150.  
  151.         self.anim_speed = 4
  152.         self.frame = 0
  153.         self.anim = []
  154.         for i in range(1, 9):
  155.             image = pygame.image.load(imgdir + f'/enemy1/{i}.png')
  156.             image = pygame.transform.scale(image, (100, 75))
  157.             self.anim.append(image)
  158.  
  159.     def rotate(self, rotate_speed):
  160.         self.direction.rotate_ip(-rotate_speed)
  161.         self.angle += rotate_speed
  162.         self.image = pygame.transform.rotate(self.copy, self.angle)
  163.         self.rect = self.image.get_rect(center=self.rect.center)
  164.  
  165.     def animation(self):
  166.         self.image = self.anim[self.frame // self.anim_speed]
  167.         self.image = pygame.transform.rotate(self.image, self.angle)
  168.         self.rect = self.image.get_rect(center=self.rect.center)
  169.  
  170.         self.frame += 1  # Меняем кадр анимации
  171.         if self.frame == self.anim_speed * len(self.anim):  # Проверяем достижение конца картинок
  172.             self.frame = 0  # Сбрасываем счетчик кадров
  173.  
  174.     def update(self):
  175.         self.rect.x +=  random.randrange(+4,8)
  176.         self.rect.y -= random.randrange(-4,8)
  177.         if self.rect.right > width:
  178.            self.rect.right = 0
  179.         if self.rect.top < 0:
  180.             self.rect.top = 1500
  181.  
  182.  
  183.  
  184.  
  185. for i in range(9):
  186.     mob1 = Mob_left()
  187.     all_sprites.add(mob1)
  188.     mobs.add(mob1)
  189.  
  190.  
  191. class Mob1_right(pygame.sprite.Sprite):         # 100 hp
  192.     def __init__(self):
  193.         pygame.sprite.Sprite.__init__(self)
  194.         #self.image = pygame.Surface((16,16),pygame.SRCALPHA)
  195.         self.image = pygame.image.load(imgdir + '/powerups/money.png')
  196.         self.image = pygame.transform.scale(self.image, (60, 60))
  197.         self.rect = self.image.get_rect()
  198.         self.rect.y = random.randrange(700,1000)
  199.         self.rect.x = random.randrange(10,height)
  200.         self.speedx = random.randrange(+0, 1)
  201.         self.speedy = random.randrange(-0, 1)
  202.  
  203.  
  204.         self.copy = self.image
  205.         self.position = Vector2(self.rect.center)
  206.         self.angle = 0
  207.         self.direction = Vector2(1, 0)
  208.  
  209.  
  210.  
  211.  
  212.     def rotate(self, rotate_speed):
  213.             self.direction.rotate_ip(-rotate_speed)
  214.             self.angle += rotate_speed
  215.             self.image = pygame.transform.rotate(self.copy, self.angle)
  216.             self.rect = self.image.get_rect(center=self.rect.center)
  217.  
  218.     def update(self):
  219.         self.rotate(-5)
  220.         self.rect.x += self.speedx
  221.         self.rect.y -= self.speedy
  222.         if self.rect.right > width:
  223.            self.rect.right = 0
  224.         if self.rect.top < 0:
  225.             self.rect.top = 1500
  226. for i in range(9):
  227.     mob1 = Mob1_right()
  228.     all_sprites.add(mob1)
  229.     mobs.add(mob1)
  230.  
  231.  
  232. class Mob2_right(pygame.sprite.Sprite):         # 100 hp
  233.     def __init__(self):
  234.         pygame.sprite.Sprite.__init__(self)
  235.        #self.image = pygame.Surface((16,16),pygame.SRCALPHA)
  236.         self.image = pygame.image.load(imgdir + '/powerups/health.png')
  237.         self.image = pygame.transform.scale(self.image, (60, 60))
  238.         self.rect = self.image.get_rect()
  239.         self.rect.y = random.randrange(700,1000)
  240.         self.rect.x = random.randrange(10,height)
  241.         self.speedx = random.randrange(+0, 1)
  242.         self.speedy = random.randrange(-0, 1)
  243.  
  244.  
  245.         self.copy = self.image
  246.         self.position = Vector2(self.rect.center)
  247.         self.angle = 0
  248.         self.direction = Vector2(1, 0)
  249.  
  250.     def rotate(self, rotate_speed):
  251.             self.direction.rotate_ip(-rotate_speed)
  252.             self.angle += rotate_speed
  253.             self.image = pygame.transform.rotate(self.copy, self.angle)
  254.             self.rect = self.image.get_rect(center=self.rect.center)
  255.  
  256.     def update(self):
  257.         self.rotate(-5)
  258.         self.rect.x += self.speedx
  259.         self.rect.y -= self.speedy
  260.         if self.rect.right > width:
  261.            self.rect.right = 0
  262.         if self.rect.top < 0:
  263.             self.rect.top = 1500
  264. for i in range(9):
  265.     mob2 = Mob2_right()
  266.     all_sprites.add(mob2)
  267.     mobs.add(mob2)
  268.  
  269.  
  270.  
  271. class Mob3_UP(pygame.sprite.Sprite):                  # 100 hp
  272.     def __init__(self):
  273.         pygame.sprite.Sprite.__init__(self)
  274.        # self.image = pygame.Surface((50,16),pygame.SRCALPHA)
  275.         self.image = pygame.image.load(imgdir + '/enemy1/4.png')
  276.         self.image = pygame.transform.scale(self.image, (60, 60))
  277.         self.rect = self.image.get_rect()
  278.         self.rect.y = 345
  279.         self.rect.x = random.randrange(10,height)
  280.         self.speedx = random.randrange(4, 8)
  281.         self.speedy = random.randrange(4, 8)
  282.  
  283.         self.anim_speed = 4
  284.         self.frame = 0
  285.         self.anim = []
  286.         for i in range(1,9):
  287.             image = pygame.image.load(imgdir + f'/enemy1/{i}.png')
  288.             image = pygame.transform.scale(image,(100,75))
  289.             self.anim.append(image)
  290.  
  291.  
  292.     def animation(self):
  293.         self.image = self.anim[self.frame // self.anim_speed]
  294.         self.image = pygame.transform.rotate(self.image, self.angle)
  295.         self.rect =self.image.get_rect(center = self.rect.center)
  296.  
  297.         self.frame += 1  # Меняем кадр анимации
  298.         if self.frame == self.anim_speed * len(self.anim):  # Проверяем достижение конца картинок
  299.             self.frame = 0  # Сбрасываем счетчик кадров
  300.  
  301.  
  302.  
  303.     def update(self):
  304.         self.rect.y += self.speedx
  305.         self.rect.x -= self.speedy
  306.         if self.rect.right > width:
  307.            self.rect.right = 0
  308.         if self.rect.top < 0:
  309.             self.rect.top = 1500
  310. for i in range(9):
  311.     mob3 = Mob3_UP()
  312.     all_sprites.add(mob3)
  313.     mobs.add(mob3)
  314.  
  315. class Mob4_DOWN(pygame.sprite.Sprite):           # 1000 hp
  316.     def __init__(self):
  317.         pygame.sprite.Sprite.__init__(self)
  318.         self.image = pygame.Surface((16,16),pygame.SRCALPHA)
  319.         self.image.fill(NAVI)
  320.         self.rect = self.image.get_rect()
  321.         self.rect.y = -300
  322.         self.rect.x = random.randrange(0,height)
  323.         self.speedx = random.randrange(4, 8)
  324.         self.speedy = random.randrange(4, 8)
  325.         self.image = pygame.image.load(imgdir + '/enemy1/4.png')
  326.         self.image = pygame.transform.scale(self.image, (60, 60))
  327.  
  328.         self.copy = self.image
  329.         self.position = Vector2(self.rect.center)
  330.         self.angle = 0
  331.         self.direction = Vector2(1, 0)
  332.  
  333.  
  334.     def animation(self):
  335.         self.image = self.anim[self.frame // self.anim_speed]
  336.         self.image = pygame.transform.rotate(self.image, self.angle)
  337.         self.rect = self.image.get_rect(center=self.rect.center)
  338.  
  339.         self.frame += 1  # Меняем кадр анимации
  340.         if self.frame == self.anim_speed * len(self.anim):  # Проверяем достижение конца картинок
  341.             self.frame = 0  # Сбрасываем счетчик кадров
  342.  
  343.     def rotate(self, rotate_speed):
  344.         self.direction.rotate_ip(-rotate_speed)
  345.         self.angle += rotate_speed
  346.         self.image = pygame.transform.rotate(self.copy, self.angle)
  347.         self.rect = self.image.get_rect(center=self.rect.center)
  348.  
  349.  
  350.     def update(self):
  351.         self.rect.x += self.speedx
  352.         self.rect.y -= self.speedy
  353.         if self.rect.right > width:
  354.            self.rect.right = 0
  355.         if self.rect.top < 0:
  356.             self.rect.top = 1500
  357. for i in range(9):
  358.     mob4 = Mob4_DOWN()
  359.     all_sprites.add(mob4)
  360.     mobs.add(mob4)
  361.  
  362.  
  363.  
  364. class Mob5_DOWN(pygame.sprite.Sprite):      # 10000 hp
  365.     def __init__(self):
  366.         pygame.sprite.Sprite.__init__(self)
  367.         self.image = pygame.Surface((16,16),pygame.SRCALPHA)
  368.         self.image.fill(WHITE)
  369.         self.rect = self.image.get_rect()
  370.         self.rect.y = 1499
  371.         self.rect.x = random.randrange(-34,height)
  372.         self.speedx = random.randrange(4, 8)
  373.         self.speedy = random.randrange(4, 8)
  374.         self.image = pygame.image.load(imgdir + '/explosion/2.png')
  375.         self.image = pygame.transform.scale(self.image, (50, 60))
  376.  
  377.         self.copy = self.image
  378.         self.position = Vector2(self.rect.center)
  379.         self.angle = 0
  380.         self.direction = Vector2(1, 0)
  381.  
  382.     def rotate(self, rotate_speed):
  383.         self.direction.rotate_ip(-rotate_speed)
  384.         self.angle += rotate_speed
  385.         self.image = pygame.transform.rotate(self.copy, self.angle)
  386.         self.rect = self.image.get_rect(center=self.rect.center)
  387.  
  388.  
  389.  
  390.  
  391.     def update(self):
  392.         self.rect.x += self.speedx
  393.         self.rect.y -= self.speedy
  394.         if self.rect.right > width:
  395.            self.rect.right = 0
  396.         if self.rect.top < 0:
  397.             self.rect.top = 1500
  398. for i in range(9):
  399.     mob5 = Mob5_DOWN()
  400.     all_sprites.add(mob5)
  401.     mobs.add(mob5)
  402.  
  403.  
  404. key = Player()
  405. all_sprites.add(key)
  406.  
  407. run = True
  408. while run:
  409.     clock.tick(fps)
  410.     all_sprites.update()
  411.     hits = pygame.sprite.spritecollide(key,mobs,False)
  412.     if hits:
  413.         key.points += 10
  414.  
  415.  
  416.     shoots = pygame.sprite.groupcollide(bullets,mobs,False,True)
  417.     if shoots:
  418.         key.points += 10
  419.         key.bullet += 3
  420.  
  421.     screen.blit(bg, bg_rect)  # Выводим задний фон
  422.     all_sprites.draw(screen)
  423.  
  424.     for event in pygame.event.get():
  425.         if event.type == pygame.QUIT:
  426.            run = False
  427.         if event.type == pygame.KEYDOWN:
  428.           if event.key == pygame.K_SPACE and key.bullet > 0:
  429.                 bul = Bullet()
  430.                 all_sprites.add(bul)
  431.                 bullets.add(bul)
  432.                 key.bullet -= 1
  433.  
  434.  
  435.     drawText(screen, str(key.points), 60, 2000, 1300, BLUE)
  436.     drawText(screen, str(key.bullet), 40, 1000, -1300, BLUE)
  437.     pygame.display.flip()
  438. pygame.quit()
Add Comment
Please, Sign In to add comment