본문 바로가기

[Pygame] ✈️ 전투기 슈팅 게임 만들기 1강 | 프로젝트 시작과 세로 슈팅 게임 구조 이해

@도마22026. 1. 11. 19:00
728x90


1. 강의 소개

이번 강의에서는 Pygame을 이용하여 전투기 슈팅 게임을 만들어 봅니다.
게임은 세로 화면을 기준으로 하며, 플레이어와 적 모두 전투기입니다.

기본 조작 방식은 다음과 같습니다.

  • 이동 : W / A / S / D
  • 공격 : 스페이스바
  • 적 전투기 : 화면 상단에서 생성되어 아래로 이동

이번 1강에서는 게임을 만들기 위한 기본 틀과 구조를 먼저 구성합니다.


2. 세로 슈팅 게임의 기본 구조

대부분의 세로 슈팅 게임은 다음과 같은 흐름으로 동작합니다.

  1. 세로 화면을 가진 게임 창을 생성합니다.
  2. 플레이어 전투기는 화면 하단에서 시작합니다.
  3. 적 전투기는 화면 상단에서 생성됩니다.
  4. 총알은 위 방향으로 발사됩니다.
  5. 충돌 처리는 이후 단계에서 구현합니다.

이 구조를 이해하면 이후 기능 추가가 수월해집니다.


3. 프로젝트 폴더 구조

이번 강의에서 사용할 기본 폴더 구조입니다.

shooting_game
 ├─ main.py
 ├─ images
 └─ sounds

4. Pygame 초기화 및 화면 설정

먼저 Pygame을 초기화하고 게임 화면을 생성합니다.

import pygame
import sys

pygame.init()

SCREEN_WIDTH = 480
SCREEN_HEIGHT = 640

screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption("Shooting Game")

clock = pygame.time.Clock()
FPS = 60

세로 슈팅 게임이기 때문에 화면 높이를 더 크게 설정합니다.


5. 게임 루프 작성

게임의 모든 동작은 게임 루프 안에서 처리됩니다.

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    screen.fill((0, 0, 0))

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

pygame.quit()
sys.exit()

이 루프는 입력 처리, 화면 갱신, 프레임 유지를 담당합니다.


6. 현재 단계에서의 결과

지금 코드를 실행하면 다음과 같은 결과가 나옵니다.

  • 검은색 세로 화면이 출력됩니다.
  • 아직 전투기나 적은 보이지 않습니다.
  • 게임의 기본 골격은 완성된 상태입니다.

7. 마무리

이번 강의에서는 다음 내용을 학습했습니다.

  • 세로 슈팅 게임의 기본 구조
  • Pygame 초기화 및 화면 설정
  • 게임 루프와 FPS 개념

다음 강의에서는 플레이어 전투기를 화면에 생성하고 WASD로 이동시켜 보겠습니다.


전체 코드

더보기
import pygame
import sys

pygame.init()

# 화면 크기 설정 (세로형)
SCREEN_WIDTH = 480
SCREEN_HEIGHT = 640
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption("Shooting Game")

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

# 게임 루프
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # 화면 채우기
    screen.fill((0, 0, 0))

    # 화면 업데이트
    pygame.display.update()
    clock.tick(FPS)

pygame.quit()
sys.exit()

728x90
도마2
@도마2 :: 도마의 코드노트

초보자를 위한 코딩 강의를 정리합니다. 파이썬부터 C#, Unity 게임 제작까지 차근차근 기록합니다. — 도마

목차