파이썬 마법 학교 45강: 요리조리 피해라! 아슬아슬 ‘우주선 피하기’ 게임

안녕하세요! 가족과 함께하는 스마트 라이프입니다. 지난 시간 벽돌 깨기 마법은 성공했나요? 오늘은 우리 주인공 우주선을 조종해서 하늘에서 떨어지는 운석들을 피하는 ‘서바이벌 게임’을 만들어 볼 거예요. 긴장감 넘치는 우주 모험을 떠날 준비 되셨나요?

파이썬 마법 학교 45강: 요리조리 피해라! 아슬아슬 ‘우주선 피하기’ 게임

1. 게임의 핵심: “어디서 나타날지 몰라!”

벽돌 깨기 게임은 벽돌이 가만히 있었지만, 이번 게임은 적(운석)들이 계속 움직여요. 게다가 언제, 어디서 나타날지 모르죠! 이때 필요한 것이 바로 ‘random(랜덤)’ 마법이에요. 파이썬에게 “-200에서 200 사이의 숫자 중 아무거나 골라서 거기서 운석을 떨어뜨려 줘!”라고 부탁하는 것이죠.

2. 우주선의 엔진: 키보드 이벤트

우주선이 운석을 피하려면 아주 빠르게 움직여야 해요. 우리는 화살표 키를 눌러 우주선을 왼쪽, 오른쪽으로 옮길 거예요. screen.onkeypress()라는 명령어를 사용하면 키보드 신호를 빛의 속도로 읽어서 우주선을 움직일 수 있답니다.

3. 실전 연습: 운석 피하기 코드

코드를 입력하고 얼마나 오래 버틸 수 있는지 테스트해보세요!

import turtle
import random

# 1. 무대와 우주선 설정
screen = turtle.Screen()
screen.bgcolor("navy")
player = turtle.Turtle("triangle")
player.color("white")
player.penup()
player.goto(0, -150)

# 2. 운석 만들기
enemy = turtle.Turtle("circle")
enemy.color("gray")
enemy.penup()
enemy.goto(0, 200)

# 3. 우주선 움직이기 함수
def move_left(): player.setx(player.xcor() - 20)
def move_right(): player.setx(player.xcor() + 20)

screen.listen()
screen.onkeypress(move_left, "Left")
screen.onkeypress(move_right, "Right")

# 4. 게임 메인 루프
def play():
    # 운석이 아래로 떨어져요
    enemy.sety(enemy.ycor() - 5)

    # 운석이 바닥에 닿으면 다시 위에서 나타나요 (랜덤 마법!)
    if enemy.ycor() < -200:
        x = random.randint(-200, 200)
        enemy.goto(x, 200)

    # 충돌 확인: 우주선과 운석이 만나면?
    if player.distance(enemy) < 20:
        player.write("💥 으악! 충돌!", font=("Arial", 20, "bold"))
        return # 게임 종료

    screen.ontimer(play, 20)

play()
turtle.done()
파이썬 마법 학교 45강: 요리조리 피해라! 아슬아슬 ‘우주선 피하기’ 게임

4. 더 흥미진진한 우주 전쟁을 위해!

게임이 너무 쉽다면 이런 기능을 추가해보세요!

  • 운석 비가 내려와요: 운석(enemy)을 리스트에 담아 3~5개로 늘려보세요.
  • 점점 빨라지는 속도: 시간이 지날수록 운석이 떨어지는 속도(ycor – 5)를 숫자를 키워보세요.
  • 보호막 아이템: 하늘에서 가끔 노란색 별이 떨어지게 하고, 그걸 먹으면 한 번은 충돌해도 괜찮게 만들어보세요!

5. 가족과 함께하는 ‘최고 기록 챌린지’

오늘 완성한 게임으로 가족 대회를 열어보세요. 스톱워치로 누가 가장 오래 살아남는지 기록을 재는 거예요. “아빠는 30초 버텼어! 너는 코드를 고쳐서 운석 크기를 작게 만들었네? 그것도 아주 똑똑한 게임 패치 방법이야!”라고 칭찬해 주세요. 아이는 수치(코드) 하나로 게임의 난이도가 바뀌는 즐거움을 느끼며 진정한 게임 개발자로 성장하게 됩니다.

마치며: 위기를 기회로 만드는 코딩

오늘 우리는 무작위로 닥쳐오는 위기(운석)를 피하는 로직을 배웠습니다. 랜덤 마법을 쓰면 매번 할 때마다 새로운 게임이 된다는 사실, 정말 멋지지 않나요? 다음 시간에는 5기 시리즈의 마지막! 꼬리를 길게 늘리며 먹이를 먹는 ‘추억의 지렁이(Snake) 게임’ 마법을 배워보겠습니다!