Python

파이썬, 슈팅 (갤러그) 게임 소스

코딩ABC 2025. 1. 13. 13:45
반응형

갤러그 게임은 간단한 2D 슈팅 게임으로, 파이썬에서 게임 개발 라이브러리인 Pygame을 사용하여 만들 수 있습니다. 아래는 기본적인 갤러그 스타일 게임을 만드는 코드입니다.

 

1. Pygame 설치: 먼저, Pygame을 설치해야 합니다.

pip install pygame

 

2. 소스 코드

import pygame
import random
import sys

# 초기화
pygame.init()

# 화면 설정
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption("Galaga Game")

# 색상 정의
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
RED = (255, 0, 0)
BLUE = (0, 0, 255)

# FPS 설정
clock = pygame.time.Clock()
FPS = 60

# 플레이어 클래스
class Player(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.image = pygame.Surface((50, 40))
        self.image.fill(BLUE)
        self.rect = self.image.get_rect()
        self.rect.center = (SCREEN_WIDTH // 2, SCREEN_HEIGHT - 50)
        self.speed = 5

    def update(self, keys):
        if keys[pygame.K_LEFT] and self.rect.left > 0:
            self.rect.x -= self.speed
        if keys[pygame.K_RIGHT] and self.rect.right < SCREEN_WIDTH:
            self.rect.x += self.speed

    def shoot(self):
        bullet = Bullet(self.rect.centerx, self.rect.top)
        bullets.add(bullet)

# 적 클래스
class Enemy(pygame.sprite.Sprite):
    def __init__(self, x, y):
        super().__init__()
        self.image = pygame.Surface((40, 30))
        self.image.fill(RED)
        self.rect = self.image.get_rect()
        self.rect.topleft = (x, y)
        self.speed = 2

    def update(self):
        self.rect.y += self.speed
        if self.rect.top > SCREEN_HEIGHT:
            self.rect.y = random.randint(-100, -40)
            self.rect.x = random.randint(0, SCREEN_WIDTH - self.rect.width)

# 총알 클래스
class Bullet(pygame.sprite.Sprite):
    def __init__(self, x, y):
        super().__init__()
        self.image = pygame.Surface((5, 10))
        self.image.fill(WHITE)
        self.rect = self.image.get_rect()
        self.rect.center = (x, y)
        self.speed = -7

    def update(self):
        self.rect.y += self.speed
        if self.rect.bottom < 0:
            self.kill()

# 스프라이트 그룹
player = Player()
enemies = pygame.sprite.Group()
bullets = pygame.sprite.Group()

for i in range(8):
    enemy = Enemy(random.randint(0, SCREEN_WIDTH - 40), random.randint(-100, -40))
    enemies.add(enemy)

all_sprites = pygame.sprite.Group(player, *enemies)

# 게임 루프
running = True
while running:
    screen.fill(BLACK)

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_SPACE:
                player.shoot()

    keys = pygame.key.get_pressed()
    player.update(keys)

    bullets.update()
    enemies.update()

    # 충돌 처리
    hits = pygame.sprite.groupcollide(enemies, bullets, True, True)
    for hit in hits:
        enemy = Enemy(random.randint(0, SCREEN_WIDTH - 40), random.randint(-100, -40))
        enemies.add(enemy)
        all_sprites.add(enemy)

    all_sprites.draw(screen)
    bullets.draw(screen)

    pygame.display.flip()
    clock.tick(FPS)

pygame.quit()
sys.exit()

 

코드 설명

  1. Player 클래스: 플레이어의 움직임과 총알 발사를 처리합니다.
  2. Enemy 클래스: 적의 움직임과 화면 재생성을 관리합니다.
  3. Bullet 클래스: 총알의 움직임을 정의합니다.
  4. 충돌 처리: 총알이 적과 충돌하면 적이 제거되고 새로 생성됩니다.
  5. FPS: 게임의 프레임 속도를 설정하여 부드러운 동작을 구현합니다.

실행 방법

  1. 위 코드를 실행하면 간단한 갤러그 게임이 실행됩니다.
  2. 왼쪽/오른쪽 화살표 키로 플레이어를 이동하고, 스페이스바로 총알을 발사합니다.

배경 음악, 스코어 시스템, 고급 그래픽은 직접 추가해보세요! 😊

 

파이썬, 슈팅 (갤러그) 게임 소스

 

반응형