티스토리 뷰

스크래치로 게임 만들기

여러분은 게임을 좋아하나요? 어떤 게임을 좋아하나요? 스크래치로 멋진 게임을 한 번 만들어볼까요? 우리는 스크래치로 공 피하기 게임을 만들어 보겠습니다. 게임의 규칙은 다음과 같습니다.

 

여기에서 코딩의 중요한 원칙을 배워야 합니다.


한 번에 한 가지 문제만 생각한다.


두 가지를 동시에 생각하려면 문제가 복잡해 보이고, 머리도 아픕니다. 한 번에 한 가지 문제만 생각해서 문제를 해결하는 것이 매우 중요합니다.

 

첫 번째로 공이 여기저기 움직이는 것부터 만들겠습니다. 우선 공 스프라이트를 가져와야 합니다. 그림 2-32의 도깨비 모양의 스프라이트 버튼을 클릭합니다. 여기서 원하는 공을 가지고 옵니다.

 

도깨비 모양의 버튼을 클릭하면 스프라이트 도서관이 열립니다.

그림 2-32 스프라이트 버튼

 

그림 2-33의 스프라이트 도서관에서 농구공을 찾아서 더블클릭합니다.

그림 2-33 스프라이트 도서관

 

그러면 그림2-34처럼 무대에 농구공이 나타난 것을 볼 수 있습니다.

그림 2-34 농구공 스프라이트 가져오기

그림 2-35의 위쪽을 보면 확대-축소 버튼이 있는 것을 알 수 있습니다. 이 버튼을 사용하여 스프라이트를 크거나 작게 만들 수 있습니다. 확대나 축소 버튼을 클릭하고 크기를 바꾸고 싶은 스프라이트를 클릭하면 크기가 커지거나 작아집니다.

그림 2-35 스프라이트 확대-축소 버튼

게임을 만들기 위해서 하나씩 차근차근 생각해봅시다. 우선 공이 계속 이동해야 합니다. 이것을 스크래치로 표현하면 ‘이동하는 것을 계속 반복한다.’가 됩니다. ‘계속 반복하다’를 스크래치는 ‘무한 반복하기’ 라고 표현합니다.

 

농구공을 선택하고 그림 2-36처럼 코딩하고 실행해보세요. 공이 잘 가다가 벽에서 멈추게 됩니다. 스프라이트인 공은 무대 밖을 벗어날 수 없습니다.

그림 2-36 무한 반복하기 코딩

이제 두 번째 문제를 해결해야 합니다. 공이 멈추지 않고 계속 움직이게 하려면 어떻게 해야 할까요? 벽에서 멈추지 않고 튕겨서 나오면 좋지 않을까라고 생각했다면 아주 훌륭합니다. 그림 2-37처럼 코딩해보세요.

그림 2-37 벽에 닿으면 튕기기 코딩

 

공이 잘 움직이나요? 하지만 또 문제가 있습니다. 공이 좌우로만 이동해서 재미가 없습니다. 공이 여러 방향으로 튕겼으면 좋겠습니다. 시작할 때 움직이는 방향을 바꿔보면 어떨까요? 그림 2-38처럼 처음 시작할 때 15도를 돌아서 움직이는 겁니다. 그러면 공이 좌우로 튕기지 않고 이러저리 움직이게 됩니다.

그림 2-38 회전하여 튕기기 코딩

 

또 이렇게 생각할 수도 있습니다.
“시작할 때 15도 말고 아무렇게 돌면 더 재미있겠군.”

공은 0도에서 359도까지 돌 수 있습니다. 그 사이에서 아무렇게 돌면 되겠죠? 어떤 범위에서 아무렇게 뽑은 수를 난수라고 합니다. 0에서 359에서 난수를 뽑으면 0부터 359에서 수 하나를 뽑게 됩니다.

그림 2-39 난수를 이용하여 회전하기 코딩

 

그림 2-39의 블록은 수학과 관계있지 않을까요? 수학과 관계된 블록은 연산 블록 모음에서 찾을 수 있습니다. 프로그램을 실행해보면 생각한 대로 잘 움직이는 것을 알 수 있습니다. 멋지게 첫 번째 문제를 해결했습니다. 두 번째로, 곰돌이를 움직여보겠습니다. 이것을 코딩하기 전에 조건에 대해서 배워보겠습니다.


