6주차 반응 속도 게임(블록코딩)
6주차에서 우리는 도트 매트릭스와 버튼을 이용해 반응 속도 게임기를 만들어 볼 것 입니다.
반응 속도 게임기는 두 사람이 함께 하는 게임입니다.
도트 매트릭스에 "O" 모양이 뜨는 순간 버튼을 누르고 먼저 누른 사람 쪽으로 화살표 모양을 출력하는 게임입니다.
누가 반응 속도가 더 빠른지 게임을 통해 확인해봅시다!
1. 도트 매트릭스로 동그라미, 화살표 모양 출력하기
1-1. [실습] 동그라미 모양 출력하는 함수 만들기
우리는 저번 시간 도트 매트릭스를 이용해 다양한 모양을 출력해보았습니다.
일단 도트 매트릭스에 동그라미 모양을 출력하는 함수를 만들고 실행해봅시다.
"O" 모양은 쉽게 위의 블록을 이용해 출력해봅시다!
1-2. [실습] 왼쪽 화살표 만들기
왼쪽 화살표 모양을 출력하는 정의블록을 만들어봅시다.
단, 도트매트릭스가 세로로 조립되어야하기 때문에 아래 사진처럼 도트매트릭스를 두고 동그라미 모양을 출력하도록 만들어봅시다.
위의 그림을 보고 왼쪽 화살표로 표시할 부분 LED를 ON시켜 왼쪽 화살표 모양이 표시될 수 있도록 코딩해봅시다.
1-3. [실습] 오른쪽 화살표 만들기
위의 1-2 실습을 참고하여 오른쪽 화살표를 출력하는 함수도 만들어 실행해봅시다.
2. 난수 블록 사용하기
아두이노에서 난수 블록 "[ ] 부터 [ ] 사이 임의의 수" 블록을 사용해봅시다.
난수 블록을 사용하는 이유는 동그라미 모양을 무작위 시간에 띄울 수 있도록 코딩하기 위함입니다.
"[min] 부터 [max] 사이 임의의 수" 으로 사용할 수 있으며 (min ~ max) 사이의 값을 랜덤으로 얻을 수 있습니다.
예를 들어, "[1] 부터 [10] 사이 임의의 수" 라면 1~10 사이의 랜덤 값를 반환할 수 있습니다.
2-1. 임의의 초만큼 기다렸다가 LED 켜기
난수 블록을 이용해 그 값을 출력하고 그만큼 "기다리기" 블록을 이용해 코드 진행을 지연시켜 봅시다.
2-2. 난수 블록을 이용해 동그라미 모양 출력하기
이번에는 그럼 랜덤 시간으로 동그라미 모양을 출력하는 코드를 작성해 봅시다.
동그라미 모양은 1초만 켜고 0.5~3초 사이 랜덤의 시간 동안 도트 매트릭스가 꺼졌다가 다시 동그라미를 출력하는 프로그램을 작성해봅시다.
3. "[ ] 이(가) 참일 때까지 기다리기" 블록과 작품 완성하기
3-1. [ ] 이(가) 참일 때까지 기다리기
"[ ] 이(가) 참일 때까지 기다리기" 블록에 대해서 배워봅시다.
위 블록은 조건이 "참"이 될 때까지 기다리는 블록입니다.
위 블록 아래에 있는 코드는 [조건]이 "참"이 될 때까지 실행되지 않습니다. [조건]이 참이 되는 순간 아래로 내려가 아래의 코드가 순차적으로 실행됩니다.
3-2. 버튼이 입력될 때까지 기다리기
반응 속도 게임기를 만들기 위해서는 "[ ] 이(가) 참일 때까지 기다리기"과 버튼 관련 블록을 함께 사용해야 합니다.
난수를 이용해 랜덤의 시간을 기다린 후 "O" 모양이 도트 매트릭스에 출력되면 두 명의 사람 중 먼저 버튼을 누른 사람이 승리하는 게임입니다.
"O" 모양을 출력한 후 2개의 버튼 중 하나의 버튼이라도 눌릴 때까지 기다리다가 버튼이 눌리는 순간 아래로 내려가 어떤 사람이 승리했는지 확인하는 코드를 작성하면 됩니다.
3-3. [실습] 반응 속도 게임기 프로그램 완성하기.
자. 이제 배운 문법을 이용해 반응 속도 게임기 프로그램을 완성해봅시다.
- 도트 매트릭스의 LED를 "스마일" 모양으로 출력해주세요.
- 1~5초 사이 무작위 시간을 기다리다가 "O" 모양이 도트 매트릭스에 출력되게 만들어주세요.
- "[ ] 이(가) 참일 때까지 기다리기" 블록을 이용해 버튼 2개 중 어떤 버튼이 눌릴 때까지 기다리도록 만들어주세요.
- 만약 두 버튼 중 하나라도 버튼이 눌렸다면 도트 매트릭스의 LED 전체를 끄고 아래 코드가 실행됩니다.
- 왼쪽 버튼이 눌린다면 "왼쪽 화살표" 모양을 도트 매트릭스에 출력한 후 1초 기다립니다.
- 오른쪽 버튼이 눌린다면 "오른쪽 화살표" 모양을 도트 매트릭스에 출력한 후 1초 기다립니다.
- 위의 과정을 반복합니다.