이번 강의를 끝으로 청기 / 적기 게임의 첫 번째 완성형을 만들게 됩니다. 전 강의에서는 사용하지 않았던 두 개의 버튼 스위치를 위한 세팅을 하고, 정답을 맞히는 코드를 작성합니다. loop 속의 코드는 한 번의 게임입니다. 실제로는 무한 반복하기 때문에 계속해서 게임을 하게 되겠죠.
주어진 코드의 동작 과정은 다음과 같습니다.
먼저 두 개의 변수를 추가합니다. 이는 스위치의 핀 번호를 담을 변수입니다.
적기 때 누를 버튼을 7번, 청기 때 누를 버튼을 6번으로 할당합니다.
setup 에 두 버튼을 INPUT_PULLUP 으로 설정합니다.
먼저 rand, clicked, right 변수 세 가지를 정하고 초기화시킵니다. loop 함수 안의 코드는 한 게임이 기준이기 때문입니다.
rand 변수에는 홀수(1), 짝수(0)가 담기게 되며 이번 게임이 청기, 적기인지 상태를 저장하기 위함입니다. 이 변수는 청기 / 적기를 켤 때와 정답을 맞힐 때 사용됩니다.
clicked 는 버튼이 눌렸는지 눌리지 않았는지는 확인하는 변수로 0은 눌리지 않음. 1을 눌림으로 정했습니다.
right 는 정답을 맞혔는지를 확인하는 것으로 마지막까지 right 변수의 값이 0이라면 오답. 1이라면 정답이 됩니다.
버튼이 클릭 되기 전까지 while 문이 무한 반복됩니다.
청기 버튼, 적기 버튼을 누르면 clicked 변수의 값이 1로 바뀌며 while 문을 빠져나오게 되며, 난수의 값과 비교하여 정답을 맞췄는지, 틀렸는지를 판별합니다. 맞췄을 경우 right 변수의 값은 1로 변하게 됩니다.
이제 사용자가 정답을 맞혔는지 알 수 있으므로. 정답 여부에 따라 녹색 LED를 통해 정답 또는 오답을 표현한 후, 한 게임이 종료되게 됩니다.
loop 함수는 무한 반복되기 때문에 다시 새로운 게임이 시작되게 됩니다.
Practice
기본적인 청기 / 적기 게임을 구현했습니다.
지금까지 배운 아두이노와 C 언어에서 배운 내용을 응용하여 다양하게 게임을 발전시켜 보세요.
정답 표현 방식을 개선 할 수도 있고 새로운 LED를 추가하여 정답 여부를 다르게 표시할 수도 있을 거에요.