Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random, sys, pygame, os, time
- from pygame import *
- WIDTH = 600
- HEIGHT = 750
- FPS = 60
- NB_MONSTERS = 15
- SPEED = 5
- HEART = 3
- # Define colors
- WHITE = (255, 255, 255)
- RED = (255, 0, 0)
- BLACK = (0, 0, 0)
- # Initialize pygame and load the window
- pygame.init()
- screen = pygame.display.set_mode((WIDTH, HEIGHT))
- background = image.load("Assets/background.png").convert_alpha()
- # Use time in the game
- clock = pygame.time.Clock()
- # Load all sounds
- mixer.music.load("Sounds/main_music.wav")
- title_sound = pygame.mixer.Sound("Sounds/title_screen.wav")
- hit_sound = pygame.mixer.Sound("Sounds/hit.wav")
- pygame.mixer.music.set_volume(0.25)
- title_sound.set_volume(0.25)
- # Initialize moving background
- x,y = 0, 0
- x1, y1 = 0, -HEIGHT
- class Player(pygame.sprite.Sprite):
- def __init__(self):
- pygame.sprite.Sprite.__init__(self)
- self.image = pygame.image.load("Assets/player.png")
- self.mask = mask.from_surface(self.image)
- self.rect = self.image.get_rect()
- self.rect.centerx = WIDTH / 2
- self.rect.y = HEIGHT
- def update(self):
- self.SPEEDX = 0
- self.SPEEDY = 0
- keystate = pygame.key.get_pressed()
- # Move right
- if keystate[pygame.K_d]:
- self.SPEEDX = SPEED
- # Move left
- if keystate[pygame.K_a]:
- self.SPEEDX = - SPEED
- # Move up
- if keystate[pygame.K_w]:
- self.SPEEDY = - SPEED
- # Move down
- if keystate[pygame.K_s]:
- self.SPEEDY = SPEED
- # Close the game
- if keystate[pygame.K_ESCAPE]:
- sys.exit()
- # Make the character be able to move
- self.rect.x += self.SPEEDX
- self.rect.y += self.SPEEDY
- # Do not cross screen border
- # Left side
- if self.rect.left < 0:
- self.rect.left = 0
- # Right side
- if self.rect.right > WIDTH:
- self.rect.right = WIDTH
- # Top side
- if self.rect.top < 0:
- self.rect.top = 0
- # Bottom side
- if self.rect.bottom > HEIGHT:
- self.rect.bottom = HEIGHT
- class Enemy(pygame.sprite.Sprite):
- def __init__(self):
- pygame.sprite.Sprite.__init__(self)
- self.image = pygame.image.load("Assets/fire_ball.png")
- self.mask = mask.from_surface(self.image)
- self.rect = self.image.get_rect()
- self.rect.x = random.randrange(WIDTH - self.rect.width)
- self.rect.y = random.randrange(-100, -40)
- self.speedy = random.randrange(1, 8)
- self.speedx = random.randrange(-2, 3)
- def update(self):
- self.rect.x += self.speedx
- self.rect.y += self.speedy
- if self.rect.top > HEIGHT + 10 or \
- self.rect.left < -25 or self.rect.right > WIDTH + 20:
- self.rect.x = random.randrange(WIDTH - self.rect.width)
- self.rect.y = random.randrange(-100, -40)
- self.speedy = random.randrange(1, 8)
- class Heart(pygame.sprite.Sprite):
- def __init__(self, x):
- pygame.sprite.Sprite.__init__(self)
- self.image = pygame.image.load("Assets/heart.png")
- self.rect = self.image.get_rect()
- self.rect.x = x
- self.rect.y = 5
- def main_screen():
- global title_sound
- title_sound.play()
- title_screen = pygame.image.load("Assets/main_screen.png")
- screen.blit(title_screen, (0, 0))
- pygame.display.flip()
- wait()
- def gameover_sound():
- global title_sound
- pygame.time.delay(300)
- title_sound.play()
- def wait():
- while True :
- for event in pygame.event.get():
- if event.type == QUIT:
- sys.exit()
- if event.type == KEYDOWN and event.key == K_SPACE:
- title_sound.fadeout(3000)
- pygame.time.delay(3000)
- mixer.music.play(-1)
- global running
- running = True
- return
- if event.type == KEYDOWN and event.key == K_ESCAPE:
- sys.exit()
- def death():
- global FPS
- gameover_screen = pygame.image.load("Assets/game_over.png")
- screen.blit(gameover_screen, (0, 0))
- pygame.display.flip()
- player.rect.centerx = WIDTH / 2
- player.rect.y = HEIGHT
- FPS = 60
- all_sprites.remove(all_enemies)
- all_enemies.empty()
- pygame.mixer.music.stop()
- gameover_sound()
- wait()
- for i in range(NB_MONSTERS):
- enemies = Enemy()
- all_sprites.add(enemies)
- all_enemies.add(enemies)
- def scrolling():
- global x,y,x1,y1
- y1 += 5
- y += 5
- screen.blit(background,(x,y))
- screen.blit(background,(x1,y1))
- if y > HEIGHT:
- y = -HEIGHT
- if y1 > HEIGHT:
- y1 = -HEIGHT
- def timer():
- seconds = (pygame.time.get_ticks() - start_ticks) // 1000
- timer_font = font.SysFont("Assets/track.ttf", 60, bold=True)
- timer_display = timer_font.render(str(seconds), 1, BLACK)
- screen.blit(timer_display, (WIDTH - 60, 0))
- global FPS
- if seconds >= 30:
- FPS = 80
- if seconds >= 60:
- FPS = 100
- if seconds >= 90:
- FPS = 120
- def life():
- if HEART == 2:
- heart_three.kill()
- elif HEART == 1:
- heart_two.kill()
- elif HEART <= 0:
- heart_one.kill()
- death()
- all_sprites.add(heart_one,heart_two,heart_three)
- heart_one = Heart(0)
- heart_two = Heart(30)
- heart_three = Heart(60)
- player = Player()
- all_heart = pygame.sprite.Group()
- all_sprites = pygame.sprite.Group()
- all_enemies = pygame.sprite.Group()
- all_sprites.add(player, heart_one, heart_two, heart_three)
- all_heart.add(heart_one, heart_two, heart_three)
- for i in range(NB_MONSTERS):
- enemies = Enemy()
- all_sprites.add(enemies)
- all_enemies.add(enemies)
- main_screen()
- start_ticks = pygame.time.get_ticks()
- # Game loop
- running = True
- while running:
- for event in pygame.event.get():
- if event.type == pygame.QUIT:
- running = False
- if sprite.spritecollide(player, all_enemies, True):
- hit_sound.play()
- HEART -= 1
- life()
- if HEART <= 0:
- HEART = 3
- start_ticks = pygame.time.get_ticks()
- # Update
- all_sprites.update()
- all_heart.update()
- # Draw / render
- scrolling()
- timer()
- all_sprites.draw(screen)
- pygame.display.flip()
- clock.tick(FPS)
- pygame.quit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement