Advertisement
overactive

Untitled

Sep 5th, 2018
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.38 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(player.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):
  68.         self.rec.y += self.speed
  69.         if self.rec.bottom > HEIGHT - BAR:
  70.             self.randomize()
  71.  
  72.     def show(self):
  73.         pygame.draw.rect(canvas, ENEMY_COLOR, self.rec, 0)
  74.  
  75. class Player():
  76.     def __init__(self):
  77.         self.rec = pygame.Rect(0, HEIGHT - (BAR + PLAYER_SIZE), PLAYER_SIZE, PLAYER_SIZE)
  78.         self.rec.centerx = WIDTH/2
  79.         self.speed = PLAYER_SPEED
  80.         self.horizontalDir = 0
  81.         self.verticalDir = 0
  82.         self.life = MAX_LIFE
  83.    
  84.     def move(self):
  85.         self.rec.x += self.speed * self.horizontalDir
  86.         self.rec.y += self.speed * self.verticalDir
  87.        
  88.         if self.rec.left <= 0:
  89.             self.rec.left = 0
  90.         elif self.rec.right >= WIDTH:
  91.             self.rec.right = WIDTH
  92.        
  93.         if self.rec.top <= HEIGHT - MAX_PLAYER_UP_POS:
  94.             self.rec.top = HEIGHT - MAX_PLAYER_UP_POS
  95.         elif self.rec.bottom >= HEIGHT - BAR:
  96.             self.rec.bottom = HEIGHT - BAR
  97.    
  98.     def update(self, enemy):
  99.         if self.rec.colliderect(enemy.rec):
  100.             self.life -= 1
  101.  
  102.     def show(self):
  103.         pygame.draw.rect(canvas, PLAYER_COLOR, self.rec, 0)
  104.  
  105. for i in range(DIFFICULTY_LEVEL):
  106.      enemies.append(Enemy())
  107.  
  108. player = Player()
  109. score = 0
  110. start = time.time()
  111.  
  112. def theGame():
  113.     global score
  114.     global start
  115.  
  116.     player.horizontalDir = 0
  117.     player.verticalDir = 0
  118.     keys = pygame.key.get_pressed()
  119.     if keys[pygame.K_LEFT]:
  120.         player.horizontalDir = -1
  121.     elif keys[pygame.K_RIGHT]:
  122.         player.horizontalDir = 1
  123.     if keys[pygame.K_UP]:
  124.         player.verticalDir = -1
  125.     elif keys[pygame.K_DOWN]:
  126.         player.verticalDir = 1
  127.  
  128.     for event in pygame.event.get():
  129.         if event.type == pygame.QUIT:
  130.             quitGame()
  131.    
  132.     canvas.blit(background, (0,0))
  133.     drawBorder(HEIGHT - BAR)
  134.     drawScore()
  135.  
  136.     current = time.time()
  137.     score = int(current - start)
  138.    
  139.     for enemy in enemies:
  140.         enemy.update()
  141.         enemy.show()
  142.         player.update(enemy)
  143.    
  144.     player.move()
  145.     player.show()
  146.    
  147.     while player.life <= 0:
  148.         canvas.fill((0,0,0,))
  149.  
  150.         line1 = 'The End'
  151.         line2 = 'Your score: ' + str(score)
  152.         line3 = 'press P to play again'
  153.         line4 = 'press Q to quit'
  154.  
  155.         textSet1 = font.render(line1, True, (PINK))
  156.         textSet2 = font.render(line2, True, (PINK))
  157.         textSet3 = font.render(line3, True, (PINK))
  158.         textSet4 = font.render(line4, True, (PINK))
  159.  
  160.         canvas.blit(textSet1,(20,20))
  161.         canvas.blit(textSet2,(20,80))
  162.         canvas.blit(textSet3,(20,140))
  163.         canvas.blit(textSet4,(20,200))
  164.         pygame.display.flip()
  165.        
  166.         for event in pygame.event.get():
  167.             if event.type == pygame.QUIT:
  168.                 quitGame()
  169.             if event.type == pygame.KEYDOWN:
  170.                 if event.key == pygame.K_p:
  171.                     player.life = MAX_LIFE
  172.                     score = 0
  173.                     start = time.time()
  174.                     player.rec.centerx = WIDTH/2
  175.                     player.rec.bottom = HEIGHT - BAR
  176.                     enemies.clear()
  177.                     for i in range(DIFFICULTY_LEVEL):
  178.                         enemies.append(Enemy())
  179.                     return
  180.                 elif event.key == pygame.K_q:
  181.                     quitGame()
  182.  
  183.     pygame.display.flip()  
  184.     clock.tick(60)
  185.  
  186. while True:
  187.     theGame()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement