스크래치를 배워보자 03 - 변수

in #kr8 years ago

변수 활용



저번엔 스크래치02 깃발 클릭하면 이제 케릭과 배경이 애니메이션 되는 것까지 했었다

또한 코딩07에서 변수가 무엇인지 개념을 잡아봤다
그래서 요번엔 그 변수를 활용해 보겠다

먼저 위에서 모양# = 14 라는 것은 지금보면 무슨 소리인지 모를것이다
아직 일주일도 지나지 않았지만 코딩을 하다보면 점점 기억력이 퇴화되어
메멘토를 듬뿍 체험할 수 있다

사실 아예 홀라당 까먹었으리라 본다-ㅅ-;;
그러니 시간된다면 저번편부터 한번 보고 다시 일루 오길 바란다

모양# = 14 라는 것은 만약 애니메이션이 14번째 그림까지 진행되었는지
확인하는 문장이었다. 그래서 만약 14가 맞다(=)면 15로 넘어가지 못하게
모양을 다시 첫번째로 바꿔버리는 것이다

문제는 우리가 이미 체험해봤듯이 훌륭하게 다 까먹었다는 것이다
그나마 만약 이라던가 모양 # 같은건 그럭저럭 기억의 저편 어딘가에서 발굴해낼 수
있을 것이다. 이유는 명확하게 한글문장으로 되어 있기 때문이다
하지만 14가 뭐였는지에 대해선 자기가 짜놓고도 알 수가 없을 것이다

이때 코딩07에서 배웠던 변수의 개념이 매우 유용하게 쓰이게된다

변수를 이름(라벨)을 붙인 정리 상자라고 했었다. 그게 어떤 이점이 있냐면
이름을 왠만큼 개떡같이 지어놓지 않은이상 이름만 봐도 자신의 기억과 결합해서
그게 뭐였는지 쉽게 기억할 수 있는 효능이 있는 것이다

자 그렇다면 14를 변수상자에 당장 처넣어보자
그러기전에 상자이름 짓는 것이 매우매우 중요하다. 이해하기 쉬우면서 자신이 치매에
걸리더라도 알아볼수 있는 바로 그런 것으로 하는 것이다
여기서 14는 대기상태의 애니메이션의 마지막 모션이다
그러므로 대기애니메이션의 마지막 모션
이라고 하고 싶지만 저것도 나름 골때리는 변수이름이 된다 일단 자리띄움이 들어가면
안된다. 코딩에서 띄우기, 쉼표 이런것들도 다 의미가 있기에 전부 붙여줘야하는데
대기애니메이션의마지막모션 이러면 더 알아보기도 힘들고 변수의 특성상 자주
여기저기 재활용하는데 그때마다 저 긴거 다 쳐줄려면 팔 부러진다
고로 stop_ani 라던지 stopAni 이런 대문자 같은 걸로 띄워쓰기를 대신하는 방법이
많이 쓰인다. 우리의 경우는 한글과 영어를 혼합해보자
대기end# 대기상태에서의 애니메이션의 끝에다가 #은 번호의 의미가 있으므로
그럭저럭 알아보기 쉽다 (아마도?)

그럼 이제 변수상자를 만들어보자

주황색의 데이터에 간후 변수 만들기를 클릭하자


그리고 이름을 지어주면


요런 나만의 블럭이 완성

이제 이걸

14대신에 끼워넣는 것이다
14보다 훨씬 알아보기 쉬워졌다. 근데 사실 저 블럭은
안을 아직 안채워넣었다
그럼 어떻게 채워넣을까


어떠한 변수가 만들어지면 그 변수의 값을 정할 수 있는 추가 블럭이 생성된다
데이터에서 보면 저렇게 생긴 블럭이 있을 것이다
저기의 정하기 앞의 네모부분을 14로 하면 이제 변수의 값이 14로 확정된다

그럼 이제 14가 확정?
아니다

스크래치의 블럭들은 둥둥 떠다닌다고 작동하는게 아니다
직접 클릭하면 작동하지만 그것도 그때뿐이다
그러므로 끼워주자

오토핫키 식으로 친다면

클릭::
대기End# := 14
loop 100000000000000000
{
    If ( 모양# == 대기end# )
          ....

뭐 이런식으로 된다. 변수를 만들고 할당하는 것을 눈여겨보자

아래는 위의 수업의 일부분이 나타나있는 프로젝트이다
https://scratch.mit.edu/projects/125101455/
미리 어떻게 되는 것인지를 보면서 공부하면 더 효과적일 것이다

변수에 대한 것을 스크래치로 한번 더 알아보는 것이 좋다고 생각하여
아쉽게도 이번에도 케릭의 이동에 대해선 못했지만
저 프로젝트를 보면 대충 어떻게 하는 것인지 미리 볼 수 있다

다음엔 정말로 움직이는 것에 대해서 해보겠다

Sort:  

신기하네요~ 하고나면 쉽습니다^^

얘는 정말 쉬우니 이것저것 해보시길 바랍니다

Coin Marketplace

STEEM 0.17
TRX 0.13
JST 0.027
BTC 61263.81
ETH 2676.81
USDT 1.00
SBD 2.59