Facebook
From MuhammadHuzaifa , 2 Weeks ago, written in Python.
Embed
Download Paste or View Raw
Hits: 109
  1. import pygame
  2. import sys
  3. import random
  4. import math
  5. from pygame.locals import *
  6.  
  7. # Initialize Pygame
  8. pygame.init()
  9.  
  10. # Constants
  11. SCREEN_WIDTH = 800
  12. SCREEN_HEIGHT = 600
  13. ENEMY_SPEED = 1
  14. FIGHTER_SPEED = 8
  15. BULLET_SPEED = 10
  16. ENEMY_SIZE = 50
  17. FIGHTER_SIZE = 50
  18. BULLET_SIZE = 5
  19.  
  20. # Colors
  21. WHITE = (255, 255, 255)
  22. BLACK = (0, 0, 0)
  23.  
  24. # Create the screen
  25. screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
  26. pygame.display.set_caption("Fighter Shooter Game")
  27.  
  28. # Load images
  29. background_img = pygame.image.load(r'C:UsersmuhamOneDrivePicturesbackground-purple.png')
  30. fighter_img = pygame.image.load(r'C:UsersmuhamOneDrivePicturesupdate poxel ship.png')
  31. enemy_img = pygame.image.load(r'c:UsersmuhamOneDrivePicturesupdate.png')
  32. bullet_img = pygame.Surface((BULLET_SIZE, BULLET_SIZE))
  33. bullet_img.fill(WHITE)
  34. start_img = pygame.image.load(r'C:UsersmuhamOneDrivePicturesop.png')
  35. game_over_img = pygame.image.load(r'c:UsersmuhamDownloadsWhatsApp Image 2024-04-11 at 7.03.25 PM.jpeg')
  36. restart_img = pygame.image.load(r'c:UsersmuhamDownloadsWhatsApp Image 2024-04-11 at 7.14.23 PM.jpeg')
  37.  
  38. # Clock
  39. clock = pygame.time.Clock()
  40.  
  41. class Fighter(pygame.sprite.Sprite):
  42.     def __init__(self):
  43.         super().__init__()
  44.         self.image = fighter_img
  45.         self.rect = self.image.get_rect()
  46.         self.rect.centerx = SCREEN_WIDTH // 2
  47.         self.rect.bottom = SCREEN_HEIGHT - 10
  48.         self.speedx = 0
  49.  
  50.     def update(self):
  51.         self.speedx = 0
  52.         keys = pygame.key.get_pressed()
  53.         if keys[K_LEFT]:
  54.             self.speedx = -FIGHTER_SPEED
  55.         if keys[K_RIGHT]:
  56.             self.speedx = FIGHTER_SPEED
  57.         self.rect.x += self.speedx
  58.         if self.rect.left < 0:
  59.             self.rect.left = 0
  60.         if self.rect.right > SCREEN_WIDTH:
  61.             self.rect.right = SCREEN_WIDTH
  62.  
  63.     def shoot(self):
  64.         bullet = Bullet(self.rect.centerx, self.rect.top)
  65.         all_sprites.add(bullet)
  66.         bullets.add(bullet)
  67.  
  68. class Enemy(pygame.sprite.Sprite):
  69.     def __init__(self):
  70.         super().__init__()
  71.         self.image = pygame.transform.flip(enemy_img, False, True)
  72.         self.rect = self.image.get_rect()
  73.         self.rect.x = random.randrange(SCREEN_WIDTH - self.rect.width)
  74.         self.rect.y = random.randrange(-100, -40)
  75.         self.speed = ENEMY_SPEED
  76.         self.angle = 180  
  77.  
  78.     def update(self):
  79.         self.rect.y += self.speed  
  80.         self.rect.x += self.speed * math.sin(math.radians(self.angle))
  81.         if self.rect.bottom > SCREEN_HEIGHT or abs(self.rect.centerx - fighter.rect.centerx) > 3 * FIGHTER_SIZE:  # Check if enemy is too far from fighter
  82.             ()
  83.  
  84. class Bullet(pygame.sprite.Sprite):
  85.     def __init__(self, x, y):
  86.         super().__init__()
  87.         self.image = bullet_img
  88.         self.rect = self.image.get_rect()
  89.         self.rect.bottom = y
  90.         self.rect.centerx = x
  91.         self.speedy = -BULLET_SPEED
  92.  
  93.     def update(self):
  94.         self.rect.y += self.speedy
  95.         if self.rect.bottom < 0:
  96.             self.kill()
  97.  
  98. def level_up(level):
  99.     global ENEMY_SPEED, ENEMY_SIZE
  100.     ENEMY_SPEED += 0.2
  101.     ENEMY_SIZE += 5
  102.  
  103. def start_screen():
  104.     screen.blit(start_img, (0, 0))
  105.      start_butt // 2, SCREEN_HEIGHT // 2))
  106.     pygame.draw.rect(screen, BLACK, start_button_rect, 2)  # Outline the button
  107.     pygame.display.flip()
  108.     waiting = True
  109.     while waiting:
  110.         clock.tick(60)
  111.         for event in pygame.event.get():
  112.             if event.type == pygame.QUIT:
  113.                 pygame.quit()
  114.                 sys.exit()
  115.             elif event.type == pygame.MOUSEBUTTONDOWN:
  116.                 if start_button_rect.collidepoint(event.pos):
  117.                     waiting = False
  118.  
  119. def game_over_screen():
  120.     screen.blit(game_over_img, (0, 0))
  121.     screen.blit(restart_img, (SCREEN_WIDTH // 2 - restart_img.get_width() // 2, SCREEN_HEIGHT // 2))
  122.     pygame.display.flip()
  123.     waiting = True
  124.     while waiting:
  125.         clock.tick(60)
  126.         for event in pygame.event.get():
  127.             if event.type == pygame.QUIT:
  128.                 pygame.quit()
  129.                 sys.exit()
  130.             elif event.type == pygame.MOUSEBUTTONDOWN:
  131.                 if restart_img.get_rect().collidepoint(event.pos):
  132.                     waiting = False
  133.  
  134. all_sprites = pygame.sprite.Group()
  135. enemies = pygame.sprite.Group()
  136. bullets = pygame.sprite.Group()
  137.  
  138. # Start screen
  139. start_screen()
  140.  
  141. # Create a Fighter instance
  142. fighter = Fighter()
  143. all_sprites.add(fighter)  # Add the fighter to the sprite group
  144.  
  145. # Main Loop
  146. running = True
  147. current_level = 1
  148. while running:
  149.     clock.tick(60)
  150.  
  151.     # Process events
  152.     for event in pygame.event.get():
  153.         if event.type == QUIT:
  154.             running = False
  155.         elif event.type == KEYDOWN:
  156.             if event.key == K_SPACE:
  157.                 fighter.shoot()  # Use the fighter instance to shoot
  158.  
  159.     # Update
  160.     all_sprites.update()
  161.  
  162.     # Spawn new enemies
  163.     if len(enemies) == 0:
  164.         level_up(current_level)
  165.         current_level += 1
  166.         print("Current Level:", current_level)
  167.         for _ in range(current_level):
  168.             enemy = Enemy()
  169.             all_sprites.add(enemy)
  170.             enemies.add(enemy)
  171.  
  172.     # Check if enemy crosses the fighter
  173.     for enemy in enemies:
  174.         if enemy.rect.top >= SCREEN_HEIGHT:
  175.             running = False
  176.  
  177.     # Check if enemy hits fighter
  178.     hits = pygame.sprite.spritecollide(fighter, enemies, False)  # Use the fighter instance here
  179.     if hits:
  180.         running = False
  181.  
  182.     # Check if bullet hits enemy
  183.     hits = pygame.sprite.groupcollide(enemies, bullets, True, True)
  184.     for hit in hits:
  185.         # Spawn new enemy
  186.         enemy = Enemy()
  187.         all_sprites.add(enemy)
  188.         enemies.add(enemy)
  189.  
  190.     # Draw
  191.     screen.blit(background_img, (0, 0))
  192.     all_sprites.draw(screen)
  193.     pygame.display.flip()
  194.  
  195. # Game Over screen
  196. game_over_screen()
  197.  
  198. pygame.quit()
  199. sys.exit()