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

데이터 기술 자료

데이터 기술 자료 상세보기
제목 스크래치 프로그래밍 맛보기 : 계이름 맞히기
등록일 조회수 6324
첨부파일  

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

계이름 맞히기



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


계이름 맞히기에 대해서

이번에 만들 게임은 '계이름 맞히기'라는 교육용 게임이다. 이 게임은 악기가 들려주는 음을 듣고 계이름을 알아 맞히는 내용이다. 악기는 피아노, 바이올린, 실로폰, 리코더 중 하나를 선택할 수 있다. 예제에서는 <그림 1>과 같은 배경그림과 버튼을 배치했다. 여기에 사용한 배경그림과 버튼은 모두 스크래치에서 제공하는 것이다.


<그림 1> 계이름 맞히기 처음화면


악기 선택하기

게임을 시작하면 먼저 악기를 선택해야 한다. 악기를 선택하면 도부터 시까지 음을 한 번씩 들려준다. 악기는 ‘소리’ 그룹의 [~번 악기로 정하기] 블록을 사용해 정해주면 된다. 스크래치 2.0에서는 피아노, 기타 등 21개의 악기를 선택할 수 있다. <그림 2>에서 만든 프로그램을 보면 [set instrument to ~] 블록을 사용한 것은 옛날 버전인 1.4 버전에서 만든 것이기 때문이다. 2.0 버전의 [~번 악기로 정하기] 블록과 악기종류는 다르지만 같은 기능이다.


소리내는 방법을 알아보자. 소리 그룹을 보면 [~번 음을 ~박자로 연주하기] 블록이 있다. 첫 번째 빈칸 옆 화살표를 누르면 피아노 그림이 나와서 자신이 원하는 음을 고를 수 있다. 두 번째 빈 칸을 누르면 연주 박자를 조절할 수 있다. 예를 들어 [60번(도) 음을 0.5박자로 연주하기] 블록으로 만들면 도 음을 반 박자로 연주하는 블록이 된다. <그림 3>은 ‘음 번호’라는 리스트를 만들고 여기에 도부터 시까지의 음 번호를 넣어 준 다음, 반복문을 돌려가며 소리를 내는 방법으로 만들었다.


<그림 2> 악기 선택


<그림 3> 음 번호 넣어 소리 내기


한 음 만들어 소리내기

문제를 위해 한 개의 음을 정해서 들려주는 ‘음만들기’ 함수를 만들었다. 미리 ‘계이름’이라는 리스트를 만들어 여기에 도부터 시까지 계이름을 저장한다. 7개의 음 중 하나를 고르는 것은 ‘연산’ 그룹의 [~부터 ~사이의 난수]라는 블록을 사용한다. <그림 4>의 경우에는 [1부터 7사이의 난수] 블록으로 만들어 선택한 값을 i 변수에 저장했다. 그런 다음 난수에서 발생한 계이름을 사용자가 입력한 계이름과 비교하기 위해 ‘정답’ 리스트에 저장했다. 그러면 마지막으로 선택된 음을 들려준다.


<그림 4>한 음을 만들어 소리내는 법


계이름 맞히기

음을 들려주면 사용자는 자신이 생각하는 답을 도부터 시까지의 버튼을 눌러 입력하게 된다. 이때 입력한 계이름은 ‘클릭’이라는 리스트에 저장한다. 그런 후 전에 저장해놓았던 정답 리스트와 하나씩 비교해 모두 맞았을 경우에는 사용자가 선택한 답이 맞았다고 판단해 점수를 10점 증가시킨다. 틀렸을 경우에는 정답 리스트에 저장된 계이름을 화면에 보여준다.


<그림 5>계이름 맞히기


여러 음 듣고 맞히기

게임을 좀 더 재미있게 만들기 위해서 5~7번까지 문제는 연속으로 두 음을 듣고 맞히고, 8~10번까지 문제는 연속으로 세 음을 듣고 맞히도록 만들어 보자. 기본적으로 앞에서 만들었던 음 만들기 함수를 한 번 사용하는데, 문제번호가 5번 이상인 경우에는 이 함수를 한 번 더 부르고, 8번 이상인 경우는 또 한 번 더 사용한다.


사용자가 총 열 문제를 풀고 난 다음에는 점수를 발표한다. 사용자의 점수는 ‘점수’라는 변수에 들어가 있다. 이 점수에 “입니다.”라는 말을 붙여 화면에 출력해 보자. 연산 그룹을 보면 [~과 ~을 결합하기] 블록이 있다. 이 블록의 왼쪽 빈칸에 점수 변수를 넣고, 오른쪽 빈칸에 “입니다.”라는 글을 써 넣으면 “80점 입니다.”처럼 화면에 나온다.


<그림 6>여러 음을 듣고 맞히도록 한 후 점수 보여주기


추가 기능: Delete, Once More 버튼

사용자가 입력한 것을 고치고 싶을 때를 위해 Delete 기능을 추가해 보자. 사용자가 누른 계이름은 클릭이라는 리스트에 저장돼 있다. 이 클릭이라는 리스트에서 가장 나중에 들어온 계이름을 삭제하면 Delete 기능을 구현할 수 있다.


<그림 7>Delete 기능 구현


사용자가 계이름을 다시 듣고 싶을 경우에는 Once More 버튼을 누르면 된다. 정답2 리스트에 계이름의 번호가 저장돼 있다. 정답2 리스트의 길이 만큼 한 박자씩 다시 음을 들려주면 된다.


<그림 8>Once More 기능 구현


지금까지 만든 계이름 맞히기 게임은 scratch.mit.edu/projects/ 10235894/에서 실행할 수도 있고 프로그램 소스코드도 볼 수 있다. 다음에는 ‘올림픽 수영 200M 결승’이라는 프로그램 만드는 법을 공개한다.



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

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