overactive

Untitled

Sep 5th, 2018
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.40 KB | None | 0 0
  1. import pygame
  2. import time
  3. import sys
  4. import random
  5.  
  6. WIDTH, HEIGHT = 600, 700
  7. WHITE = (255, 255, 255)
  8. BLUE = (0,100,200)
  9. PINK = (255, 0, 120)
  10. BAR = 60
  11.  
  12. ### SETTINGS  ###
  13. MIN_ENEMY_SPEED = 4
  14. MAX_ENEMY_SPEED = 6
  15. PLAYER_SPEED = 3
  16. MIN_BALL_WIDTH = 20
  17. MAX_BALL_WIDTH = 30
  18. ENEMY_COLOR = WHITE
  19. PLAYER_COLOR = PINK
  20. DIFFICULTY_LEVEL = 15
  21. MAX_LIFE = 10
  22. PLAYER_SIZE = 30
  23. MAX_PLAYER_UP_POS = 200
  24. ### SETTINGS  ###
  25.  
  26. enemies = []
  27. pygame.init()
  28. canvas = pygame.display.set_mode((WIDTH,HEIGHT))
  29. background  = pygame.Surface((WIDTH,HEIGHT))
  30. font = pygame.font.SysFont("Calibri", 30)
  31. pygame.display.set_caption('Dodger')
  32. clock = pygame.time.Clock()
  33.  
  34. def drawBorder(y):
  35.     pygame.draw.line(canvas, WHITE, (0, y), (WIDTH, y), 2)
  36.  
  37. def quitGame():
  38.     pygame.quit()
  39.     sys.exit(0)
  40.  
  41. def drawScore():
  42.     global score
  43.  
  44.     life_text = font.render("{} / {} ".format(hp.life, MAX_LIFE), 1, WHITE)
  45.     rect_life = life_text.get_rect()
  46.     rect_life.x = BAR/2
  47.     rect_life.centery = HEIGHT - BAR/2
  48.     canvas.blit(life_text, (rect_life.x, rect_life.y))
  49.  
  50.     score_text = font.render("{}".format(score), 1, WHITE)
  51.     rect_score = score_text.get_rect()
  52.     rect_score.right = WIDTH - BAR/2
  53.     rect_score.centery = HEIGHT - BAR/2
  54.     canvas.blit(score_text, (rect_score.x, rect_score.y))
  55.  
  56. class Enemy():
  57.     def __init__(self):
  58.         self.randomize()
  59.  
  60.     def randomize(self):
  61.         x = random.randint(0, WIDTH - 50)
  62.         y = random.randint(-700, -10)
  63.         w = random.randint(MIN_BALL_WIDTH, MAX_BALL_WIDTH)
  64.         self.speed = random.randint(MIN_ENEMY_SPEED, MAX_ENEMY_SPEED)
  65.         self.rec = pygame.Rect(x, y, w, w)
  66.        
  67.     def update(self, player):
  68.         self.rec.y += self.speed
  69.        
  70.         if self.rec.bottom > HEIGHT - BAR:
  71.             self.randomize()
  72.  
  73.         if self.rec.colliderect(player.rec):
  74.             hp.life -=1
  75.  
  76.     def show(self):
  77.         pygame.draw.rect(canvas, ENEMY_COLOR, self.rec, 0)
  78.  
  79. class Player():
  80.     def __init__(self):
  81.         self.rec = pygame.Rect(0, HEIGHT - (BAR + PLAYER_SIZE), PLAYER_SIZE, PLAYER_SIZE)
  82.         self.rec.centerx = WIDTH/2
  83.         self.speed = PLAYER_SPEED
  84.         self.horizontalDir = 0
  85.         self.verticalDir = 0
  86.    
  87.     def update(self):
  88.         self.rec.x += self.speed * self.horizontalDir
  89.         self.rec.y += self.speed * self.verticalDir
  90.        
  91.         if self.rec.left <= 0:
  92.             self.rec.left = 0
  93.         elif self.rec.right >= WIDTH:
  94.             self.rec.right = WIDTH
  95.        
  96.         if self.rec.top <= HEIGHT - MAX_PLAYER_UP_POS:
  97.             self.rec.top = HEIGHT - MAX_PLAYER_UP_POS
  98.         elif self.rec.bottom >= HEIGHT - BAR:
  99.             self.rec.bottom = HEIGHT - BAR
  100.  
  101.     def show(self):
  102.         pygame.draw.rect(canvas, PLAYER_COLOR, self.rec, 0)
  103.  
  104. class Life():
  105.     def __init__(self):
  106.         self.life = MAX_LIFE
  107.  
  108. for i in range(DIFFICULTY_LEVEL):
  109.      enemies.append(Enemy())
  110.  
  111. player = Player()
  112. hp = Life()
  113. score = 0
  114. start = time.time()
  115.  
  116. def theGame():
  117.     global score
  118.     global start
  119.    
  120.     player.horizontalDir = 0
  121.     player.verticalDir = 0
  122.     keys = pygame.key.get_pressed()
  123.     if keys[pygame.K_LEFT]:
  124.         player.horizontalDir = -1
  125.     elif keys[pygame.K_RIGHT]:
  126.         player.horizontalDir = 1
  127.     if keys[pygame.K_UP]:
  128.         player.verticalDir = -1
  129.     elif keys[pygame.K_DOWN]:
  130.         player.verticalDir = 1
  131.  
  132.     for event in pygame.event.get():
  133.         if event.type == pygame.QUIT:
  134.             quitGame()
  135.    
  136.     canvas.blit(background, (0,0))
  137.     drawBorder(HEIGHT - BAR)
  138.    
  139.     current = time.time()
  140.     score = int(current - start)
  141.     drawScore()
  142.  
  143.     for enemy in enemies:
  144.         enemy.update(player)
  145.         enemy.show()
  146.    
  147.     player.update()
  148.     player.show()
  149.  
  150.     while hp.life <= 0:
  151.         canvas.fill((0,0,0,))
  152.  
  153.         line1 = 'The End'
  154.         line2 = 'Your score: ' + str(score)
  155.         line3 = 'press P to play again'
  156.         line4 = 'press Q to quit'
  157.  
  158.         textSet1 = font.render(line1, True, (PINK))
  159.         textSet2 = font.render(line2, True, (PINK))
  160.         textSet3 = font.render(line3, True, (PINK))
  161.         textSet4 = font.render(line4, True, (PINK))
  162.  
  163.         canvas.blit(textSet1,(20,20))
  164.         canvas.blit(textSet2,(20,80))
  165.         canvas.blit(textSet3,(20,140))
  166.         canvas.blit(textSet4,(20,200))
  167.         pygame.display.flip()
  168.        
  169.         for event in pygame.event.get():
  170.             if event.type == pygame.QUIT:
  171.                 quitGame()
  172.             if event.type == pygame.KEYDOWN:
  173.                 if event.key == pygame.K_p:
  174.                     hp.life = MAX_LIFE
  175.                     score = 0
  176.                     start = time.time()
  177.                     player.rec.centerx = WIDTH/2
  178.                     player.rec.bottom = HEIGHT - BAR
  179.                     enemies.clear()
  180.                     for i in range(DIFFICULTY_LEVEL):
  181.                         enemies.append(Enemy())
  182.                     return
  183.                 elif event.key == pygame.K_q:
  184.                     quitGame()
  185.  
  186.     pygame.display.flip()  
  187.     clock.tick(60)
  188.  
  189. while True:
  190.     theGame()
Advertisement
Add Comment
Please, Sign In to add comment