Advertisement
Orleon

Kira

Nov 29th, 2020
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 10.88 KB | None | 0 0
  1. import pygame
  2. import random
  3. from pygame.math import Vector2
  4.  
  5. width = 1280
  6. height = 720
  7. fps = 60
  8. gameName = "shooter"
  9.  
  10. pygame.init()
  11.  
  12. purple = (249, 132, 229)
  13. pink = (219, 112 ,147)
  14. black = (0, 0, 0)
  15. grey = (59, 68, 75)
  16. red = (227, 38, 54)
  17.  
  18. imgdir = "./media/img"
  19. snddir = "./media/snd"
  20.  
  21. screen = pygame.display.set_mode((width, height))
  22.  
  23. pygame.display.set_caption(gameName)
  24.  
  25. icon = pygame.image.load("hotpng.com.png")
  26. pygame.display.set_icon(icon)
  27.  
  28. clock = pygame.time.Clock()
  29.  
  30. all_sprites = pygame.sprite.Group()
  31. mobs = pygame.sprite.Group()
  32.  
  33. bullets = pygame.sprite.Group()
  34.  
  35. bg = pygame.image.load(imgdir + "/bg1.jpg")
  36. bg = pygame.transform.scale(bg , (width, height))
  37. bg_rect = bg.get_rect()
  38.  
  39. class Bullet(pygame.sprite.Sprite):
  40.     def __init__(self):
  41.         pygame.sprite.Sprite.__init__(self)
  42.         self.image = pygame.image.load(imgdir + "/shell.png")
  43.         self.image = pygame.transform.scale(self.image, (4, 10))
  44.         self.image = pygame.transform.rotate(self.image, player.angle - 90)
  45.         self.rect = self.image.get_rect()
  46.  
  47.         self.rect.center = Vector2(player.rect.center)
  48.         self.speed = 30
  49.         self.move = player.direction * self.speed
  50.  
  51.     def update(self):
  52.         self.rect.center += self.move
  53.  
  54.  
  55. def drawText(screen, text, size, x, y, color,):
  56.     fontname = "./COMIC.TTF"
  57.     font = pygame.font.Font(fontname, size)
  58.     textsprite = font.render(text,True, color)
  59.     text_rect = textsprite.get_rect()
  60.     text_rect.center = (x, y)  # Переносим рамку в нужную точку
  61.     screen.blit(textsprite, text_rect)
  62.  
  63.  
  64. class Player(pygame.sprite.Sprite):
  65.     def __init__(self):
  66.         pygame.sprite.Sprite.__init__(self)
  67.  
  68.         self.image = pygame.image.load(imgdir + "/player/1.png")
  69.         self.image = pygame.transform.scale(self.image, (100, 75))
  70.  
  71.         self.rect = self.image.get_rect()
  72.         self.rect.center = (width/2, height/2)
  73.         self.points = 0
  74.         self.speed = 5
  75.  
  76.         self.copy = self.image
  77.         self.position = Vector2(self.rect.center)
  78.         self.angle = 0
  79.         self.direction = Vector2(1, 0)
  80.  
  81.         self.ammo = 30
  82.         self.anim_speed = 4
  83.         self.frame = 0
  84.         self.anim = []
  85.  
  86.         for i in range(1, 21):
  87.             image = pygame.image.load(imgdir + f"/player/{i}.png")
  88.             image = pygame.transform.scale(image, (100, 75))
  89.             self.anim.append(image)
  90.  
  91.     def animation(self):
  92.         self.image = self.anim[self.frame // self.anim_speed]
  93.         self.image = pygame.transform.rotate(self.image, self.angle)
  94.         self.rect = self.image.get_rect(center = self.rect.center)
  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.  
  106.  
  107.     def update(self):
  108.         self.animation()
  109.         key = pygame.key.get_pressed()
  110.         if key[pygame.K_RIGHT]:
  111.             self.rotate(-5)
  112.         if key[pygame.K_LEFT]:
  113.             self.rotate(5)
  114.         if key[pygame.K_UP]:
  115.             self.position += self.speed * self.direction
  116.         if key[pygame.K_DOWN]:
  117.             self.position -= self.speed * self.direction
  118.         self.rect.center = self.position
  119.  
  120.  
  121.         if self.rect.right > width:
  122.             self.rect.right = width
  123.         if self.rect.left < 0:
  124.             self.rect.left = 0
  125.         if self.rect.top < 0:
  126.             self.rect.top = 0
  127.         if self.rect.bottom > height:
  128.             self.rect.bottom = height
  129.  
  130.  
  131.  
  132.  
  133. class Mob_left(pygame.sprite.Sprite):
  134.     def __init__(self):
  135.         pygame.sprite.Sprite.__init__(self)
  136.         #self.image = pygame.Surface((30, 30), pygame.SRCALPHA)
  137.         #self.image.fill(black)
  138.  
  139.         self.image = pygame.image.load(imgdir + "/enemy1/1.png")
  140.         self.image = pygame.transform.scale(self.image, (45, 45))
  141.  
  142.         self.rect = self.image.get_rect()
  143.         self.rect.x = 0
  144.         self.rect.y = random.randrange(0, height)
  145.         self.speedx = random.randrange(1, 8)
  146.         self.speedy = random.randrange(-8, 8)
  147.  
  148.         self.copy = self.image
  149.         self.position = Vector2(self.rect.center)
  150.         self.angle = 0
  151.         self.direction = Vector2(0, -1)
  152.  
  153.         self.anim_speed = 7
  154.         self.frame = 0
  155.         self.anim = []
  156.  
  157.         for i in range(1, 9):
  158.             image = pygame.image.load(imgdir + f"/enemy1/{i}.png")
  159.             image = pygame.transform.scale(image, (45, 45))
  160.             self.anim.append(image)
  161.  
  162.     def update(self):
  163.         self.animation()
  164.         self.rotate(-5)
  165.         self.rect.x += self.speedx
  166.         self.rect.y += self.speedy
  167.  
  168.         if self.rect.right > width or self.rect.y < 0 or self.rect.y > height:
  169.             self.rect.x = 0
  170.             self.rect.y = random.randrange(0, height)
  171.             self.speedx = random.randrange(1, 8)
  172.             self.speedy = random.randrange(-8, 8)
  173.  
  174.  
  175.  
  176.     def animation(self):
  177.         self.image = self.anim[self.frame // self.anim_speed]
  178.         self.image = pygame.transform.rotate(self.image, self.angle)
  179.         self.rect = self.image.get_rect(center = self.rect.center)
  180.         self.frame += 1
  181.         if self.frame == self.anim_speed * len(self.anim):
  182.             self.frame = 0
  183.  
  184.  
  185.  
  186.     def rotate(self, rotate_speed):
  187.         self.direction.rotate_ip(-rotate_speed)
  188.         self.angle += rotate_speed
  189.         self.image = pygame.transform.rotate(self.copy, self.angle)
  190.         self.rect = self.image.get_rect(center = self.rect.center)
  191.  
  192.  
  193.  
  194.  
  195. class Mob_right(pygame.sprite.Sprite):
  196.     def __init__(self):
  197.         pygame.sprite.Sprite.__init__(self)
  198.         #self.image = pygame.Surface((30, 30))
  199.         #self.image.fill(black)
  200.  
  201.         self.image = pygame.image.load(imgdir + "/enemy2/1.png")
  202.         self.image = pygame.transform.scale(self.image, (45, 45))
  203.  
  204.         self.rect = self.image.get_rect()
  205.         self.rect.x = width
  206.         self.rect.y = random.randrange(0, height)
  207.         self.speedx = random.randrange(1, 5)
  208.         self.speedy = random.randrange(-5, 5)
  209.  
  210.     def update(self):
  211.         self.rect.x += self.speedx
  212.         self.rect.y += self.speedy
  213.  
  214.         if self.rect.left < width or self.rect.y < 0 or self.rect.y > height:
  215.             self.rect.x = width
  216.             self.rect.y = random.randrange(0, height)
  217.             self.speedx = random.randrange(1, 5)
  218.             self.speedy = random.randrange(-5, 5)
  219.             self.anim_speed = 7
  220.             self.frame = 0
  221.             self.anim = []
  222.  
  223.             for i in range(1, 9):
  224.                 image = pygame.image.load(imgdir + f"/enemy2/{i}.png")
  225.                 image = pygame.transform.scale(image, (45, 45))
  226.                 self.anim.append(image)
  227.  
  228.     def animation(self):
  229.         self.image = self.anim[self.frame // self.anim_speed]
  230.         self.image = pygame.transform.rotate(self.image, self.angle)
  231.         self.rect = self.image.get_rect(center=self.rect.center)
  232.         self.frame += 1
  233.         if self.frame == self.anim_speed * len(self.anim):
  234.             self.frame = 0
  235.  
  236.  
  237.  
  238. class Mob_up(pygame.sprite.Sprite):
  239.     def __init__(self):
  240.         pygame.sprite.Sprite.__init__(self)
  241.         #self.image = pygame.Surface((30, 30))
  242.         #self.image.fill(black)
  243.  
  244.         self.image = pygame.image.load(imgdir + "/enemy3/1.png")
  245.         self.image = pygame.transform.scale(self.image, (45, 45))
  246.  
  247.         self.rect = self.image.get_rect()
  248.         self.rect.x = random.randrange(0, width)
  249.         self.rect.y = 0
  250.         self.speedx = random.randrange(-8, 8)
  251.         self.speedy = random.randrange(1, 8)
  252.  
  253.     def update(self):
  254.         self.rect.x += self.speedx
  255.         self.rect.y += self.speedy
  256.  
  257.         if self.rect.y > height or self.rect.right > width or self.rect.x < 0:
  258.             self.rect.x = random.randrange(0, width)
  259.             self.rect.y = 0
  260.             self.speedx = random.randrange(-8, 8)
  261.             self.speedy = random.randrange(1, 8)
  262.  
  263.             self.anim_speed = 7
  264.             self.frame = 0
  265.             self.anim = []
  266.  
  267.             for i in range(1, 9):
  268.                 image = pygame.image.load(imgdir + f"/enemy2/{i}.png")
  269.                 image = pygame.transform.scale(image, (45, 45))
  270.                 self.anim.append(image)
  271.  
  272.     def animation(self):
  273.         self.image = self.anim[self.frame // self.anim_speed]
  274.         self.image = pygame.transform.rotate(self.image, self.angle)
  275.         self.rect = self.image.get_rect(center=self.rect.center)
  276.         self.frame += 1
  277.         if self.frame == self.anim_speed * len(self.anim):
  278.             self.frame = 0
  279.  
  280. class Mob_down(pygame.sprite.Sprite):
  281.     def __init__(self):
  282.         pygame.sprite.Sprite.__init__(self)
  283.         #self.image = pygame.Surface((30, 30))
  284.         #self.image.fill(black)
  285.  
  286.         self.image = pygame.image.load(imgdir + "/enemy5/grenade.png")
  287.         self.image = pygame.transform.scale(self.image, (45, 45))
  288.  
  289.         self.rect = self.image.get_rect()
  290.         self.rect.x = random.randrange(0, width)
  291.         self.rect.y = height
  292.         self.speedx = random.randrange(0, 5)
  293.         self.speedy = random.randrange(-5, 5)
  294.  
  295.     def update(self):
  296.         self.rect.x += self.speedx
  297.         self.rect.y += self.speedy
  298.  
  299.  
  300.         if self.rect.y < 0 or self.rect.right > width or self.rect.x < 0:
  301.             self.rect.x = random.randrange(0, width)
  302.             self.rect.y = height
  303.             self.speedx = random.randrange(0, 5)
  304.             self.speedy = random.randrange(-5, 5)
  305.  
  306.  
  307.  
  308.  
  309. player = Player()
  310. all_sprites.add(player)
  311.  
  312.  
  313. for i in range(6):
  314.     mob1 = Mob_left()
  315.     all_sprites.add(mob1)
  316.     mobs.add(mob1)
  317.  
  318.  
  319. for i in range(6):
  320.     mob2 = Mob_right()
  321.     all_sprites.add(mob2)
  322.     mobs.add(mob2)
  323.  
  324. for i in range(6):
  325.     mob3 = Mob_up()
  326.     all_sprites.add(mob3)
  327.     mobs.add(mob3)
  328.  
  329. for i in range(6):
  330.     mob4 = Mob_down()
  331.     all_sprites.add(mob4)
  332.     mobs.add(mob4)
  333.  
  334. run = True
  335. while run:
  336.     clock.tick(fps)
  337.     all_sprites.update()
  338.     hits = pygame.sprite.spritecollide(player, mobs, False)
  339.  
  340.  
  341.  
  342.     shoots = pygame.sprite.groupcollide(bullets, mobs, True, True)
  343.     if shoots:
  344.         player.points += 10
  345.         player.ammo += 3
  346.  
  347.  
  348.  
  349.     screen.blit(bg,bg_rect)
  350.  
  351.  
  352.     all_sprites.draw(screen)
  353.  
  354.  
  355.     for event in pygame.event.get():
  356.         if event.type ==pygame.QUIT:
  357.             run = False
  358.         if event.type ==pygame.KEYDOWN:
  359.             if event == pygame.K_SPACE and player.ammo > 0:
  360.                 bul = Bullet()
  361.                 all_sprites.add(bul)
  362.                 bullets.add(bul)
  363.                 player.ammo -= 1
  364.  
  365.     drawText(screen, str(player.points), 30, 50, 20, red)
  366.     drawText(screen, str(player.ammo), 30, 50, height-50, purple)
  367.     pygame.display.flip()
  368.  
  369. pygame.quit()
  370.  
  371.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement