7. 스프라이트의 동작 순서 정하기 7.1 타이머에 의해 실행 제한하기 (1)타이머 (timer) 프로젝트가 실행됨과 동시에 타이머 기능은 자동실행된다 사용자는 타이머로 시간을 감지할 수 있다 사용자는 타이머 동작을 멈출 수 없다 타이머 관련 블록: [감지] / [타이머]: 왼쪽에 체크를 설정하면 무대에 타이머가 나타난다 경과된 시간을 감지해 주는 변수? [감지]/ [타이머 초기화]: 타이머의 시간 값을 0으로 초기화 7. 스프라이트의 동작 순서 정하기
타이머 활용 일정한 시간제한을 설정: “타이머 > 10” 과 같은 조건비교를 사용하여 일정한 시간마다 지속적으로 타이머를 초기화 타이머가 설정된 시간에 도달: - 특정한 일 실행 (예. [형태]/[…를 ~초 동안 말하기]) - 수신처에서 특정한 일 처리 (예. [이벤트]/[…을 방송하기] 로 메시지 방송) - 특정 이벤트를 실행 (예. [이벤트]/[타이머>…일 때] 7. 스프라이트의 동작 순서 정하기
(2)스프라이트 복제 [제어]/[ … 복제하기]: 스스로를 복제하거나 다른 스프라이트 복제 가능 복제된 스프라이트: 복제된 시점의 원본 스프라이트의 상태와 스크립트 블록들을 그대로 상속받는다. 스크립트 블록들을 일부 수정 사용 가능. [제어]/[복제되었을 때]: 복제가 이루어 졌을 때의 이벤트 처리 [제어]/[이 복제본 삭제하기]: 복제된 스프라이트 삭제 7. 스프라이트의 동작 순서 정하기
프로젝트 7-1 타이머에 따라 스프라이트 복제하고 삭제하기 프로젝트 7-1 타이머에 따라 스프라이트 복제하고 삭제하기 Scratch>만들기 클릭 프로젝트 명칭을 입력 (예. PR71) S1: 무대제어창 클릭 새로운 배경: 아래에 있는 ‘저장소에서 배경선택’ 아이콘 클릭 배경저장소에서 [tree]선택 후 [확인]버튼을 클릭 S2: [Sprite1] 클릭 [스크립트] 탭 클릭 [이벤트]/[깃발 클릭 했을 때] 를 스크립트영역에 배치 [형태]/[숨기기] 추가 [감지]/[타이머 초기화] 추가 [감지 ]/[타이머]의 체크설정 7. 스프라이트의 동작 순서 정하기
S3 [제어]/[무한반복하기] 를 [타이머 초기화]에 추가 [제어]/[만약 <> 이라면 … ] [감지]/[타이머] [연산]/ [ … > … ] 위 세 블록을 이용하여 [제어]/[만약 < 타이머>2 > 이라면 … ] 을 구성하여 무한 반복하기 내부에 배치 [제어]/[나자신 복제하기]를 [만약 <> 이라면 … ] 내부에 배치 [감지]/[타이머 초기화]를 [나자신 복제하기]에 추가 7. 스프라이트의 동작 순서 정하기
S4, S5 S4: [제어]/[복제되었을 때] 를 스크립트영역에 배치 [동작]/[랜덤위치 위치로 이동하기] [형태]/[보이기] [형태]/[ “안녕” 를 0.5초 동안 말하기] [제어]/[ 4 초 기다리기] [형태]/[ “만나서 반가웠어~” 를 0.5초 동안 말하기] [제어]/[ 이 복제본 삭제하기] S5: [이벤트]/[이 스프라이트가 클릭될 때]를 스크립트영역에 배치 [제어]/[모두 멈추기] 7. 스프라이트의 동작 순서 정하기
7.2 메시지 방송하기로 상호작용하기 상호작용 프로젝트 <= = = > 사용자 프로젝트 <= = = > 사용자 스프라이트1 <= = = > 스프라이트2 스프라이트1 <= = = > 스프라이트1 상호작용을 위하여 메시지(message)를 방송(broadcast)하는 기능을 지원 [이벤트]/[ . . . 방송하기] : 다른 스프라이트나 자신에게 메시지를 방송 [이벤트]/[ . . . 을 받았을 때]: 방송이 된 메시지를 수신할 때 [이벤트]/[ . . . 방송하고 기다리기]: 메시지 방송한 후 상대방이 메시지를 받아 해당일을 끝내기 전까지 기다리게 되며, 상대방의 일이 끝난 후에야 기다리는 것을 끝내고 다음 일을 하게 된다. 191쪽 3곳의 [… 방송하고 기다리기] 7. 스프라이트의 동작 순서 정하기
프로젝트 7-2 타이머와 메시지에 의해 게임 종료 안내하기 Scratch>만들기 클릭 프로젝트 명칭을 입력 (예. PR72) S1: 무대제어창 클릭 새로운 배경: 아래에 있는 ‘저장소에서 배경선택’ 아이콘 클릭 배경저장소에서 [pathway]선택 후 [확인]버튼을 클릭 [배경]탭에서 [pathway]위의 기본 무대배경 [backdrop1]을 클릭 후 [backdrop1] 오른쪽 위의 x 부분을 눌러 삭제한다 7. 스프라이트의 동작 순서 정하기
S2 [Sprite1] 의 왼쪽 위의 ‘i’를 클릭 [스프라이트 정보 창]: 이름을 “Sprite1” 에서 “톰” 으로 변경 회전방식을 ‘왼쪽-오른쪽’ 으로 설정 이전버튼(◀ ) 클릭하여 [… 정보 창]을 닫음. 새로운 스프라이트 우측의 [저장소에서 스프라이트 선택] 아이콘을 클릭 [스프라이트 저장소]에서 스프라이트 [Bat1] 선택, 확인버튼 [Bat1]을 클릭 [Bat1] 의 왼쪽 위의 ‘i’를 클릭 이름을 “Bat1” 에서 “박쥐” 로 변경 7. 스프라이트의 동작 순서 정하기
S3 [무대 제어창] 을 클릭 [이벤트]/[깃발 클릭 했을 때] 를 스크립트영역에 배치 [감지]/[타이머 초기화] [제어]/[무한 반복하기] [제어]/[만약 <> 이라면 … ] [감지]/[타이머] [연산]/ [ … > … ] 위 세 블록을 이용하여 [제어]/[만약 <타이머 > 5> 이라면 … ]을 구성하여 무한 반복하기 내부에 배치 [이벤트]/[새 메시지 방송하고 기다리기]를 실행 [새로운 메시지]창에서 메시지 이름으로 “시간종료” 입력, 확인 에 의해 [이벤트]/[시간종료 방송하고 기다리기]를 구성하여 [만약 <> 이라면…] 내부에 배치 7. 스프라이트의 동작 순서 정하기
S4, S5 S4: 스프라이트 창에서 [톰]을 클릭 [이벤트]/[깃발 클릭 했을 때] 를 스크립트영역에 배치 [동작]/[x:-170 y:-120 으로 이동하기] [형태]/[크기를 60% 로 정하기] S5: [제어]/[무한 반복하기] 를 [… 로 정하기]에 추가 [형태]/[다음모양으로 바꾸기] [동작]/[벽에 닿으면 튕기기] 위 2블록을 [무한 반복하기] 내부에 배치 [제어]/[만약 <> 이라면 … ] [감지]/<오른쪽 화살표 키를 눌렀는가?> 위 두 블록을 이용하여 [제어]/[만약 <오른쪽 화살표 키를 눌렀는가?> 이라면 … ]을 구성하여 [ … 튕기기]에 추가 [동작]/[x좌표를 5 만큼 바꾸기]를 [ . . . 이라면] 내부에 배치 7. 스프라이트의 동작 순서 정하기
S5 (계속) [만약 <오른쪽 화살표 키를 눌렀는가?> 이라면 … ] 을 복사하여 [만약 <오른쪽 … ?> 이라면 … ]에 추가 추가된 블록을 아래와 같이 변경: 오른쪽 화살표 를 왼쪽 화살표 로 5만큼 을 -5 만큼 으로 [제어]/[만약 <> 이라면 … ] 과 [감지]/<위쪽 화살표 키를 눌렀는가?>를 이용하여 [제어]/[만약 <위쪽화살표 키를 눌렀는가?> 이라면 … ]을 구성 [동작]/[y좌표를 5 만큼 바꾸기]를 [ . . . 이라면] 내부에 배치 [만약 <위쪽 화살표 키를 눌렀는가?> 이라면 … ] 을 복사하여 [만약 <위쪽 … ?> 이라면 … ]에 추가 위쪽 화살표 를 아래쪽 화살표 로 7. 스프라이트의 동작 순서 정하기
S6 [제어]/[만약 <> 이라면 … ] 과 [감지]/<박쥐에 닿았는가?> 를 이용하여 [제어]/[만약 <박쥐에 닿았는가?> 이라면 … ]을 구성하여 [만약 <아래쪽 … ?> 이라면 … ]에 추가 [형태]/[잡았다! 말하기] 를 [ … 닿았는가?> 이라면 … ]의 내부에 배치 [이벤트]/[잡았음 방송하고 기다리기] (구성방법은 S3참조) 를 [ … 말하기]에 추가 [제어]/[모두 멈추기] 를 [ … 방송하고 기다리기]에 추가 7. 스프라이트의 동작 순서 정하기
S7, S8 S7: [이벤트]/[시간종료를 받았을 때] 를 스크립트영역에 배치 [형태]/[어휴, 잡지못했네. 를 2 초동안 말하기] [제어]/[스프라이트에 있는 다른 스크립트 멈추기] [형태]/[음, 다음엔 잡아야지~ 말하기] [이벤트]/[잡지 못함 방송하고 기다리기] [제어]/[모두 멈추기] S8: 203쪽 [톰] 스프라이트의 전체스크립트 7. 스프라이트의 동작 순서 정하기
S9, S10 S9: 스프라이트 창에서 [박쥐]를 클릭 [이벤트]/[깃발 클릭 했을 때] 를 스크립트영역에 배치 [동작]/[x:200 y:150 으로 이동하기] [형태]/[크기를 50% 로 정하기] [형태]/[보이기] S10: [제어]/[무한 반복하기] 를 [보이기]에 추가 [동작]/[6 만큼 움직이기] [형태]/[다음모양으로 바꾸기] [동작]/[오른쪽으로 2 도 돌기] [동작]/[벽 에 닿으면 튕기기] 위 4개의 블록을 [무한 반복하기] 내부에 배치 7. 스프라이트의 동작 순서 정하기
S11, S12 S11: [제어]/[만약 <> 이라면 … ] 과 [감지]/<벽 에 닿았는가?> 를 이용하여 [제어]/[만약 <벽에 닿았는가?> 이라면 … ]을 구성하여 [… 튕기기 ]에 추가 [동작]/[랜덤위치 위치로 이동하기]를 [만약 <벽에 닿았는가?> 이라면 … ]의 내부에 배치 S12: [제어]/[만약 <> 이라면 … ] 과 [감지]/<톰 에 닿았는가?> 를 이용하여 [제어]/[만약 <톰 에 닿았는가?> 이라면 … ]을 구성하여 [만약 <벽에 닿았는가?> 이라면 … ]에 추가 7. 스프라이트의 동작 순서 정하기
S12 (계속) [소리]탭 을 클릭 [저장소에서 소리 선택] 아이콘을 클릭 [소리저장소]에서 [boing]을 선택, 확인 (이 때 pop에 이어서 두번째 소리 boing이 새로운 소리로 등록되고, 파형이 편집창에 표시된다) [소리]/[boing 재생하기] 를 [만약 <톰 에 …> 이라면 … ]의 내부에 배치 아래 4개의 블록을 [boing 재생하기]에 추가: [형태]/[소용돌이 효과를 300 만큼 바꾸기] [제어]/[1초 기다리기] [형태]/[숨기기] [제어]/[모두 멈추기] 7. 스프라이트의 동작 순서 정하기
S13, S14, S15 S13: [이벤트]/[시간종료 를 받았을 때] 를 스크립트영역에 배치 [제어]/[스프라이트에 있는 다른 스크립트 멈추기] [형태]/[안잡혔다! 를 1 초 동안 말하기] S14: [이벤트]/[잡지못함 을 받았을 때] 를 스크립트영역에 배치 [형태]/[계속 피해 다녀야지! 를 1 초 동안 말하기] [제어]/[1초 기다리기] 위의 3개의 블록을 복사하여 [이벤트]/[잡았음 을 받았을 때] 를 스크립트영역에 배치 [형태]/[앞으로 잡히지 말아야지! 를 1 초 동안 말하기] S15: 박쥐 스프라이트의 전체스크립트: 209쪽 7. 스프라이트의 동작 순서 정하기