본문 바로가기

스크래치/자율주행자동차

스크래치 아두이노 벽돌깨기 게임 3

반응형

벽돌깨기 게임 만들기

스크래치로 벽돌깨기 게임 만들기를 계속 배워보겠습니다. 스크래치로 벽돌깨기 게임을 잘 만들기 위해서 <방송하기> 블럭을 잘 사용해야 합니다. 여러 가지 메시지를 보내고 메시지에 따라서 해야할 일을 코딩하면 쉽게 벽돌깨기 게임을 만들 수 있습니다.

 

우선 벽돌이 내려가도록 코딩을 하겠습니다.

그림 2-55 [공이 땅에 닿았다] 변수 값 바꾸기

 

[공이 땅에 닿았다] 변수 값이 1이 되었다가 다시 0이 되는 겁니다. 마치 스위치를 켜고 끄는 것과 같습니다. 스위치가 켜지면(변수 값이 1) 벽돌이 내려가고 새로운 벽돌을 복제합니다. 스위치가 꺼지면(변수 값이 0) 벽돌이 내려가는 것을 멈추고 복제를 하지 않습니다.

그림 2-56 [공이 땅에 닿았다] 변수 추가하기

 

그런데 그림 2-57처럼 코딩을 하면 문제가 생깁니다.

그림 2-57 y좌표를 –20만큼 바꾸기

 

벽돌이 너무 많이 내려오게 됩니다.

그림 2-58 너무 많이 내려온 벽돌

 

어떻게 문제를 해결할까요? 변수 값을 순식간에 바꾸는 겁니다. 아주 조금만 기다리는 것이죠. 이렇게 기다리는 시간을 아주 작게 하면 벽돌이 딱 20만큼만 내려오게 됩니다.

그림 2-59 짧은 시간만 기다리기

 

이제 벽돌을 새롭게 복제합니다.

그림 2-60 벽돌 복제하기

 

그렇다면 언제 게임이 끝날까요? 벽돌이 바닥에 닿으면 게임은 끝나게 됩니다. 그림 2-61처럼 <게임 끝>이라고 방송을 하고, 초음파 센서로 게임 만들기에서 공부했던 것처럼 몇 초 정도 기다리면 됩니다.

그림 2-61 <게임 끝> 방송하기

 

그리고 공, 화살표는 더 이상 움직이지 않도록 합니다. 공과 화살표에 그림 2-62와 같이 코딩을 합니다. 스크립트는 스프라이트에 내리는 명령어인데 다른 스크립트를 멈추면 앞에서 했던 명령어를 더 이상 하지 않게 됩니다.

그림 2-62 스프라이트에 있는 다른 스크립트 멈추기

 

바닥에 닿았을 때 방송이 잘 안 되는 경우가 있습니다. 이럴 때는 y좌표 값을 이용하면 됩니다. 복제된 벽돌의 y좌표 값이 –140보다 작으면 바닥에 닿은 것이니 <게임 끝> 방송을 합니다.

그림 2-63 y좌표가 작으면 <게임 끝> 방송하기

 

게임이 끝나면 GAME OVER 글씨가 나오게 코딩을 하겠습니다. 글씨를 하나 쓰고 게임을 시작할 때는 숨깁니다.

그림 2-64 스프라이트 숨기기

 

<게임 끝> 방송을 받으면 가운데로 이동하고 맨 앞으로 나와서 무대에 나타나게 합니다. 그리고 크기가 커졌다가 작아지는 것을 반복하도록 코딩을 합니다.

그림 2-65 크기 바꾸기

 

게임 점수도 만들어 봅시다. 공을 선택하고 그림과 같이 코딩합니다. 공이 벽돌에 닿을 때마다 점수를 1씩 더해줍니다.

그림 2-66 점수 만들기

 

그리고 효과음도 넣어줍니다. 배경음악까지 넣으면 더욱 멋진 게임이 됩니다. 배경을 선택하고 그림 2-68과 같이 코딩을 합니다.

그림 2-67 효과음 넣기

 

그림 2-68 배경음악 넣기

 

자, 마지막으로 화살표가 가리키는 방향으로 서보모터가 회전하게 코딩하겠습니다. 서보모터를 피더블유엠(PWM) 디지털 9번 핀과 연결합니다. 그리고 각도를 0으로 정합니다. 그리고 브래킷과 그림과 같이 연결합니다.

그림 2-69 서보모터 브래킷 연결하기

 

서보모터는 각도를 180-(화살표 방향 변수 값)으로 하면 화살표가 가리키는 방향으로 서보모터가 회전을 합니다. 서보모터 브래킷을 연결하는 방향에 따라서 각도를 다르게 정해줘야 합니다.

그림 2-70 서보모터 각도 설정하기

 

게임을 원하는 대로 잘 만들었나요? 책에 있는 내용을 잘 이해하고 차근차근 벽돌깨기 게임을 만들 수 있다면 여러분의 코딩 실력은 정말 많이 발전한 것입니다. 특히 리스트 부분은 여러 번 반복해서 읽기 바랍니다. 우리는 스크래치로 벽돌깨기 게임을 아주 멋지게 만들었습니다. 생각하는 힘이 점점 커지는 것을 느낄 수 있나요?

반응형