Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pygame
- import random
- # Initialize Pygame
- pygame.init()
- # Set up some constants
- WIDTH, HEIGHT = 800, 600
- FPS = 60
- WHITE = (255, 255, 255)
- BLACK = (0, 0, 0)
- RED = (255, 0, 0)
- # Set up the display
- screen = pygame.display.set_mode((WIDTH, HEIGHT))
- pygame.display.set_caption("Space Shooter")
- clock = pygame.time.Clock()
- # Player class
- class Player(pygame.sprite.Sprite):
- def __init__(self):
- super().__init__()
- self.image = pygame.Surface((50, 50))
- self.image.fill(WHITE)
- self.rect = self.image.get_rect()
- self.rect.centerx = WIDTH // 2
- self.rect.bottom = HEIGHT - 10
- self.speed_x = 0
- def update(self):
- self.speed_x = 0
- keys = pygame.key.get_pressed()
- if keys[pygame.K_LEFT]:
- self.speed_x = -5
- if keys[pygame.K_RIGHT]:
- self.speed_x = 5
- self.rect.x += self.speed_x
- if self.rect.left < 0:
- self.rect.left = 0
- if self.rect.right > WIDTH:
- self.rect.right = WIDTH
- def shoot(self):
- bullet = Bullet(self.rect.centerx, self.rect.top)
- all_sprites.add(bullet)
- bullets.add(bullet)
- # Enemy class
- class Enemy(pygame.sprite.Sprite):
- def __init__(self):
- super().__init__()
- self.image = pygame.Surface((30, 30))
- self.image.fill(RED)
- self.rect = self.image.get_rect()
- self.rect.x = random.randrange(WIDTH - self.rect.width)
- self.rect.y = random.randrange(-100, -40)
- self.speed_y = random.randrange(1, 8)
- def update(self):
- self.rect.y += self.speed_y
- if self.rect.top > HEIGHT + 10:
- self.kill()
- # Bullet class
- class Bullet(pygame.sprite.Sprite):
- def __init__(self, x, y):
- super().__init__()
- self.image = pygame.Surface((10, 20))
- self.image.fill(WHITE)
- self.rect = self.image.get_rect()
- self.rect.bottom = y
- self.rect.centerx = x
- self.speed_y = -10
- def update(self):
- self.rect.y += self.speed_y
- if self.rect.bottom < 0:
- self.kill()
- # Set up sprite groups
- all_sprites = pygame.sprite.Group()
- enemies = pygame.sprite.Group()
- bullets = pygame.sprite.Group()
- # Create the player
- player = Player()
- all_sprites.add(player)
- # Game loop
- running = True
- while running:
- # Keep the loop running at the right speed
- clock.tick(FPS)
- # Process input (events)
- for event in pygame.event.get():
- if event.type == pygame.QUIT:
- running = False
- elif event.type == pygame.KEYDOWN:
- if event.key == pygame.K_SPACE:
- player.shoot()
- # Update
- all_sprites.update()
- # Spawn enemies
- if random.random() < 0.01:
- enemy = Enemy()
- all_sprites.add(enemy)
- enemies.add(enemy)
- # Check for collisions between bullets and enemies
- hits = pygame.sprite.groupcollide(enemies, bullets, True, True)
- # Draw / render
- screen.fill(BLACK)
- all_sprites.draw(screen)
- pygame.display.flip()
- pygame.quit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement