대메뉴 바로가기 본문 바로가기

데이터 기술 자료

데이터 기술 자료 상세보기
제목 스크래치 프로그래밍 맛보기 : 투 플러스 원(Two Plus One, 메모리 게임)
등록일 조회수 5644
첨부파일  

스크래치 프로그래밍 맛보기

투 플러스 원(Two Plus One, 메모리 게임)



스크래치는 MIT 대학교에서 2007년에 만든 교육용 프로그래밍 언어다. 다른 프로그래밍 언어와 달리 마치 레고 블록을 쌓듯 프로그램을 만들 수 있어 배우기 쉽다. 스크래치 홈페이지(scratch.mit.edu)에서 직접 프로그램을 만들 수 있고, 오프라인 버전을 다운로드 받아 사용할 수도 있다.



‘투 플러스 원’은 바닷속에 흩어져 있는 동물을 찾아내는 기억력 게임이다. 바닷속에는 물고기, 상어, 문어, 불가사리, 게가 각각 세 마리씩 있다. 똑같은 동물을 두 마리 연속으로 찾으면 기본 점수를 얻게 되고, 이 상태에서 남은 한 마리를 마저 찾으면 보너스 점수를 얻는다. 맞히지 못했을 때는 전에 클릭했던 동물이 ‘?’로 바뀌고 감점을 받게 되며, 방금 클릭한 동물은 다른 자리로 움직이게 된다. 이렇게 동물의 위치가 바뀌기 때문에 기억을 정확히 해야 높은 점수를 받을 수 있다. 게임을 처음 시작하면 게임 난이도를 선택할 수 있는데, ‘쉬움’은 셋, ‘보통’은 넷, ‘어려움’은 다섯 종류의 동물을 맞혀야 한다.







동물의 위치 섞기

기억력 게임이기 때문에 동물의 위치는 게임을 시작할 때마다 매번 바뀌어야 한다. 이 기능을 구현하기 위해서 <그림 3>과 같이 ‘누구위치’라는 리스트를 사용했다. 만약 ‘누구위치’의 값이 “5, 7, 2, …” 와 같이 돼 있다면, 이것은 1번 동물은 5번 위치, 2번 동물은 7번 위치, 3번 동물은 2번 위치와 같이 자리를 배정한다는 의미다. 먼저 ‘누구위치’에 1부터 16까지 차례대로 수를 넣은 다음에 ‘누구위치’의 맨 아래 값을 아무 데나(랜덤) 밀어 넣는다. 이렇게 밀어 넣기를 50번 반복해서 동물의 위치를 섞도록 만들었다. 이 게임에는 모두 15마리의 동물이 있는데, 16까지 사용한 이유는 빈칸 때문이다. 빈칸은 게임 중에 동물이 이동하는 데 필요하다. 그래서 ‘누구위치’의 맨 마지막 값을 빈칸의 위치로 정했다. 1번부터 16번까지의 위치는 <그림 4>와 같이 미리 정해 놓았다.







같은 동물인지 검사하기

같은 동물은 스프라이트 이름의 앞글자를 같게 하고 그 뒤에 번호를 붙였다. 예를 들어 ‘게’는 ‘A1’ ‘A2’ ‘A3’으로, ‘물고기’는 ‘B1’ ‘B2’ ‘B3’과 같이 스프라이트 이름을 붙였다. 각 스프라이트마다 <그림 5>와 같은 프로그램이 있어 지금 클릭한 것이 전에 클릭한 것과 같은 동물인지 검사한다. 이미 스프라이트의 모양이 동물로 바뀐 상태에서 이 스프라이트를 다시 누르면 해야 할 일이 없다. 반대로 ‘?’ 모양일 때는 비교를 해야 하므로 ‘이전’ 변수에 전에 눌렀던 스프라이트의 이름을 넣고, ‘지금’ 변수에 자신의 스프라이트 이름을 넣는다. 그런 다음에 ‘비교하기’ 함수를 부른다. ‘비교하기’ 함수에 있는 프로그램은 15개의 스프라이트가 모두 같으므로 따로 함수로 만들어 공통으로 사용하게 했다.

‘비교하기’ 함수에서는 ‘이전’ 변수와 ‘지금’ 변수에 있는 값의 첫 글자를 비교한다. 만약 다르다면(못 맞혔다면) 점수를 10점 감점하고, ‘이동하기’ 함수를 부른다. <그림 7>의 ‘이동하기’ 함수에서는 지금 클릭한 스프라이트를 ‘빈칸’ 위치로 이동시키고, 전에 클릭했던 스프라이트를 ‘?’ 모양으로 바꾼다. 만약 ‘이전’ 변수와 ‘지금’ 변수에 있는 값의 첫 글자가 같다면 같은 동물을 찾은 것이므로 점수를 100점 올리고, 보너스 기회를 주기 위해 ‘보너스’ 변수를 ‘Y’로 바꾼다.









보너스 검사하기

보너스는 같은 동물을 찾았을 때마다 단 한 번의 기회가 주어진다. <그림 8>과 같이 보너스 기회를 얻었을 때 나머지 한 마리까지 마저 찾으면 100점을 추가로 받게 된다. 만약 찾지 못했을 때는 점수 변화 없이 계속해서 다른 동물을 찾으면 된다. 방금 찾았던 동물이 마지막 동물이었다면 게임을 종료하게 된다. 이를 위해 ‘찾을 동물’이라는 변수를 하나 만들어서 동물을 맞힐 때마다 1씩 감소하도록 만들었다.



‘투 플러스 원’ 게임은 scratch.mit.edu/projects/10235482/에서 실행해 볼 수 있고 프로그램 소스코드를 볼 수 있다. 게임에서 높은 점수를 받으려면 보너스를 많이 받아야 한다. 보너스를 잘 받기 위해서는 같은 동물의 세 위치 모두를 머릿속에 잘 기억해 놓았다가 한꺼번에 연달아 맞혀야 한다. 하지만 동물들이 계속 움직이기 때문에 기억하기가 쉽지 않다. 동물들의 위치를 기억하다 보면 기억력이 좋아질 것이다.



출처 : 마이크로소프트웨어 8월호

제공 : 데이터 전문가 지식포털 DBguide.net