관찰하고, 눌러 보고, 비밀을 찾아요

괴물 놀이공원의
바쁜 하루

괴물 놀이공원에는 인기 놀이기구가 있습니다. 손님이 한 명씩 들어오면 줄이 길어지고, 놀이기구를 탄 손님은 줄에서 빠져나갑니다.

그런데 이상합니다. 아무도 안내판을 누르지 않았는데 안내가 저절로 바뀝니다.

놀이공원 입구에서 세 괴물 손님이 줄을 서고 안내원이 탑승 방향을 알려 주는 모습

먼저 해 보기

작품을 플레이하며 살펴보세요

손님 수와 안내판이 어떻게 달라지는지 관찰하며 오른쪽 문제를 한 문제씩 풀어 보세요.

① 시작하기 ② 한 명 입장 눌러보기 ③ 한 명 탑승 눌러보기

관찰 문제

1 / 7

답을 하나 고르세요

관찰에서 발견으로

놀이공원의 첫 번째 비밀

손님이 들어오거나 탑승할 때, 안내판은 다음 순서로 움직입니다.

손님이 들어옴
대기 인원 변경
안내판이 확인
안내 변경

그리고 다시 확인하고, 또 확인합니다.

상황에 맞게 고르기

조건을 사용하면 상황에 따라 다른 행동을 정할 수 있어요.

변화를 놓치지 않기

계속 확인하면 상황이 바뀌었을 때 프로그램도 자동으로 반응해요.

다음 비밀

손님을 자동으로 줄 세우는 비밀

손님이 여러 명 들어와도 서로 겹치지 않고 나란히 섭니다. 손님들의 가로 위치에는 어떤 규칙이 있을까요?

첫 번째 손님 x 70, 두 번째 손님 x 100, 세 번째 손님 x 130으로 오른쪽으로 30씩 증가하는 모습
세 손님의 위치를 천천히 비교해 보세요.

손님이 한 명 늘 때마다 x좌표는 얼마나 바뀌나요?

한 걸음 더 · x좌표

x좌표는 캐릭터의 가로 위치예요

가운데 0을 기준으로 왼쪽에는 -150, -100, -50이 있고 오른쪽에는 50, 100, 150이 있는 x좌표 가로축
x좌표는 캐릭터의 가로 위치를 나타냅니다.

오른쪽으로 갈수록 숫자가 커지고, 왼쪽으로 갈수록 숫자가 작아집니다.

직접 계산하기

첫 자리에서 30씩 움직여 볼까요?

첫 번째 손님x = 70
두 번째 손님70 + 30 = 100
세 번째 손님70 + 30 + 30 = 130

칸 수의 비밀

왜 손님의 순서에서 1을 뺄까요?

첫 번째 → 0칸 두 번째 → 1칸 세 번째 → 2칸

첫 번째 손님은 첫 자리에서 한 칸도 더 움직이지 않아야 합니다. 그래서 1 - 1 = 0에서 시작해요.

이동할 칸 수 = 대기인원 - 1

반대 방향

왼쪽 줄에서는 무엇이 달라질까요?

0을 기준으로 왼쪽은 -30씩, 오른쪽은 +30씩 이동하는 좌표 방향 비교
방향이 바뀌면 30 앞의 부호도 달라집니다.

오른쪽으로 한 칸 가면 +30, 왼쪽으로 한 칸 가면 -30

현재 줄에서의 순서

이미 탄 사람을 빼면 몇 번째인지 알 수 있어요

지금까지 나온 손님 5명에서 이미 탑승한 2명을 빼면 현재 줄에서 세 번째가 되는 모습
지금까지 나온 손님의 번호와 현재 줄에서의 순서는 다를 수 있어요.

대기순서 = 줄번호 - 탑승누적

마지막에 수식으로 연결하기

우리가 찾은 규칙을 한 줄로 모아 봐요

첫 번째는 0칸, 두 번째는 1칸, 세 번째는 2칸이라는 규칙에서 대기인원 빼기 1과 30을 사용해 전체 x좌표 식으로 연결하는 과정
그림에서 찾은 규칙을 컴퓨터가 한 번에 계산하도록 줄여 쓴 것입니다.

한 칸 = 30

이동 거리 = (대기인원 - 1) × 30

x = 70 + ((대기인원 - 1) × 30)

실제 코드에서 다시 찾기

아까 발견한 숫자와 변수를 찾아보세요

손님 입장 신호를 받았을 때
    x 좌표를 70 + ((대기인원 - 1) × 30) 으로 정하기

복제본이 처음 생성되었을 때
    대기순서를 줄번호 - 탑승누적으로 정하기
    왼쪽 첫 자리에서 대기순서에 따라 -30씩 이동하기
  • 첫 자리 70은 어디에 있나요?
  • 한 칸 30은 어디에 있나요?
  • 왼쪽의 -30은 어디에 있나요?
  • 대기인원은 어디에서 사용되나요?

마지막 확인

비밀을 모두 찾았나요?

확인 문제

1 / 3

답을 하나 고르세요

오늘의 발견

세 가지를 기억해요

조건을 사용하면 상황에 따라 다른 행동을 만들 수 있습니다.

반복해서 확인하면 프로그램이 변화에 자동으로 반응합니다.

좌표에도 규칙을 만들면 여러 캐릭터를 자동으로 줄 세울 수 있습니다.