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
반응형
'프로그래밍' 카테고리의 다른 글
HTML, Css, JavaScript 를 이용한 클릭 게임 만들기 (1) | 2025.01.08 |
---|---|
HTML, Css, Javascript 를 이용하여 공 튀기기 게임 만들기 (0) | 2025.01.08 |
파이썬을 이용한 장애물 피하기 게임 만들기 (0) | 2025.01.06 |
파이썬을 이용한 캐릭터 수집 게임 만들기 (0) | 2025.01.06 |
파이썬을 이용한 2D 플랫폼 게임 만들기 (0) | 2025.01.06 |