‘지각을 했다면, 배가 고프다면, 심심하다면’ 이런 것들을 모두 조건이라고 합니다. 어렵지 않죠? 화살표 키로 곰돌이를 움직이고 싶습니다. 이것을 ‘화살표 키를 누르면 움직인다’라고 바꿔서 표현할 수 있습니다.

 

‘화살표 키를 누르면’은 조건이고 ‘움직인다’는 그 조건이 된다면 실행하는 블록입니다. 이때 사용하는 블록이 그림 2-40의 <만약 ~라면> 블록입니다.

 

어떤 조건을 만족시킨다면 <만약 ~라면> 블록 안에 있는 블록들을 실행합니다. 화살표 키를 눌렀을 때 움직이는 것을 나눠서 생각해봅시다.

 

이것을 그림 2-41과 같이 표현할 수 있을까요?

그림 2-41 조건 - 화살표 키

 

관찰 블록 모음에서 그림 2-42와 같은 블록을 찾아서 누르는 키보드 키의 종류를 바꿔주면 됩니다.

그림 2-42 누르는 키 바꾸기

 

이제 <만약~라면> 블록 안에 움직이게 하는 블록을 넣으면, 화살표 키를 눌렀을 때 주인공을 움직일 수 있게 됩니다. 그렇다면 어떤 블록을 넣어야 주인공이 움직일까요? 우선 좌표의 뜻을 알아야 합니다. 좌표는 어떤 기준점에서 얼마나 떨어졌는가를 나타내는 것입니다.

 

스크래치에서는 무대 한가운데가 기준점입니다. 그리고 왼쪽 오른쪽으로 움직이는 것을 x좌표가 변한다고 표현합니다. x좌표가 100이라면 기준점에서 오른쪽으로 100만큼 움직였다는 뜻입니다. x좌표가 마이너스 100(-100)이라면 기준점에서 왼쪽으로 100만큼 움직였다는 뜻입니다.

 

그리고 위 아래로 움직이는 것을 y좌표가 변한다고 표현합니다. y좌표가 100이라면 기준점에서 위쪽으로 100만큼 움직였다는 뜻입니다. y좌표가 마이너스 100(-100)이라면 기준점에서 아래쪽으로 100만큼 움직였다는 뜻입니다.

 

아 그리고 무대의 크기는 가로 480, 세로 360이라는 것이 기억나죠? 나눠서 생각했으니 이제 그림 2-43처럼 모두 합쳐 볼까요?

그림 2-43 곰돌이를 움직이는 코드

 

여기서 바꾸기가 무엇인지 알아봅시다. 바꾸기는 쉽게 말하면 더하고 빼는 겁니다. x좌표가 10인데 오른쪽 화살표 키를 누르면 원래 x좌표인 10에서 10이 바뀌어서(더해서) x좌표는 20이 되는 겁니다.

 

즉 오른쪽으로 10만큼 이동한 겁니다. 만약 아래쪽 화살표 키를 누르면 원래 원래 y좌표값에서 10이 바뀌어서(빼서) 아래로 내려가게 됩니다.

 

세 번째로 공에 부딪치면 게임 끝이라고 말하게 만들어 봅시다. 조건을 넣어서 그림 2-44처럼 만들면 되겠죠? 곰돌이가 말을 해야 하니, 곰돌이 스프라이트를 클릭하고 코딩을 해봅시다. 농구공을 클릭하고 코딩하면 농구공이 말하게 되니 조심하세요.

그림 2-44 조건 - 닿았는가

 

그림 2-45처럼 <~에 닿았는가?> 블록을 사용하면 아주 쉽게 만들 수 있습니다. <~에 닿았는가?>도 블록 관찰 블록 모음에서 찾을 수 있습니다. 삼각형 표시를 눌러서 Basketball 스프라이트를 고릅니다.

그림 2-45 게임 끝 말하기 코딩

 

어때요 참 쉽죠? 한 번 게임을 실행해보세요. 그림 2-46처럼 공에 닿으면 게임 끝이라고 말해야 하는데, 어라? 공이 계속 움직이고 곰돌이도 키보드를 누르면 계속 움직입니다.

그림 2-46 공에 닿으면 게임 끝 말하기 화면

 

게임을 만들다보면 이렇게 생각지도 못한 문제가 생길 수 있습니다. 하지만 원칙은 같습니다.


한 번에 한 문제만 해결한다.


하나씩 문제를 해결하면서 멋진 게임을 만들어 봅시다.

댓글
댓글쓰기 폼