안녕하세요! 가족과 함께하는 스마트 라이프입니다. 드디어 기다리고 기다리던 5기 시리즈 [나만의 미니 게임 천국]이 문을 열었습니다! 첫 번째로 만들어볼 게임은 화면을 이리저리 뛰어다니는 공을 막대로 쳐내는 ‘핑퐁 게임’이에요. 간단해 보이지만 게임의 핵심 원리가 모두 담겨 있답니다!

1. 게임의 규칙: “벽에 닿으면 튕겨라!”
핑퐁 게임의 가장 중요한 마법은 ‘반사’예요. 공이 화면 위쪽 벽에 닿으면 아래로, 왼쪽 벽에 닿으면 오른쪽으로 방향을 바꿔야 하죠. 이걸 코딩으로는 ‘조건문(if)’을 써서 “공의 위치가 화면 끝인가?”를 계속 물어보는 방식으로 만든답니다.
2. 게임을 만드는 도구: Turtle 모듈
우리의 오랜 친구 거북이(Turtle)를 기억하시나요? 거북이는 그림만 그리는 게 아니라 멋진 게임 캐릭터도 될 수 있어요. 오늘은 거북이를 ‘공’과 ‘막대’로 변신시켜 볼 거예요.
- shape(“square”): 거북이를 네모난 막대로 변신!
- onkeypress(): 키보드로 막대를 위아래로 움직이기!
- distance(): 공이 막대에 닿았는지 확인하기!
3. 실전 연습: 핑퐁 공 튀기기 코드
직접 코드를 입력하고 공이 튀는 모습을 관찰해 보세요!
import turtle
# 1. 게임 화면 설정
screen = turtle.Screen()
screen.title("Classic Pong Game")
screen.bgcolor("black")
screen.setup(width=600, height=400)
screen.tracer(0)
# 2. 공 만들기
ball = turtle.Turtle()
ball.shape("circle")
ball.color("white")
ball.penup()
ball.dx = 2 # 공의 X축 속도
ball.dy = 2 # 공의 Y축 속도
# 3. 게임 엔진 (무한 반복)
while True:
screen.update()
# 공 이동시키기
ball.setx(ball.xcor() + ball.dx)
ball.sety(ball.ycor() + ball.dy)
# 벽에 부딪히면 튕기기 (위아래 벽)
if ball.ycor() > 190 or ball.ycor() < -190: ball.dy *= -1 # 벽에 부딪히면 튕기기 (좌우 벽) if ball.xcor() > 290 or ball.xcor() < -290:
ball.dx *= -1
turtle.done()

4. 게임을 더 재밌게 만드는 ‘마법의 양념’
방금 만든 게임은 공이 혼자 튀어 다니기만 하죠? 여기에 이런 기능을 추가해 보세요!
- 막대 추가: 키보드로 움직이는 막대를 만들어 공을 쳐내 보세요.
- 속도 증가: 공을 칠 때마다
ball.dx와ball.dy를 조금씩 키워보세요. 점점 빨라져서 짜릿해질 거예요! - 점수 표시: 벽에 닿지 않고 막대로 공을 칠 때마다 점수가 올라가게 해보세요.
5. 가족과 함께하는 ‘핑퐁 챌린지’
아이와 함께 막대를 하나씩 잡고 2인용 게임으로 개조해 보세요. 왼쪽 막대는 ‘W, S’ 키로, 오른쪽 막대는 ‘화살표’ 키로 움직이게 하는 거죠. “아빠, 공의 속도를 5로 바꿨으니까 조심하세요!”라고 말하며 게임의 난이도를 스스로 조절(밸런싱)하는 과정을 통해 아이는 단순한 게이머를 넘어 게임 설계자의 관점을 갖게 됩니다.
마치며: 이제 여러분은 게임 제작자!
오늘 우리는 핑퐁 게임의 기초인 공의 움직임과 반사 원리를 배웠습니다. 내가 짠 코드 한 줄에 공의 운명이 바뀌는 게 정말 신기하지 않나요? 다음 시간에는 공을 떨어뜨리지 않고 막대로 받아내는 ‘벽돌 깨기 대작전’ 마법을 배워보겠습니다!



