티스토리 뷰

스크래치로 게임 만들기

문제는 한 번에 하나씩만 해결한다.

 

이 원칙대로 우선 공에 닿으면 곰돌이가 멈추게 해보겠습니다. 여기서는 그림 2-47과 같은 멈추기 블록을 사용하겠습니다.

 

그림 2-47 멈추기 블록

스크래치를 공부할 때 가장 좋은 방법은 하나씩 해보는 겁니다. 이것저것 넣다보면 자연스럽게 이해가 됩니다. 제어 블록 모음에서 찾다 보면 <모두 멈추기> 블록이 있습니다.

 

이것을 이용하면 뭔가 될 것 같다는 생각을 하는 것이 중요합니다. 곰돌이에게 다음과 같이 명령을 합니다. 스크립트는 스프라이트에 내리는 명령인데 곰돌이에게 두 가지 명령을 했습니다.

 

공에 닿으면 게임 끝이라고 말하고 움직이지 못하게 해야 하니, 1번 스크립트를 멈춰야 합니다. 그래서 그림 2-48처럼 2번 스크립트에서 스프라이트에 있는 다른 스크립트(1. 화살표 키를 누르면 움직여라)를 멈춰야 합니다.

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

 

이제 공도 멈추게 만들겠습니다. 공은 곰돌이와 닿으면 멈춥니다. 이것을 코딩하면 그림 2-49와 같이 이렇게 됩니다. 여기서 M-Panda는 곰돌이를 말합니다. 움직이는 스크립트를 멈춰야 하니 이 스크립트 멈추기 블록을 연결합니다. 아주 멋지게 문제를 해결했습니다.

그림 2-49 곰돌이와 닿으면 멈추기 코딩

 

그리고 이제 게임을 더 재미있게 만들어 보겠습니다. 점수를 넣으면 더 재미있지 않을까요? 공을 오래 피할수록 높은 점수를 받는 겁니다. 여기서 정말 정말 중요한 변수에 대해서 알아야 합니다.


변수는 쉽게 설명하면 학교에 있는 사물함 같은 것입니다. 어떤 것을 보관하는 것이죠. 사물함에 책이나 크레파스와 같은 것들을 보관할 수 있는 것처럼 변수도 숫자, 글자 등을 보관할 수 있습니다.

 

“어떤 값을 변수에 저장한다.”


이렇게 표현하면 되겠죠. 그러나 변수와 사물함이 다른 점이 있는데 변수는 딱 한 가지만 보관할 수 있습니다. 어떤 변수에 1이라는 값이 저장되어 있는데 만약 2 값을 다시 저장하면 원래 1값은 없어지고 2가 새롭게 저장됩니다.

 

사물함을 쓸 때 누구 사물함인지 모르면 물건을 찾기 어렵습니다. 번호나 이름을 표시해두면 물건을 찾기 쉽겠죠. 마찬가지로 저장된 것을 쉽게 찾기 위해서(컴퓨터에 값을 저장하기 위해서) 변수에도 이름을 붙이면 편합니다.

 

시간을 표시하기 위해서 시간이라는 변수를 하나 만들겠습니다. 그림 2-50처럼 데이터&추가블록 블록 모음에서 변수 만들기를 눌러서

그림 2-50 데이터&추가 블록의 변수 만들기 클릭

 

그림 2-51처럼 시간이라고 쓰고 확인을 누르면 그림 2-52와 같이 변수가 하나 만들어집니다.

그림 2-51 시간 변수 만들기
그림 2-52 시간 변수 추가

그럼 어떻게 시간을 표현할 수 있을까요? <~초 기다리기> 블록을 사용하면 쉽게 시간을 표현할 수 있습니다. 곰돌이 스프라이트를 클릭하고 그림 2-53처럼 스크립트를 하나 더 만듭니다.

그림 2-53 시간 바꾸기

 

1초를 기다렸다가 시간에 1만큼 바꾸기를 했습니다. 즉 1씩 더한 겁니다. 그러면 왼쪽 시간 변수에는 더해진 값이 나타납니다. 그리고 다시 1초 기다리고 시간 변수에다가 다시 1을 더해 줍니다. 그러면 시간 변수는 2가 되겠죠. 이것이 바로 시간 아닌가요? 시간 변수에 1초마다 1씩 더해주면 됩니다.

 

그런데 그림 2-54와 같이 게임을 다시 시작하면 시간이 0이 안되고 계속 커집니다. 어떻게 하면 될까요?

그림 2-54 시간이 바뀌지 않은 화면

 

그림 2-55와 같이 처음 시작할 때 [시간] 변수 값을 0으로 만들면 됩니다.

 

그림 2-55 시간 변수 값을 0으로 만들기

 

정하기와 바꾸기의 차이는 무엇일까요? 정하기는 그냥 그 값으로 하는 것입니다. 원래 변수 값이 100이든, 10000이든 상관없습니다. 0으로 정하면 원래 [시간] 변수 값이 무슨 값을 갖든지 시간 변수 값은 0이 됩니다.


바꾸기는 원래 변수 값에서 더하기를 하거나 빼기를 하는 겁니다. 그림 2-56처럼 직접 코딩을 해서 무엇이 다른지 알아보세요.

그림 2-56 시간 바꾸기 코딩 완성

 

댓글
댓글쓰기 폼