Advertisement
Guest User

Untitled

a guest
Mar 27th, 2017
42
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.45 KB | None | 0 0
  1. import random, sys, pygame, os, time
  2. from pygame import *
  3.  
  4. WIDTH = 600
  5. HEIGHT = 750
  6. FPS = 60
  7. NB_MONSTERS = 15
  8. SPEED = 5
  9. HEART = 3
  10.  
  11. # Define colors
  12. WHITE = (255, 255, 255)
  13. RED = (255, 0, 0)
  14. BLACK = (0, 0, 0)
  15.  
  16. # Initialize pygame and load the window
  17. pygame.init()
  18. screen = pygame.display.set_mode((WIDTH, HEIGHT))
  19. background = image.load("Assets/background.png").convert_alpha()
  20.  
  21. # Use time in the game
  22. clock = pygame.time.Clock()
  23.  
  24. # Load all sounds
  25. mixer.music.load("Sounds/main_music.wav")
  26.  
  27. title_sound = pygame.mixer.Sound("Sounds/title_screen.wav")
  28. hit_sound = pygame.mixer.Sound("Sounds/hit.wav")
  29.  
  30. pygame.mixer.music.set_volume(0.25)
  31. title_sound.set_volume(0.25)
  32.  
  33. # Initialize moving background
  34. x,y = 0, 0
  35. x1, y1 = 0, -HEIGHT
  36.  
  37. class Player(pygame.sprite.Sprite):
  38. def __init__(self):
  39. pygame.sprite.Sprite.__init__(self)
  40. self.image = pygame.image.load("Assets/player.png")
  41. self.mask = mask.from_surface(self.image)
  42. self.rect = self.image.get_rect()
  43. self.rect.centerx = WIDTH / 2
  44. self.rect.y = HEIGHT
  45.  
  46. def update(self):
  47. self.SPEEDX = 0
  48. self.SPEEDY = 0
  49.  
  50. keystate = pygame.key.get_pressed()
  51. # Move right
  52. if keystate[pygame.K_d]:
  53. self.SPEEDX = SPEED
  54. # Move left
  55. if keystate[pygame.K_a]:
  56. self.SPEEDX = - SPEED
  57. # Move up
  58. if keystate[pygame.K_w]:
  59. self.SPEEDY = - SPEED
  60. # Move down
  61. if keystate[pygame.K_s]:
  62. self.SPEEDY = SPEED
  63. # Close the game
  64. if keystate[pygame.K_ESCAPE]:
  65. sys.exit()
  66.  
  67. # Make the character be able to move
  68. self.rect.x += self.SPEEDX
  69. self.rect.y += self.SPEEDY
  70.  
  71. # Do not cross screen border
  72. # Left side
  73. if self.rect.left < 0:
  74. self.rect.left = 0
  75. # Right side
  76. if self.rect.right > WIDTH:
  77. self.rect.right = WIDTH
  78. # Top side
  79. if self.rect.top < 0:
  80. self.rect.top = 0
  81. # Bottom side
  82. if self.rect.bottom > HEIGHT:
  83. self.rect.bottom = HEIGHT
  84.  
  85. class Enemy(pygame.sprite.Sprite):
  86. def __init__(self):
  87. pygame.sprite.Sprite.__init__(self)
  88. self.image = pygame.image.load("Assets/fire_ball.png")
  89. self.mask = mask.from_surface(self.image)
  90. self.rect = self.image.get_rect()
  91. self.rect.x = random.randrange(WIDTH - self.rect.width)
  92. self.rect.y = random.randrange(-100, -40)
  93. self.speedy = random.randrange(1, 8)
  94. self.speedx = random.randrange(-2, 3)
  95.  
  96. def update(self):
  97. self.rect.x += self.speedx
  98. self.rect.y += self.speedy
  99. if self.rect.top > HEIGHT + 10 or \
  100. self.rect.left < -25 or self.rect.right > WIDTH + 20:
  101. self.rect.x = random.randrange(WIDTH - self.rect.width)
  102. self.rect.y = random.randrange(-100, -40)
  103. self.speedy = random.randrange(1, 8)
  104.  
  105. class Heart(pygame.sprite.Sprite):
  106. def __init__(self, x):
  107. pygame.sprite.Sprite.__init__(self)
  108. self.image = pygame.image.load("Assets/heart.png")
  109. self.rect = self.image.get_rect()
  110. self.rect.x = x
  111. self.rect.y = 5
  112.  
  113. def main_screen():
  114. global title_sound
  115. title_sound.play()
  116. title_screen = pygame.image.load("Assets/main_screen.png")
  117. screen.blit(title_screen, (0, 0))
  118. pygame.display.flip()
  119. wait()
  120.  
  121. def gameover_sound():
  122. global title_sound
  123. pygame.time.delay(300)
  124. title_sound.play()
  125.  
  126. def wait():
  127. while True :
  128. for event in pygame.event.get():
  129. if event.type == QUIT:
  130. sys.exit()
  131. if event.type == KEYDOWN and event.key == K_SPACE:
  132. title_sound.fadeout(3000)
  133. pygame.time.delay(3000)
  134. mixer.music.play(-1)
  135. global running
  136. running = True
  137. return
  138. if event.type == KEYDOWN and event.key == K_ESCAPE:
  139. sys.exit()
  140.  
  141. def death():
  142. global FPS
  143. gameover_screen = pygame.image.load("Assets/game_over.png")
  144. screen.blit(gameover_screen, (0, 0))
  145. pygame.display.flip()
  146. player.rect.centerx = WIDTH / 2
  147. player.rect.y = HEIGHT
  148. FPS = 60
  149. all_sprites.remove(all_enemies)
  150. all_enemies.empty()
  151. pygame.mixer.music.stop()
  152. gameover_sound()
  153. wait()
  154. for i in range(NB_MONSTERS):
  155. enemies = Enemy()
  156. all_sprites.add(enemies)
  157. all_enemies.add(enemies)
  158.  
  159. def scrolling():
  160. global x,y,x1,y1
  161. y1 += 5
  162. y += 5
  163. screen.blit(background,(x,y))
  164. screen.blit(background,(x1,y1))
  165. if y > HEIGHT:
  166. y = -HEIGHT
  167. if y1 > HEIGHT:
  168. y1 = -HEIGHT
  169.  
  170. def timer():
  171. seconds = (pygame.time.get_ticks() - start_ticks) // 1000
  172. timer_font = font.SysFont("Assets/track.ttf", 60, bold=True)
  173. timer_display = timer_font.render(str(seconds), 1, BLACK)
  174. screen.blit(timer_display, (WIDTH - 60, 0))
  175.  
  176. global FPS
  177. if seconds >= 30:
  178. FPS = 80
  179. if seconds >= 60:
  180. FPS = 100
  181. if seconds >= 90:
  182. FPS = 120
  183.  
  184. def life():
  185. if HEART == 2:
  186. heart_three.kill()
  187. elif HEART == 1:
  188. heart_two.kill()
  189. elif HEART <= 0:
  190. heart_one.kill()
  191. death()
  192. all_sprites.add(heart_one,heart_two,heart_three)
  193.  
  194. heart_one = Heart(0)
  195. heart_two = Heart(30)
  196. heart_three = Heart(60)
  197.  
  198. player = Player()
  199.  
  200. all_heart = pygame.sprite.Group()
  201. all_sprites = pygame.sprite.Group()
  202. all_enemies = pygame.sprite.Group()
  203.  
  204. all_sprites.add(player, heart_one, heart_two, heart_three)
  205. all_heart.add(heart_one, heart_two, heart_three)
  206.  
  207. for i in range(NB_MONSTERS):
  208. enemies = Enemy()
  209. all_sprites.add(enemies)
  210. all_enemies.add(enemies)
  211.  
  212. main_screen()
  213. start_ticks = pygame.time.get_ticks()
  214.  
  215. # Game loop
  216. running = True
  217. while running:
  218. for event in pygame.event.get():
  219. if event.type == pygame.QUIT:
  220. running = False
  221. if sprite.spritecollide(player, all_enemies, True):
  222. hit_sound.play()
  223. HEART -= 1
  224. life()
  225. if HEART <= 0:
  226. HEART = 3
  227. start_ticks = pygame.time.get_ticks()
  228.  
  229. # Update
  230. all_sprites.update()
  231. all_heart.update()
  232.  
  233. # Draw / render
  234. scrolling()
  235. timer()
  236. all_sprites.draw(screen)
  237. pygame.display.flip()
  238. clock.tick(FPS)
  239. pygame.quit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement