본문 바로가기
컴퓨터 활용/노년에 즐기는 코딩

[스크래치] 노래에 맞춰 춤추는 고양이

by easyfly 2023. 2. 3.
반응형

스크래치

스크래치는 어린이용 프로그램 코딩 언어입니다. 어린이용으로 MIT 대학에서 만들었기 때문에 인터페이스가 직관적입니다. 그러므로 컴퓨터에 서툰 노년에게도 맞는 프로그램으로 판단해서 시작했습니다. 그리고 함께 즐길 노년을 찾고 있습니다. 약간의 수련을 거치면 노년 소일거리로 즐길 수 있기도 하고, 실생활에 필요한 프로그램 제작도 가능합니다. 이것과 유사한 프로그램으로 스마트폰 어플을 만들 수 있는 '앱 인벤터'가 있습니다. 그것도 MIT에서 제공하는 프로그램 언어입니다.

스크래치로 몸을 풀고 준비가 되면, '앱 인벤터'로 스마트폰 어플까지 도전할 수 있습니다. 이번 시간에는 전 시간에 소개했던 음악의 템포를 임의로 조정해서 들을 수 있는(음악 빠르기 조정)에 이어 스프라이트가 노래에 맞춰 춤을 추게 합니다. 춤은 단순하게 몸 흔드는 정도이지만 그 과정을 어떻게 코딩하는가를 익히는 것이 학습 목표입니다.

학습 목표

스크래치에서 변수를 만들어 전달하는 법을 알고 적용합니다.



예제 노래 '환희의 송가'

독일의 시인 프리드리히 실러의 시 '환희의 송가'를 베토벤이 자신의 마지막 교향곡 '합창'에 활용하게 됩니다. 이 '환희의 송가'를 어린이들이 부를 수 있게 만든 편곡을 전 시간에 빠르기 조정을 하면서 악기 '칼림바'를 익힐 때 사용토록 했습니다. 이 시간에는 스프라이트 '야옹이'가 그 곡에 맞춰 동작을 합니다.

동작은 간단합니다. 오른쪽으로 10도 기울였다가 조금 쉬고(0.5초) 바르게 섰다가 왼쪽으로 10도 기울이는 것을 반복하는 것입니다. 이것을 무한 반복하는데 음악이 끝나면 동작도 마치게 되지요. 프로그램 시작과 동시에 음악이 나오니까 동작 시작은 프로그램 시작과 동시에 이루어집니다. 초록 깃발을 클릭하면 음악과 동작이 동시에 시작됩니다. 음악이 끝나는 것을 움직이는 스프라이트에게 알려야 하는데, 그 방법으로 변수를 사용했습니다. '나의 변수'가 50이 될 때까지 춤을 춰라. 이런 식이죠. 변수는 초기에 0을 부여합니다. 그리고 음악이 끝나면 변수에 50을 부여합니다. 그 변수의 변화가 감지되면서 춤 동작도 마치게 됩니다.

중간중간에 변수에 변화를 주면서 스프라이트 이동이나 동작의 변화도 가능합니다. 여기서는 적용하지 않습니다.



춤추는 고양이

스크래치에서는 기존의 코딩을 활용할 수 있습니다. '파일>복사본 저장하기'를 선택하면 '기존 파일명' 뒤에 'copy'가 붙는 새로운 프로젝트가 생깁니다. 이 복사본을 수정하여 코딩을 하면 쉽습니다.

복사본 저장하기

전 시간 코딩에서 빠르기를 묻는 과정을 빼고 대신 '나의 변수'라는 기본 변수를 삽입했습니다. 시작할 때의 변수는 '0'으로 초기화했습니다. 음악이 모두 끝나는 지점에 '나의 변수'에 '50'을 정합니다. 이 변수가 춤추는 스프라이트에게 전달됩니다. '나의 변수 = 50'이 될 때까지 아래 이미지 오른쪽에 있는 '반복 루틴'에 전달되면서 춤 동작을 마치게 됩니다.

스크래치 코딩 내용

코딩의 골격

스크래치를 골격만 남겨서 다시 보죠. 깃발 클릭으로 시작됩니다. '나의 변수'를 초기화했습니다. 음악 빠르기는 '120'으로 정했습니다. 첫 소절을 담는 반복문입니다. 첫 소절 끝나면 '메시지1을 보냅니다. 이 메시지를 받아 두 번째 소절이 시작됩니다. 이렇게 세 번째, 네 번째로 이어집니다. 네 번째 소절이 끝나는 곳에 '나의 변수'를 '50'으로 정합니다. 이 변수가 스프라이트 춤 동작 반복 코딩에 반영됩니다. "'나의 변수' = '50'" 이라는 조건이 일치하기 때문에 반복문에서 빠져나오게 됩니다. 그러면서 모든 프로그램이 종료됩니다. 만약 이와 같은 코딩이 생략되면 종료 버튼을 누를 때까지 스프라이트는 춤 동작을 계속할 것입니다.

코딩 골격


스크래치 감상하기

완성된 스크래치 프로젝트를 감상해 보죠. 깃발을 선택하면 시작됩니다. 스프라이트 야옹이를 탭 하거나 빨간 버튼을 선택하면 종료합니다.




정리

변수를 만듭니다. 프로그램 시작할 때 변수를 초기화시킵니다. 음악이 끝날 때 변수의 값을 정해 줍니다. 정해준 변수가 조건부 반복에 반영되면서 춤 동작을 그치게 됩니다.

조건부 반복문은 어떤 조건이 일어나기 전까지는 계속 반복해서 진행하라는 코딩입니다.

반응형

댓글