중급 예제

약간은 익숙하시거나 익숙해지셨나요? 그렇다면 조금더 깊이 다뤄볼까요?

조이스틱모듈-Scratch for Arduino(S4A)

2015-01-28 14:03:01

개요 및 부품 목록

S4A와 아두이노를 이용하여 간단한 게임을 만들어 봅시다. 아두이노에 조이스틱 모듈을 연결하고 S4A에서 아두이노 신호를 받아 용을 움직여 장애물을 피하는 게임을 만들어 보겠습니다.


게임은 간단하게 드래곤을 움직여서 날라오는 장애물을 피하는 게임입니다.

게임 방법은 조이스틱을 이용하여 용을 이동하면서 옆에서 날라오는 돌을 피하시면 됩니다. 돌은 한번 지나갈 때 마다 속도가 조금씩 증가 합니다.

드래곤이 돌과 부딪히면 life가 깍이면서 돌의 속도가 다시 처음 속도로 바뀝니다. life가 0이 되면 게임 오버가 됩니다.

 

 

부품 목록

NO 부품명 수량 상세설명
1 오렌지 보드 1  
2 조이스틱 모듈 1 Keyes_SJoys / KY023
3 점퍼케이블 5  

 

부품명 오렌지 보드 조이스틱 모듈 점퍼케이블
파트

 

하드웨어 making 및 스크레치 만들기

브레드 보드

 

 

회로도

 

 

 

 

순서도


 

 

 

 

 

스크래치 만들기

1. 우선 화면에 있는 아두이노 그림을 숨겨보겠습니다. 

 아두이노가 연결되어 있으면 센서값 나오는 창에 오른쪽 버튼을 누르면 숨기기 메뉴가 있습니다. 이 버튼을 누르면 센서창이 사라집니다.




아두이노 연결이 되지 않으셧으면 검색을 중단하면 검색중 창이 사라집니다.(하지만 어짜피 아두이노 연결을 해야하므로 아두이노를 연결하고 작업하시는게 좋습니다.)



센서창을 숨기고 나서 아두이노 보드 이미지를 줄이거나 바꾸겠습니다. 우선 스프라이트 창에서 아두이노 이미지를 더블 클릭해줍니다. 그리고 나서 모양 탭에서 편집 버튼을 누릅니다.



 

 

 

 

 

밑의 창이 나오면 보드 이미지를 지우거나 크기를 줄인 후 저장을 합니다. 저장을 하면 하면에 흰색 배경만 보이게 됩니다.
 





2. 이번엔 게임의 배경을 넣어 보겠습니다. 우선 스프라이트 창에서 무대를 더블클릭해 줍니다. 그 다음 위에 아두이노 이미지 바꿀 때와 같이 배경 탭을 들어갑니다.
  배경 탭에서 가져오기 버튼을 누르면 맨 마지막 화면과 같이 창이 하나 나옵니다. 여기서 Nature -> underwater 를 선택해 줍니다.(배경을 바꾸고 싶으신 분은 다른 이미지를 선택하시면 됩니다.)
  이미지를 선택하셧으면 기본 흰색 배경은 지워주시면 됩니다.



 




3. 이번엔 화면에 들어갈 유닛들을 넣어보겠습니다. 플레이어가 조종할 용 한마리와 장애물인 돌 1개, 그리고 마지막에 게임 오버시 나오는 GAME OVER 글씨를 넣겠습니다.




스프라이트 창에서 새로운 스프라이트 버튼을 누릅니다. 그럼 두번째 화면 처럼 창이 나옵니다. 여기서 필요한 이미지들을 선택하고 넣어줍니다.
(이 컨텐츠에서 사용한 이미지는 Fantasy -> dragon1-a / Letters -> stone -> 0 / Letters -> scratch -> 게임오버 글자들 입니다.)
(다른 이미지 or 글자 모양을 하실분은 원하시는 모양을 선택하셔서 넣으시면 됩니다.)




모두 넣었으면 밑의 화면 처럼 스프라이트 창에 목록이 나옵니다.




4. 우선 작업하는데 방해가 되는 GAME OVER 글자들을 숨기겠습니다. 화면에서 GAME OVER 글자를 밑의 화면과 같이 자리를 정해 줍니다.(화면에서 글자를 드래그 하면 됩니다.)


그 다음 스프라이트 창에서 GAME OVER 글자 중 하나 선택합니다.

그리고 나서 맨 왼쪽에 명령어 창에서 형태 탭에 보시면 보이기와 숨기기 블럭이 있습니다.



