Advertisement
cookertron

Gabo_Duke 2

Dec 15th, 2021
1,044
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.29 KB | None | 0 0
  1. import sys
  2. import pygame
  3. from pygame import *
  4.  
  5. height = 700
  6. width = 500
  7. pos_x = 100
  8. pos_y = 380
  9.  
  10. tela = pygame.display.set_mode((height, width))
  11. number_bullets = 3
  12.  
  13.  
  14. class Jogo(pygame.sprite.Sprite):
  15.  
  16.     def __init__(self):
  17.         pygame.sprite.Sprite.__init__(self)
  18.         music_fundo = pygame.mixer.music.load('music/music-battle.mp3')
  19.         pygame.mixer.music.set_volume(0.4)
  20.         pygame.mixer.music.play(-1)
  21.  
  22.         self.pos_x = 100
  23.         self.pos_y = 380
  24.         self.position = 1
  25.         self.direction = False
  26.  
  27.         self.Sprites = []
  28.         self.Sprites.append(pygame.image.load('img/john/john01.png'))
  29.         self.Sprites.append(pygame.image.load('img/john/john02.png'))
  30.         self.Sprites.append(pygame.image.load('img/john/john03.png'))
  31.         self.Sprites.append(pygame.image.load('img/john/john04.png'))
  32.         self.image_atual = 0
  33.         self.jump_init = 380
  34.         self.image = self.Sprites[self.image_atual]
  35.         self.rect = self.image.get_rect()
  36.         self.rect.topleft = self.pos_x, self.pos_y
  37.         self.image = pygame.transform.scale(self.image, (80, 80))
  38.         self.mover = False
  39.         self.jump = False
  40.  
  41.     def jumper(self):
  42.         self.jump = True
  43.  
  44.     def mover_frente(self):
  45.         self.mover = True
  46.         self.rect.x += 10
  47.         self.position = 1
  48.         self.direction = False
  49.         if self.rect.x >= 520:
  50.             self.rect.x = 520
  51.         if not key[pygame.K_RIGHT]:
  52.             self.mover = False
  53.  
  54.     def mover_traz(self):
  55.         self.mover = True
  56.         self.position = -1
  57.         self.direction = True
  58.         self.rect.x -= 10
  59.         if self.rect.x <= 10:
  60.             self.rect.x = 10
  61.  
  62.     def update(self):
  63.         # Jump
  64.         if self.jump == True:
  65.             self.rect.y -= 15
  66.             if self.rect.y <= 300:
  67.                 self.jump = False
  68.         else:
  69.             if self.rect.y < self.jump_init:
  70.                 self.rect.y += 10
  71.             else:
  72.                 self.rect.y = self.jump_init
  73.         # Animation
  74.         if self.mover == True:
  75.             self.image_atual = (self.image_atual + 0.5) % 4
  76.             self.image = self.Sprites[int(self.image_atual)]
  77.             self.image = pygame.transform.scale(self.image, (80, 80))
  78.         if not key[pygame.K_RIGHT]:
  79.             self.mover = False
  80.  
  81.     def draw(self):
  82.         if self.direction == True:
  83.             tela.blit(pygame.transform.flip(self.image, self.direction, False), self.rect)
  84.             self.kill()
  85.         if self.direction == False:
  86.             tela.blit(self.image, self.rect)
  87.             self.kill()
  88.  
  89.  
  90. class BackGround(pygame.sprite.Sprite):
  91.  
  92.     def __init__(self):
  93.         pygame.sprite.Sprite.__init__(self)
  94.         self.image = pygame.image.load('img/fundo01.png')
  95.         self.rect = self.image.get_rect()
  96.         self.rect.topleft = 0, 0
  97.  
  98.     def update(self):
  99.         # move map
  100.         if jogo.rect.x >= 520 and key[pygame.K_RIGHT]:
  101.             self.rect.x -= 10
  102.         if jogo.rect.x >= 10 and key[pygame.K_LEFT]:
  103.             self.rect.x += 10
  104.             # borda
  105.         if self.rect.x >= 0 and jogo.rect.x >= 10:
  106.             self.rect.x = 0
  107.  
  108.         if self.rect.x <= -1700 and jogo.rect.x >= 520:
  109.             self.rect.x = -1700
  110.  
  111.  
  112. class Bullet(pygame.sprite.Sprite):
  113.     def __init__(self):
  114.         pygame.sprite.Sprite.__init__(self)
  115.         self.position = 1
  116.         self.direction = -1 if jogo.direction else 1  # DIRECTION OF JOGO WHEN BULLET FIRED
  117.         self.number_bullets = 1
  118.         self.bullets = []
  119.         self.image = pygame.image.load('img/bullet.png')
  120.         self.rect = self.image.get_rect()
  121.         # bullet x: add to 53 to jogo position if jogo facing right (jogo.diredction = False) or add 0 to jogo position if jogo facing left
  122.         self.rect.topleft = jogo.rect.x if jogo.direction else jogo.rect.x + 53, jogo.rect.y + 32
  123.  
  124.     def update(self):
  125.         self.rect.x += self.direction * 15
  126.         # if bullet goes out of right or left side of screen
  127.         if self.rect.x >= 700 or self.rect.x < 0:
  128.             self.kill()
  129.  
  130. class Enemy(pygame.sprite.Sprite):
  131.     def __init__(self):
  132.         pygame.sprite.Sprite.__init__(self)
  133.         self.image = pygame.image.load('img/john/john01.png')
  134.         self.rect = self.image.get_rect()
  135.         self.rect.topleft = pos_x + 300 ,pos_y  - 10
  136.  
  137.         # transform before self.rect = self.image.get_rect()
  138.         self.image = pygame.transform.scale(self.image, (42*3,38*3 ))
  139.  
  140.     def update(self):
  141.         self.rect.x += -1
  142.         pygame.draw.rect(tela, (128, 0, 0), self.rect, 1)
  143.         for b in Bullet_Group:
  144.             pygame.draw.rect(tela, (128, 0, 0), b.rect, 1)
  145.             #print(self.rect.colliderect(b.rect))
  146.             if self.rect.colliderect(b.rect):
  147.                 self.kill()
  148.  
  149.  
  150. pygame.init()
  151.  
  152. Player_Groups = pygame.sprite.Group()
  153. jogo = Jogo()
  154. Player_Groups.add(jogo)
  155.  
  156. Bullet_Group = pygame.sprite.Group()
  157. bullet = Bullet()
  158. Bullet_Group.add(bullet)
  159.  
  160. Enemy_Group = pygame.sprite.Group()
  161. enemy = Enemy()
  162. Enemy_Group.add(enemy)
  163.  
  164.  
  165. Fundo_Group = pygame.sprite.Group()
  166. plano_fund = BackGround()
  167. Fundo_Group.add(plano_fund)
  168.  
  169. relogio = pygame.time.Clock()
  170.  
  171. while True:
  172.     relogio.tick(30)
  173.     relogio.get_time()
  174.     jump_sound = pygame.mixer.Sound('music/jump.flac')
  175.     tiro_sound = pygame.mixer.Sound('music/bullet.wav')
  176.     tela.fill((0, 0, 0))
  177.  
  178.     for event in pygame.event.get():
  179.         if event.type == "Exit":
  180.             pygame.quit()
  181.             sys.exit()
  182.  
  183.     key = pygame.key.get_pressed()
  184.     if key[pygame.K_UP]:
  185.  
  186.         if jogo.rect.y != jogo.jump_init:
  187.             pass
  188.         else:
  189.             jogo.jumper()
  190.             jump_sound.play()
  191.  
  192.     if key[pygame.K_RIGHT]:
  193.         jogo.mover_frente()
  194.  
  195.     if key[pygame.K_LEFT]:
  196.         jogo.mover_traz()
  197.  
  198.     if key[pygame.K_q]:
  199.         pygame.quit()
  200.  
  201.     if key[pygame.K_SPACE]:
  202.         if len(Bullet_Group) < bullet.number_bullets:
  203.             Bullet_Group.add(Bullet())
  204.             tiro_sound.play()
  205.  
  206.     Fundo_Group.draw(tela)
  207.     Fundo_Group.update()
  208.  
  209.     Player_Groups.draw(tela)
  210.     Player_Groups.update()
  211.  
  212.     Enemy_Group.draw(tela)
  213.     Enemy_Group.update()
  214.  
  215.     Bullet_Group.draw(tela)
  216.     Bullet_Group.update()
  217.  
  218.     jogo.draw()
  219.     jogo.update()
  220.  
  221.     pygame.display.update()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement