프로그래밍

파이썬을 이용한 우주선 슈팅 게임 만들기

코드금융 2025. 1. 6. 11:53
728x90
반응형

 

 

Python으로 우주선 슈팅 게임 만들기

Pygame을 활용한 단계별 코딩 튜토리얼

1. Pygame 설치

먼저 Pygame 라이브러리를 설치하세요:

pip install pygame
        

2. 기본 게임 창 설정

게임 화면을 생성하고 배경을 설정합니다.

import pygame
import sys

pygame.init()

# 화면 설정
screen_width = 800
screen_height = 600
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption("우주선 슈팅 게임")

# 색상 설정
background_color = (0, 0, 20)  # 어두운 배경

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

    screen.fill(background_color)
    pygame.display.flip()

pygame.quit()
sys.exit()
        

3. 플레이어 우주선 추가

우주선을 화면에 추가합니다.

player_color = (0, 255, 0)
player_width = 50
player_height = 50
player_x = screen_width // 2 - player_width // 2
player_y = screen_height - player_height - 20
player_speed = 5
        

4. 적 우주선 추가

랜덤으로 생성되는 적 우주선을 추가합니다.

import random

enemy_color = (255, 0, 0)
enemy_width = 50
enemy_height = 50
enemy_x = random.randint(0, screen_width - enemy_width)
enemy_y = -enemy_height
enemy_speed = 3
        

5. 총알 발사 구현

스페이스바를 눌러 총알을 발사합니다.

bullet_color = (255, 255, 0)
bullet_width = 5
bullet_height = 10
bullets = []
bullet_speed = 7

# 총알 발사
if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
    bullets.append([player_x + player_width // 2, player_y])
        

6. 충돌 감지

총알이 적 우주선과 충돌하면 적을 제거합니다.

for bullet in bullets:
    bullet[1] -= bullet_speed
    if enemy_x < bullet[0] < enemy_x + enemy_width and enemy_y < bullet[1] < enemy_y + enemy_height:
        bullets.remove(bullet)
        enemy_x = random.randint(0, screen_width - enemy_width)
        enemy_y = -enemy_height
        break
        

7. 전체 코드

아래는 모든 단계를 통합한 완성된 우주선 슈팅 게임 코드입니다. 복사해서 실행해 보세요!

import pygame
import sys
import random

pygame.init()

# 화면 설정
screen_width = 800
screen_height = 600
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption("우주선 슈팅 게임")

# 색상 설정
background_color = (0, 0, 20)
player_color = (0, 255, 0)
enemy_color = (255, 0, 0)
bullet_color = (255, 255, 0)

# 플레이어 설정
player_width = 50
player_height = 50
player_x = screen_width // 2 - player_width // 2
player_y = screen_height - player_height - 20
player_speed = 5

# 적 설정
enemy_width = 50
enemy_height = 50
enemy_x = random.randint(0, screen_width - enemy_width)
enemy_y = -enemy_height
enemy_speed = 3

# 총알 설정
bullet_width = 5
bullet_height = 10
bullets = []
bullet_speed = 7

running = True
while running:
    pygame.time.delay(30)

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
            bullets.append([player_x + player_width // 2, player_y])

    # 키 입력 처리
    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT] and player_x > 0:
        player_x -= player_speed
    if keys[pygame.K_RIGHT] and player_x < screen_width - player_width:
        player_x += player_speed

    # 적 이동
    enemy_y += enemy_speed
    if enemy_y > screen_height:
        enemy_y = -enemy_height
        enemy_x = random.randint(0, screen_width - enemy_width)

    # 총알 이동
    for bullet in bullets:
        bullet[1] -= bullet_speed
        if bullet[1] < 0:
            bullets.remove(bullet)
        if enemy_x < bullet[0] < enemy_x + enemy_width and enemy_y < bullet[1] < enemy_y + enemy_height:
            bullets.remove(bullet)
            enemy_x = random.randint(0, screen_width - enemy_width)
            enemy_y = -enemy_height

    # 화면 그리기
    screen.fill(background_color)
    pygame.draw.rect(screen, player_color, (player_x, player_y, player_width, player_height))
    pygame.draw.rect(screen, enemy_color, (enemy_x, enemy_y, enemy_width, enemy_height))
    for bullet in bullets:
        pygame.draw.rect(screen, bullet_color, (bullet[0], bullet[1], bullet_width, bullet_height))
    pygame.display.flip()

pygame.quit()
sys.exit()
728x90
반응형