에피소드 04 (PLAY) 바람의 벽: 세상의 경계를 알다

에피소드 4 — 바람의 벽: 세상의 경계를 알다

1. MAKE — “왜 우리 비행기는 사라지는 거야?”

“잠깐! 잠깐잠깐잠깐—!!” 딕이 비명을 질렀다. 세이와 나는 동시에 모니터를 바라봤다. 우리의 비행기 코러호는 화면 오른쪽 끝으로 쭉 날아가더니… 그대로 **쑥—!** 하고 사라졌다.

딕이 책상 위로 엎드렸다. “아니 이게 말이 돼? 화면 밖으로 사라지는 비행기라니…! 이건 비행기가 아니라 도망자잖아!”

세이가 태블릿을 두드리며 말했다. “아냐, 도망자가 아니라… ‘세상이 끝난 거지.’”

“세상이 끝났다구?!” 딕이 더 난리를 부렸다.

나는 웃으며 말했다. “딕, 침착해. 이건 ‘세상의 경계’를 아직 안 만든 거야. 우리 비행기한테 아직은 ‘여기까지가 화면이다’라는 걸 알려주지 않은 거지.”

세이가 고개를 끄덕였다. “그래. 우리가 지금까지 만든 건 움직임이야. 근데 움직임만 있으면… 세상에서 ‘떨어져 버려’.”

딕은 갑자기 눈이 반짝였다. “그럼 오늘은 ‘세상의 벽’을 만드는 날?”

나는 힘차게 고개를 끄덕였다. “맞아. 우리 비행기는 이제 ‘세상이 어디까지인지’ 알게 될 거야.”

2. PLAY — 좌표와 벽을 이해하기

나는 새 종이를 꺼내 ‘세상의 지도’를 그렸다. Canvas의 네 모서리를 점으로 찍고, 사각형을 그려 설명했다.

“봐, 이 네모가 우리가 만든 하늘이야. 여기가 (0,0), 여기가 오른쪽 끝, 여기가 아래 끝.”

세이가 덧붙였다. “그러니까 좌표로 보면, 비행기의 x 값이 0보다 작아지면 왼쪽 너머로 떨어지고, canvas.width보다 커지면 오른쪽 너머로 떨어지는 거지.”

딕이 손으로 종이를 톡톡 치며 말했다. “이게… 세계의 벽이네?”

“정확해!”

우리는 곧바로 코드로 들어갔다.


// 비행기 위치 업데이트
x += vx;
y += vy;

// 세상의 벽
if (x < 0) x = 0;
if (x + width > canvas.width) x = canvas.width - width;
if (y < 0) y = 0;
if (y + height > canvas.height) y = canvas.height - height;

“오오오—!!” 딕이 외쳤다. “이제 안 사라진다!! 화면 끝에서 멈춰!”

세이가 미소 지었다. “벽이 생긴 거니까.”

나는 조금 더 욕심내서 말했다. “딕, 멈추는 것 말고 다른 방법도 있어.”

“예를 들면??”

“튕기게 만들 수도 있고, 속도를 줄일 수도 있지.”

딕이 팔을 번쩍 들었다. “이제 재밌어지는데?”

세이는 가볍게 웃으며 말했다. “이제 진짜 비행기다. 세상이 있고, 경계가 있고, 그 안에서 리온이 조종하고, 딕이 실험하고.”

3. PLAY — 벽과 충돌 실험하기

우리는 더 실험하기로 했다.

3-1. 벽에서 튕기기


if (x < 0 || x + width > canvas.width) {
  vx = -vx;
}
if (y < 0 || y + height > canvas.height) {
  vy = -vy;
}

딕이 박수쳤다. “오오오! 튕겨!! 우와!! 부딪히면 ‘탕탕탕’ 튀어!”

세이가 팔짱을 꼈다. “현실적이진 않지만… 재밌긴 하다.”

3-2. 벽에 닿으면 색 변하기


if (x <= 0 || x + width >= canvas.width) {
  color = "orange";
}

딕이 웃음 터졌다. “와, 벽에 닿으면 ‘어? 아파!’ 하고 색 바뀌는 느낌!”

나는 세이에게 말했다. “이런 실험들은 나중에 ‘폭풍’ 만들 때 도움이 돼.”

세이가 고개를 끄덕였다. “맞아. 충돌 조건은 곧 장애물 조건이니까.”

4. DREAM — “그러면 다음은…?”

충돌과 경계를 배운 세 아이는 어느새 더 큰 상상을 시작했다.

“리온, 우리 이제 ‘벽’도 만들었고… 비행기가 사라지지도 않고…” 세이가 말했다.

딕이 끼어들었다. “그럼 다음은 ‘구름 몬스터’ 만들어보는 거지? 아니면 회전하는 바람폭풍? 아님 거대한 벽?”

나는 웃었다. “딕, 잠깐만. 우선 ‘구름’부터 만들자. 그리고 그 구름을 부딪히면… 어떤 일이 벌어질까?”

세이가 곧바로 답했다. “충돌 조건! 오늘 배운 걸 그대로 쓰면 돼.”

딕이 두 팔을 번쩍 들었다. “좋아!! 그럼 다음 편은 ‘구름의 등장’이다!”

나는 노트에 적었다. ‘에피소드 5: 구름이 다가온다’

5. Q&A

QA
비행기가 왜 화면 밖으로 사라졌나요?세상의 경계(좌표 조건)가 없었기 때문이에요.
비행기를 멈추게 할 수 있나요?x와 y의 값을 0~canvas 범위 안에 고정하면 돼요.
튕기게 하려면?vx 또는 vy를 -vx로 반전시키면 됩니다.
충돌 조건은 어디에 쓰이나요?장애물, 몬스터, 아이템 등 모든 요소에 사용돼요.
실제로 비행기는 어떻게 경계를 알까요?센서, GPS, 기압, 거리 감지 시스템 등을 사용해요.

6. 영어 요약 (500자)

In Episode 4, Leon, Sey, and Dic learn that their airplane disappears because the world they created has no boundaries yet. By adding simple coordinate-based conditions, they teach Corer One, their small coded aircraft, where the edges of the sky are. Through playful experiments—bouncing off walls, changing colors on impact, and testing different reactions—they begin to understand collision logic. This knowledge will guide them toward creating clouds, obstacles, and eventually the unpredictable storms ahead. Today they learned the rules of their world; next, they will face what lies within it.

Powered by Blogger.