2026. 2. 3. 14:37ㆍIT
이 게임은 파이썬의 Pygame 라이브러리를 사용하여 제작되었습니다. 플레이어는 도로 위에서 몰려오는 장애물(다른 차량)을 피해 최대한 오래 버티며 점수를 쌓아야 합니다. 속도가 점점 빨라지기 때문에 갈수록 긴장감이 고조되는 흥미진진한 구성을 가지고 있습니다.
1. 게임 실행을 위한 사전 준비
이 코드를 실행하려면 파이썬이 설치되어 있어야 하며, pygame 라이브러리가 필요합니다. 터미널(또는 CMD)에서 아래 명령어를 입력하여 설치하세요.
pip install pygame
2. 레이싱 게임 전체 소스 코드
아래 코드를 복사하여 .py 파일로 저장한 뒤 실행하세요. 별도의 이미지 파일 없이도 바로 작동하도록 기본 도형으로 구현되었습니다.
Python
import pygame
import random
import sys
# 초기화
pygame.init()
# 화면 설정
SCREEN_WIDTH = 400
SCREEN_HEIGHT = 600
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption("분노의 질주: 도로 탈출")
# 색상 정의
WHITE = (255, 255, 255)
GRAY = (50, 50, 50)
RED = (200, 0, 0)
BLUE = (0, 0, 200)
YELLOW = (255, 255, 0)
# 게임 변수
FPS = 60
clock = pygame.time.Clock()
player_width = 40
player_height = 70
player_x = (SCREEN_WIDTH // 2) - (player_width // 2)
player_y = SCREEN_HEIGHT - 100
player_speed = 7
obstacle_width = 40
obstacle_height = 70
obstacle_x = random.randint(50, SCREEN_WIDTH - 90)
obstacle_y = -100
obstacle_speed = 5
score = 0
font = pygame.font.SysFont("malgungothic", 25)
def draw_player(x, y):
# 플레이어 차량 (파란색)
pygame.draw.rect(screen, BLUE, [x, y, player_width, player_height])
pygame.draw.rect(screen, WHITE, [x + 5, y + 10, 30, 15]) # 앞유리
def draw_obstacle(x, y):
# 장애물 차량 (빨간색)
pygame.draw.rect(screen, RED, [x, y, obstacle_width, obstacle_height])
pygame.draw.rect(screen, WHITE, [x + 5, y + 45, 30, 15]) # 뒷유리
def show_score(s):
value = font.render("Score: " + str(s), True, YELLOW)
screen.blit(value, [10, 10])
def game_loop():
global player_x, obstacle_y, obstacle_x, obstacle_speed, score
running = True
while running:
screen.fill(GRAY)
# 도로 중앙선 그리기 (움직이는 효과)
for i in range(0, SCREEN_HEIGHT, 40):
pygame.draw.rect(screen, WHITE, [(SCREEN_WIDTH // 2) - 5, (i + (score * 5)) % SCREEN_HEIGHT, 10, 20])
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
# 키 입력 제어
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
# 장애물 이동
obstacle_y += obstacle_speed
if obstacle_y > SCREEN_HEIGHT:
obstacle_y = -obstacle_height
obstacle_x = random.randint(50, SCREEN_WIDTH - 90)
score += 1
# 난이도 상승: 5점마다 속도 증가
if score % 5 == 0:
obstacle_speed += 1
# 충돌 감지
if player_y < obstacle_y + obstacle_height:
if (player_x > obstacle_x and player_x < obstacle_x + obstacle_width) or \
(player_x + player_width > obstacle_x and player_x + player_width < obstacle_x + obstacle_width):
running = False
draw_player(player_x, player_y)
draw_obstacle(obstacle_x, obstacle_y)
show_score(score)
pygame.display.update()
clock.tick(FPS)
# 게임 오버 화면
screen.fill((0, 0, 0))
over_text = font.render("GAME OVER! Score: " + str(score), True, WHITE)
retry_text = font.render("Press R to Restart", True, WHITE)
screen.blit(over_text, [SCREEN_WIDTH // 6, SCREEN_HEIGHT // 2])
screen.blit(retry_text, [SCREEN_WIDTH // 5, SCREEN_HEIGHT // 2 + 40])
pygame.display.update()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_r:
# 초기화 후 재시작
player_x = (SCREEN_WIDTH // 2) - (player_width // 2)
obstacle_y = -100
obstacle_speed = 5
score = 0
game_loop()
game_loop()
3. 게임의 특징 및 재미 요소
점진적 난이도: 장애물을 피할 때마다 점수가 올라가며, 5점 단위로 장애물의 하강 속도가 빨라집니다. 초반에는 여유롭지만 시간이 지날수록 순발력을 요구합니다.
무한 루프: 충돌 시 게임 오버 화면이 나타나며, 'R' 키를 눌러 즉시 재도전할 수 있어 몰입감을 높였습니다.
동적인 배경: 중앙선이 스코어에 맞춰 움직이도록 설계되어 있어, 실제로 빠른 속도로 도로를 질주하는 듯한 시각적 효과를 줍니다.
4. 게임 조작 방법
왼쪽 방향키: 왼쪽으로 이동
오른쪽 방향키: 오른쪽으로 이동
R 키: 게임 오버 후 재시작
#자동차게임 #파이썬게임 #게임만들기 #Pygame #코딩기초 #레이싱게임 #코딩독학 #프로그래밍 #재미있는게임
'IT' 카테고리의 다른 글
| 갤럭시S26 울트라 가격 나왔다! 최대 16만원 오를듯 사전예약 혜택 잡아할 이유 (0) | 2026.02.13 |
|---|---|
| 컴퓨터 모니터 키보드 computer Monitor keyboard (0) | 2026.02.02 |
| 무인항공기 드론 Aircraft System (1) | 2026.01.30 |
| [파이썬] 숫자 슬라이딩 퍼즐 게임 코드 (0) | 2026.01.27 |
| 드디어 올 것이 왔다, 갤럭시 S26 시리즈 총정리: 당신의 일상을 뒤바꿀 혁신인가? (0) | 2026.01.15 |
| 2026년 압도적 성능의 정점: 샤오미 16 및 15 울트라 상세 분석 (2) | 2026.01.14 |
| [원피스 1169화 리뷰] 아버지의 눈물과 샹크스의 약속, 엘바프의 진실이 밝혀지다 (0) | 2025.12.20 |
| [2025 연말 특집] 일본 콘텐츠 시장 결산: 차트를 지배하는 '퀸'들과 12월의 뜨거운 신작들 (0) | 2025.12.18 |