2025년, 코딩은 선택이 아닌 필수!

2025년 모든 학교에서 코딩이 시작 됩니다. 먼저 준비하는 사람만이 기술을 선도해 갑니다~

블럭형코딩/스크래치

03. 움직이는 게

파아란기쁨1 2021. 7. 12. 12:17
반응형
목표

- 특정 부분을 반복해서 실행하는 반복 구조를 이해한다.

- 조건에 따라 실행 내용이 달라지는 선택 구조를 이해한다.

- 스크립트 간에 상호작용하는 기능인 신호 보내고 받기를 이해한다.

 

프로젝트 실행 내용]

1. 좌우로 버튼을 클릭하면 게가 좌 우로 이동합니다.

2. 마우스 버튼을 클릭하면 게가 마우스 포인트를 따라 움직이도록 합니다.

3. 키보드 버튼을 클릭하면 방향키로 게를 이동합니다.

4. 멈추기 버튼을 클릭하면 게이 동작이 멈춥니다.

 

https://scratch.mit.edu/projects/552471900/

 

 

개념이해하기

1. 반복구조

- 다음은 앞뒤로 움직이는 동작을 3번 반복하는 스크립트입니다.

- 만약 이렇게 1000번을 좌우로 이동하도록 한다고 하면 여러분은 어떻게 하시겠습니까?

- 위와 같이 1000번 반복하기 구문으로 간단하게 해결이 가능합니다.

 

C언어

for(int i=1;i<=1000;i++)
{
  printf("앞으로 이동");
  printf("뒤로 이동");
}

 

연습문제1)

프로젝트를 하나 만들고 배경 2개를 추가하여 2초 간격으로 배경을 변경합니다.

//무한반복
while(1){
   printf("배경1로 바꾸기");
   printf("배경2로 바꾸기");
}

 

 

연습문제2)

프로젝트를 하나 만들고 고양이를 무작위 위치로 이동하는 동작을 100번 반복합니다.(이동중에 1초씩 대기)

C언어

for(int i=1;i<=100;i++){
	printf("무작위 위치로 이동");
}

 

2. 선택구조

-  다음은 '앗' 을 1초 동안 말하는 동작을 반복하는 스크립트입니다.

- 그런데 스프라이트를 마우스로 클릭했을때만 말을 하게 하고 싶을때는 어떻게 해야 할까요?

이런 경우에 사용하는 것이 선택구조입니다. "선택 구조는 조건이 참이냐 거짓이냐에 따라 블록을 선택적으로 실행하는 구조" 입니다.

만약 블록은 조건이 참이라면 실행한다.

 

C언어

int mouseClick = 1;

while(1){
   if(mouseClick==1){
	   printf("앗\n");
   }
}

 

연습문제1)

프로젝트를 하나 만들고 키보드의 space bar를 눌렀을때 고양이를 앞뒤로 움직입니다.

(20만큼 이동후 1초 기다린후 -20만큼 이동후 1초 기다리기 를 space bar 가 눌렀을때 실행하도록 처리)

 

 

연습문제2)

마우스포인트에 닿을때까지 앞뒤로 움직이는 동작을 수행합니다.

(반복을 마우스포인터에 닿았는가 까지 반복하면서 앞뒤로 이동하는 작업을 수행합니다.)

(20만큼 이동후 1초 기다린후 -20만큼 이동후 1초 기다리기 를 실행하도록 처리)

 

 

연습문제3)

스프라이트에 마우스 포인터가 위치하면 앞으로 10만큼 이동하고 그렇지 않으면 뒤로 -10만큼 이동합니다.

(무한 반복하기에서 만약 마우스 포인트에 닿았다면 10만큼 이동후 1초 대기, 아니면 -10만큼 이동후 1초대기)

 

3. 신호 보내고 받기

- 스프라이트 목록의 고양이를 마우스 오른쪽 버튼을 클릭하고 복사를 선택하여 새로운 고양이2 스프라이트를 만든다.

- 고양이1을 클릭하면 고양이2 를 움직이게 하고 싶어요~ 어떻게 하면 좋을까?

 

- 신호 보내고 받기는 스프라이트들 간의 명령을 주고 받을 수 있게 하는 것으로 다음과 같다.

고양이1 - 다음과 같이 스프라이트를 클릭했을때 움직여 라는 신호를 보낸다.

고양이2 - 움직여 신호를 받으면 좌우로 이동한다.

연습문제1)