이 숨기기랑 보이기 블럭을 가운데 창에 드래그 해서 빼신 후 숨기기 버튼을 누르면 해당 글자가 화면에서 사라집니다. 이것을 GAME OVER 글자 모두 해주시면 화면에 글자가 모두 안보이게 됩니다.




5. 글자를 다 숨겼으면 남은 유닛들의 동작을 넣겠습니다.

우선 제일 처음으로 아두이노에서 입력받은 값을 이용하여 움직이는 것부터 하겟습니다.

스프라이트 창에서 아두이노를 더블클릭합니다.(크기를 매우 줄이셧으면 스프라이트 목록에서도 매우 작게 있습니다.

아두이노 스크립트에 밑의 화면과 같이 만들어 줍니다. 황토색 블럭은 제어탭에서 녹색 블럭은 연산 탭, 파란색 블럭은 동작 탭에서 찾으시면 됩니다.

연산식에 기준 값은 조이스틱이 가운데 있을 때 값을 기준으로 약간 오차를 두고 정하시면 됩니다.

위에 회로도와 같이 연결하셧으면 아날로그 0번값이 세로 이동, 아날로그 1이 가로 이동에 영향을 주게 됩니다.




그 다음은 플레이어 유닛인 드래곤을 더블클릭 하신후 밑의 화면과 같이 만들어 줍니다.

아두이노에서 입력 받은 값으로 보낸 명령을 받고 해당 명령에 맞게 움직입니다.




마지막은 장애물 유닛을 세팅해 보겠습니다. 마찬가지로 스프라이트 창에서 장애물을 더블 클릭하신 후 밑의 화면과 같이 블럭을 만들어 줍니다. 마찬가지로 황토색 블럭은 제어탭에서 녹색 블럭은 연산 탭, 파란색 블럭은 동작 탭에서 주황색 탭은 변수, 청록색 탭은 관찰 탭에서 찾으시면 됩니다.

게임이 시작되면 장애물이 오른쪽 끝에(높이는 랜덤으로) 나타나고 왼쪽으로 이동하게 됩니다. 왼쪽 끝까지 이동했으면 점수를 1점 증가시키고 속도를 0.5 증가 시킨 후 다시 오른쪽 끝으로 가서 왼쪽으로 이동합니다.

장애물이 왼쪽으로 이동 중 드래곤과 부딪히면 메세지를 띄우고 LIFE를 1줄이면서 장애물 속도가 기본속도로 돌아갑니다. 만약 LIFE가 0이 되면 die 메세지를 보내고 게임을 멈춥니다.(die메세지는 GAME OVER 메세지를 화면에 출력하고, 드래곤과 장애물 유닛을 화면에서 숨깁니다.)



 * 변수 만드는 방법
변수는 변수 탭에서 변수 만들기를 누르면 이름을 입력하는 것으로 만들어 집니다. 변수를 만들게 되면 화면 왼쪽 위에 변수명과 변수값이 나옵니다. 필요한 값은 남겨 두고 필요 없는 값들은 오른쪽 버튼 숨기기를 해줍니다.

이번 컨텐츠에서는 속도(밑에선 X로 했습니다.), life, 점수 총 3개의 변수가 필요합니다.










6. 게임 오버시 GAME OVER 메세지를 화면에 띄우기

LIfe가 0이 되면 화면에 GAME OVER 를 한글자씩 출력하겠습니다. 


G 스프라이트 스크립트 입니다.


A 스프라이트 스크립트입니다. G스프라이트가 화면에 나온 후 0.5초 후에 A가 나오도록 보이기 위에 0.5초 딜레이를 넣어 줍니다. 


M 스프라이트 입니다. 위에 A와 마찬가지로 A가 나온 후 0.5초 후에 M이 나올 수 있도록 1초 딜레이를 넣어 줍니다.(A가 0.5초 후에 나오니 M은 거기에 0.5초를 더해 1초 뒤에 나오게 하면 됩니다.)

위와 마찬가지로 한글자씩 차례대로 0.5초씩 더한 딜레이를 넣어 주면 됩니다.(ex : E는 1.5초 O는 2초 V는 2.5초....)

여기까지 하셧으면 모든 작업이 끝났습니다. 게임 시작은 스페이스 바를 누르시면 됩니다.
 

kocoafabeditor

항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!

S4A, 조이스틱, 아두이노, 오렌지보드

강상호 2016-09-12 14:16:53

감사합니다