스크래치 게임만들기 - 숫자마술게임


이번 시간에는 '스크래치 게임만들기 숫자마술게임'에 한번 도전해 보겠습니다. 간단한 숫자를 맞추는 스크래치 게임입니다.


여러분들이 마음속에 1부터 60까지 숫자중 하나의 숫자를 생각하시됩니다.

그러면 제가? 제가 만든 프로그램이 여러분들이 생각했던 숫자를 맞추는 것입니다.


처음 이것을 도전했을 때 아주 간단하게 끝날 것이라고 생각을 했었는데요 이거 간단한게 아니였습니다. 

YES와 NO 둘 중 하나를 선택하는게 어려울 것이라고는...


어떻게 실행이 되는지 한번 보시기 바랍니다. 깃발 모양을 누르면 게임을 실행할 수있습니다. 그리고 다시하고 싶으시면 깃발을 누르시면 됩니다. <인터넷 속도에 따라 로딩 되는데 시간이 조금 걸립니다. 이해해 주세요^^>



어떻게 숫자를 잘 맞추던가요? 아마 잘 맞췄을 것같은데요 ㅎㅎ

스크래치 숫자마술 게임 프로그램을 어떻게 만드는지 한번 핵심 내용만 말씀드리겠습니다.



스프라이트 구성하기

스프라이트에 필요한 것은 일단 숫자판과, YES,NO, 화살표, 메세지 2개(cats,cats1)가 필요합니다.


숫자판도 총 7개의 모양으로 구성이 되어 있는데요 처음에는 따로 만들어 놓았었는데 그러면 더 많은 코드가 들어가서 서 숫자판 모양에 모두 집어 넣었습니다.


벌써 헉~ 하시는 거 아닌지 모르겠습니다. 하나하나 보시면서 하시면 쉬워요 너무 걱정하지 마세요


알고리즘 만들기


어떻게 만들지 막막하시지요... 저도 만들 때 막막했었는데 하다보니깐 어떻게든 되더라고요

그런데 코드를 만들기 전에 먼저 어떻게 로직을 만들까 생각을 해야 하는데요 이 방법은 저와도 다를 수 있으니 만드실 때 더 좋은 생각이 있으시면 그 방법으로 하시면 됩니다.


항상 새로운 것을 만들 때 노트에 그림을 한번 그려보시기 바랍니다. 저는 항상 그렇게 작업을해요


1. 먼저 안내 메세지를 내보내고 → 표를 누르면 다음 화면으로 넘어간다

2. 앞 화면을 모두 숨기고 숫자판과, cats1과 Yes, No 스프라이트를 보이게 한다.

3. Yes와 No 스프라이트를 클릭하면 숫자판의 다음 모양으로 넘어간다.

4. 카운트 변수를 만들어 현재 몇번째 모양인지 확인을 한다.

5. 각 모양에 따라 합을 구한다.

6. 마지막 모양에 합의 값을 출력한다.


이런 식으로 구성을 하려고합니다. 이렇게 하면 변수 두개가 필요합니다. 모양의 확인할 수있는 카운트 변수와 마지막에 출력할 수의 합계 생각변수라고 이름을 주겠습니다.





화면 구성 및 블록 코딩하기


스크래치 게임 구성이야기부터 이야기해야 할 것 같습니다. 게임 구성은 첫 화면에 메세지를 내보냅니다. 그리고 아래 노란 화살표를 클릭하면 다음 화면으로 넘어가게 만드는 것입니다.



스크래치는 장면 전환이 따로 없습니다. 그래서 여러 스프라이트를 사용하려면 보이기, 숨기기를 이용하여 보이게 했다가 안보이게 했다가 하는 방법 밖에 없습니다.


그래서 처음에는 위 스프라이트를 제외하고 모두 숨기기를 해야합니다 먼저 시작을 했을 때 보이게 만들고 화살표 모양을 클릭하면 arrow 본인을 숨기고 메세지1을 방송합니다. 이제 cats스프라이트로 넘어가게 됩니다.



