[아두이노야 놀자]<18>E-센서보드와 스피드 입력 게임

[그림 1] 스피드 입력 게임.
<[그림 1] 스피드 입력 게임.>

아두이노와 E-센서보드를 활용해 네 가지 색을 지닌 4개 버튼을 이용한 '스피드 입력 게임'을 만들어 봅시다. [그림 1]과 같이 가장 왼쪽에 있는 주사위 색과 똑같은 색 버튼을 누르는 게임입니다. 올바른 버튼을 누르면 다음 주사위들이 왼쪽으로 옮겨옵니다. 제한시간 20초 내에 최대한 빨리 주사위 색을 버튼으로 눌러 많은 점수를 얻어야 이기는 게임을 만들겠습니다.

준비물은 아두이노와 E-센서보드, USB케이블입니다. 아두이노 보드와 센서보드를 꾹 눌러서 완전히 결합합니다. 다음 엔트리 하드웨어(HW) 연결 프로그램에서 'E-센서보드(유선연결)'로 연결합니다. 엔트리봇을 삭제하고 '주사위' 오브젝트를 불러옵니다. 주사위 x좌표는 -150, 크기는 50으로 설정합니다.

[그림 2] 변수 추가하기.
<[그림 2] 변수 추가하기.>

[그림 2]처럼 변수 3개를 만듭니다. '버튼 색깔'은 누른 버튼 색을 저장하는 용도입니다. 색깔 변수는 왜 따로 분류돼 있을까요. 변수를 추가할 때 '이 오브젝트에서만 사용'에 체크했기 때문입니다. 이러한 변수를 '지역변수'라고 부릅니다. 다른 오브젝트에서는 이 변수를 다룰 수 없고, 심지어 해당 오브젝트 복제본끼리 각각 변수를 가지게 됩니다.

[그림 3] 신호 추가.
<[그림 3] 신호 추가.>

주사위 색을 맞췄을 때 다음 문제로 옮겨가기 위해 [그림 3]과 같은 신호 하나를 추가합니다. 색을 저장해놓을 리스트도 [그림 4]처럼 추가합니다.

[그림 4] 리스트 추가.
<[그림 4] 리스트 추가.>

리스트 4개의 항목은 위에서부터 순서대로 노란색, 빨간색, 초록색, 파란색입니다.

[그림 5] 버튼 입력 받기.
<[그림 5] 버튼 입력 받기.>

[그림 5]와 같이 버튼을 누르면 어떤 색의 버튼을 눌렀는지 확인하고, 색에 따라 '버튼 색깔' 값을 정해줍니다. 아무 버튼도 누르지 않았다면 '버튼 색깔'을 0으로 정해줍니다. 게임이 시작되면 초시계를 시작합니다. 주사위 오브젝트는 100 간격으로 6개 복제본을 만듭니다. 주사위 원본 x좌표는 450이 돼있을 것입니다. 게임 시작 20초가 지나면 초시계와 모든 코드를 멈춰 게임을 끝냅니다.

[그림 6] 복제본 위치와 색깔 정하기.
<[그림 6] 복제본 위치와 색깔 정하기.>

[그림 6]처럼 생성된 복제본은 우선 왼쪽으로 100만큼 이동합니다. 새 복제본은 여전히 화면 밖에 있을 거예요. '색깔'은 1~4 사이 무작위 수로 정해주고, 복제본 색깔을 '색깔' 변수에 따라 정해줍니다. 그러면 노랑, 빨강, 초록, 파랑 중 무작위로 색깔이 바뀝니다.

[그림 7] 정답 입력받기.
<[그림 7] 정답 입력받기.>

이어 정답을 입력할 위치에 들어올 때까지 기다립니다. 하나씩 맞추면 오른쪽에 있던 주사위들이 왼쪽으로 이동해오니까요. 그리고 버튼을 누르지 않았는지 확인합니다. 이 과정을 거치지 않으면 다음 주사위에도 정답이 입력되기 때문에 버튼을 다시 누르도록 만들어줘야 합니다. [그림 7]과 같이 문제를 맞히면 '다음색깔' 신호를 보내고, 맞힌 주사위는 삭제해줍니다.

[그림 8] 다음 주사위 이동하기.
<[그림 8] 다음 주사위 이동하기.>

주사위와 주사위 모든 복제본은 '다음색깔' 신호를 받을 것입니다. [그림 8]처럼 x좌표를 이용해 원본 주사위를 찾습니다. 원본 주사위는 주사위 색을 맞출 때마다 계속 색을 입력할 수 있도록 새 복제본을 생성합니다. 나머지 복제본은 사용자가 주사위의 색을 맞추도록 하기 위해 왼쪽으로 100씩 이동합니다. 이렇게 모든 코드에 연결고리가 생겼습니다.

김지원 네이버커넥트재단 연구원

위방향 화살표