고양이1 을 클릭하면 "10번움직여" 라는 신호를 보내고 고양이2는 "10번움직여" 라는 신호를 받으면 앞뒤로 움직이는 동작을 10번 반복합니다.

더보기

고양이1

고양이2

 

 

 

연습문제2)

고양이1을 클릭하면 "10번움직여" 라는 신호를 보내고 기다리다가 고양이2가 움직이는 동작이 종료되면 "수고했어" 라는 말을 합니다.
(고양이2는 "10번움직여"라는 신호를 받으면 10번 좌우로 움직이는 동작을 반복후 종료 된 후 "끝났어" 라는 신호를 보내면 고양이1은 "끝났어" 라는 신호를 받은 후 "수고했어" 라고 말하기를 수행하면 됩니다.)

 

더보기

고양이1

고양이2

 

 

 

4. 좌표

고양이를 상하좌우로 이동하는 경우 (x,y) 로 나타내며 위의 그림과 같이 정중앙의 위치가 (0,0)  이고 x축은 좌우방향 y축은 상하방향입니다.

좌표의 범위는 다음과 같다.

x축 : -240 ~ 240

y축 : -180 ~ 180

 

연습문제1)

클릭했을때 고양이 위치를 (0,0) 위치로 이동 하여 시작 한 후 x좌표를 30 과 -30 으로 정하는 동작을 5번 반복합니다.(이동할때 마다 1초씩 기다리기를 합니다.)

 

연습문제2)

클릭했을때 고양이 위치를 (-50,50) 위치로 이동하여 x좌표를 100, y좌표를 -100, x좌표를 -100, y좌표를 100 만큼 이동하는 동작을 5번 반복합니다.

 

프로젝트 작성하기

1. 게 스프라이트 가져오기

- 고양이 스프라이트 삭제

- 스프라이트 고르기 아이콘 선택후 Crab 를 입력 후 선택

- 스프라이트 이름을 게 로 변경

2. 버튼 만들기

- 좌우로, 마우스,키보드,멈추기 가 적힌 버튼을 만들어 보겠습니다.

- 스프라이트 고르기 아이콘에서 Button3 을 선택 후 복사하기를 이용해서 4개의 버튼을 만듭니다.

- 4개의 버튼을 다음 그림과 같이 위에 정렬 합니다. 

 

- 첫번째 부터 이름을 좌우로,마우스,키보드,멈추기 로 변경합니다.

- 좌우로 버튼을 클릭하여 모양탭을 클릭합니다.

- 채우기색을 클릭해 버튼에 들어갈 텍스트의 색상을 빨간색으로 선택합니다.

- T 를 선택해  좌우로 텍스트를 입력합니다.

- 같은 방법으로 4개의 버튼의 텍스트를 입력합니다.

 

3. 버튼 클릭하여 신호 보내기

  • 좌우로 버튼 코드
  • 마우스 버튼 코드
  • 키보드 버튼 코드
  • 멈추기 버튼 코드

4. 게 이동 코드 생성하기

- 좌우로 신호 받았을때 게를 좌우로 움직여 봅니다. 여기서는 회전방식을 왼쪽-오른쪽으로 정해서 움직입니다.

- 마우스가 이동하는 곳으로 게가 이동하도록 처리 합니다.

- 키보드의 방향키를 이용하여 게가 이동하도록 처리합니다.

- 멈추기 신호를 받으면 스크립트 실행을 정지합니다.

 

 

 

 

연습문제) 이 프로젝트를 활용해서 좌우로 버튼을 클릭 후에 키보드 버튼을 클릭하면 좌우로 이동하던 스크립트를 멈추고 키보드 이벤트만 동작하도록 바꿔 주세요.

 

더보기

위와 같이 스크립트를 멈추기 한 후에 키보드 이벤트를 실행한다.

 

연습문제 2) 해당 프로젝트의 배경을 바다(Beach) 가 있는 배경으로 바꿔 보고 실행해 보세요.

 

연습문제3) 앵무새(Parrot) 를 추가해서 게보다 속도를 좀더 빠르게 움직이도록 해 보세요.

 

반응형

'블럭형코딩 > 스크래치' 카테고리의 다른 글

05. 상어 피하는 물고기  (0) 2021.07.15
04. 생쥐를 잡아라  (0) 2021.07.13
02. 말하며 움직이는 고양이  (0) 2021.07.08
01. 스크래치 준비하기  (0) 2021.07.08
00. 교재안내  (0) 2021.07.08