처음 시작을 했을 때 화면을 보이게 만들고 변수의 값들을 모두 초기화 시켜줍니다. 그리고 화면에서 변수를 안보이게 처리해 줍니다. 메시지1은 자신을 숨겨주는 코드입니다.




cats가 메세지1를 받으면 숨기기가되어 앞 장면은 끝나게 됩니다.


이 메세지1이 단순이 끝나게만하는 것이 아니라 보이게까지 할 수 있습니다. 숫자판과, Yes, No, cats1 모든 코드에 [메세지1을 받았을 때] 블록에 [보이기]를 넣습니다. 그러면 다 이게 되는 것입니다.


숫자판 스프라이트의 코드를 확인해보겠습니다. 깃발(시작했을때)을 클릭 숨겼다가 [메시지1]을 받았을 때 보이고 모양을 1로 변경을 시켜줬습니다. 이 부분이 중요한데요 꼭 초기화로 해줘야 합니다.  스크래치2.0 은 꼭 초기화를 시켜줘야하는 코드를 넣어줘야합니다.


[모양바꾸기를 받았을때] 블록은 Yes, No 스프라이트에서 방송을 하면 받아서 모양을 변경 시켜 줍니다. [6번신호를 받았을 때] 블록은 마지막 모양일 때 결과를 말하는 코드입니다.


이제 중요한 Yes 블록을 한번 볼까요 [깃발을 클릭했을 때]와 [메세지1을 받았을 때]코드는 이제 알실 것입니다. 그리고 [6번신호를 받았을 때] 코드도 마지막에는 모습을 숨기기를 써서 숨겨줍니다. 이제 여기서 가장 중요한 코드는 Yes 스프라이트를 클릭했을 때 동작인데요 



Yes를 클릭하면 카운트 변소에 1만큼 숫자를 더해줌니다. 그리고 [모양꾸기 방송하기]하여 숫자판 스프라이트의 모양을 [다음 모양으로 바꾸기]를 하게 합니다. 그리고 [합계 방송하기]를 합니다. 아래 코드를 그냥 넣어줘도 되겠지만 저는 따로 방송하기로 만들어서 작업을 한 것입니다.


[합계를 받았을 때] 코드를 보면 카운트에 따라서 합계가 달라짐니다. 예를 들어 처음 숫자 모양 1번에 Yes를 클릭하면 카운트 값이 1이기 때문에 생각변수에 1을 더해서 줍니다. 그리고 두번째에서 No를 클릭하면 '카운트=2'는 건너뛰게 되는 것입니다.


그리고 만약에 숫자판 4번모양일 때 클릭을 하면 '카운트=4'가 적용이 되는 것입니다. 그리고 마지막 '카운트=6'이 된다면 더해주고 [6선번신호방송하기] 메세지를 보내 숨기기를 하거나 보이기를 하는 것입니다.


No스프라이트만 하면 끝나네요 휴~

No를 클릭했을 때도 카운트를 적용을 합니다. 그래야 숫자판의 다음 모양을 알수 있거든요 그리고 [모양바꾸기 방송하기]로 숫자판 모양을 바꾸고 마지막에는 No스프라이트도 숨겨야하기 때문에 숨기기를 넣어주고 신호를 보내어 결과 값이 나오게 만들어 주면 됩니다.


나머지 코드는 설명을 안해 드리고 되겠지요? ^^ 여기까지 읽는 것도 힘드셨을 텐데요

만들 때는 힘들지만 만들고 나면 정말 기분이 좋습니다. 정말로~


그리고 설명을 하면서 느낀건데요 여기서 몇 가지는 그냥 없어도 될 것 같은 생각이 들더라고요 그건 여러분들이 더 좋은 코드로 만들어 보세요


이상으로 숫자마술 스크래치 게임만들기 프로그램을 만들어 보았습니다. 

오늘도 즐겁게 프로그래밍하시기 하세요 ^^ https://scratch.mit.edu/projects/132670374/

반응형

댓글

Designed by JB FACTORY