coding_giants

lesson 13 project

Mar 17th, 2023 (edited)
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import pygame
  2.  
  3. from paddle import Paddle
  4. from ball import Ball
  5. from brick import Brick
  6.  
  7. # height and width of the screen
  8. SCREEN_WIDTH = 1024
  9. SCREEN_HEIGHT = 800
  10. level = 0
  11. lives = 3
  12.  
  13. # pygame settings
  14. pygame.init()
  15. pygame.font.init()
  16.  
  17. # font, display, clock and background objects
  18. font = pygame.font.SysFont('Comic Sans MS', 24)
  19. display = pygame.display.set_mode([SCREEN_WIDTH, SCREEN_HEIGHT])
  20. clock = pygame.time.Clock()
  21. background_image = pygame.image.load('images/background.png')
  22.  
  23. # game levels
  24. level1 = [
  25. [0, 0, 1, 1, 1, 1, 1, 1, 0, 0],
  26. [0, 1, 1, 1, 1, 1, 1, 1, 1, 0],
  27. [0, 1, 1, 1, 1, 1, 1, 1, 1, 0],
  28. [0, 0, 1, 1, 1, 1, 1, 1, 0, 0],
  29. [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  30. [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  31. [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
  32. ]
  33. level2 = [
  34. [0, 0, 1, 2, 3, 3, 2, 1, 0, 0],
  35. [0, 1, 1, 1, 2, 2, 1, 1, 1, 0],
  36. [0, 1, 1, 1, 1, 1, 1, 1, 1, 0],
  37. [0, 0, 1, 1, 1, 1, 1, 1, 0, 0],
  38. [0, 0, 2, 0, 0, 0, 0, 2, 0, 0],
  39. [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  40. [0, 2, 0, 2, 0, 0, 2, 0, 2, 0]
  41. ]
  42. level3 = [
  43. [2, 3, 2, 2, 2, 2, 2, 2, 3, 2],
  44. [2, 1, 3, 1, 1, 1, 1, 3, 1, 2],
  45. [2, 3, 1, 3, 1, 1, 3, 1, 3, 2],
  46. [3, 2, 2, 2, 3, 3, 2, 2, 2, 3],
  47. [0, 0, 2, 2, 3, 3, 2, 2, 0, 0],
  48. [0, 0, 2, 0, 3, 3, 0, 2, 0, 0],
  49. [0, 0, 3, 0, 3, 3, 0, 3, 0, 0]
  50. ]
  51.  
  52. bricks = pygame.sprite.Group()
  53.  
  54.  
  55. def add_bricks():
  56. loaded_level = None
  57. if level == 0:
  58. loaded_level = level1
  59. if level == 1:
  60. loaded_level = level2
  61. if level == 2:
  62. loaded_level = level3
  63.  
  64. for i in range(10):
  65. for j in range(7):
  66. if loaded_level[j][i] != 0:
  67. brick = Brick(32+i*96, 32+j*48, loaded_level[j][i])
  68. bricks.add(brick)
  69.  
  70.  
  71. add_bricks()
  72.  
  73. paddle = Paddle()
  74. ball = Ball()
  75.  
  76. # main game loop
  77. game_on = True
  78. while game_on:
  79. for event in pygame.event.get():
  80. if event.type == pygame.KEYDOWN:
  81. if event.key == pygame.K_ESCAPE:
  82. game_on = False
  83. elif event.type == pygame.QUIT:
  84. game_on = False
  85.  
  86. # paddle controls
  87. pressed_keys = pygame.key.get_pressed()
  88. if pressed_keys[pygame.K_a]:
  89. paddle.move_paddle(-1)
  90. if pressed_keys[pygame.K_d]:
  91. paddle.move_paddle(1)
  92.  
  93. # checking if all bricks have been destroyed
  94. if len(bricks.sprites()) == 0:
  95. level += 1
  96. if level >= 3:
  97. break
  98. ball.reset_position()
  99. paddle.reset_position()
  100. add_bricks()
  101.  
  102. # ball update
  103. ball.update(paddle, bricks)
  104.  
  105. # checking if ball has touched the lower edge of the screen
  106. if ball.lost:
  107. lives -= 1
  108. if lives <= 0:
  109. break
  110. ball.reset_position()
  111. paddle.reset_position()
  112.  
  113. # updating bricks and the paddle
  114. bricks.update()
  115. paddle.update()
  116.  
  117. # display background
  118. display.blit(background_image, (0, 0))
  119.  
  120. # display bricks
  121. for brick in bricks:
  122. display.blit(brick.image, brick.rect)
  123.  
  124. # display the player and the ball
  125. display.blit(paddle.image, paddle.rect)
  126. display.blit(ball.image, ball.rect)
  127.  
  128. # render score
  129. text = font.render(
  130. f'level: {level+1}, Lives: {lives}', False, (255, 0, 255))
  131. display.blit(text, (16, 16))
  132.  
  133. pygame.display.flip()
  134. clock.tick(30)
  135.  
  136. pygame.quit()
  137.  
Add Comment
Please, Sign In to add comment