본문 바로가기
[ CODING STUDY ]/》스크래치 공부

스크래치16장(조건문, 제어블록, 감지블록, 연산블록)

by MRG 2020. 5. 21.
728x90
반응형

▣ 안녕하세요^^
저번장 숙제는 해보셨나요??
알고리즘 순서도를 설계하는 것도 이제 쉽죠?? ^^
잘하고 계십니다 ㅎㅎ 
앞으로도 화이팅입니다.
오늘은 조건문을 배워보겠습니다. 

▣ 자 조건문이 무엇일까요??
맞습니다.
조건에 맞게 컴퓨터가 우리에 명령을 실행하는 걸 이야기하겠죠?
조건문 블록은 제어블록에 있습니다.

 

▣ 먼저 만약이라면 이 블록을 공부해보겠습니다.
이 블록을 마우스로 더블클릭하면 어떻게 되나요??
네 아무 일도 일어나지 않습니다. 


아직 우리가 조건과
그 조건에 맞는 블록을 넣어주지 않았기 때문입니다. 
그럼 이렇게 코딩을 해볼까요?

 

▣ 이렇게 코딩을 해서 한번 실행해보겠습니다.
벽에 닿았는가는 감지 블록에 있습니다.

 

▣ 이렇게 말이죠.
자 실행하면 어떻게 되나요?

 

 

▣ 깃발을 누르면 블록에 순차적 원리로 첫 번째 1번 움직이기 블록이 실행됩니다.
그리고 2번 벽에 닿으면 이라는 조건을 검사하겠죠.
만약에 벽에 닿여 있지 않으면 
무한 반복문이기 때문에, 다시 1번을 움직이는 블록을 실행하게 됩니다.

▣ 그렇게 계속하다가 벽에 닿였고 2번 차례가 올 때 true가 되고 X0 Y0으로 이동하게 됩니다. 
우리가 계속 공부했던 블록에 순차적 원리와 
알고리즘 순서도를 생각하면 쉽게 
블록을 해석할 수 있습니다. 

▣ 직접 한번 다르게 만들어보세요. 
반대로 움직이셔도 됩니다. 

 

 

▣ 자 그런데 제가 무한반복을 넣었죠?
왜 넣었는지 확인해봅시다.
우선 위에서처럼 코딩을 하고 
더블클릭하면 회전이 되나요?
네 안됩니다. 

▣ 블록을 해석해 보면
마우스로 더블클릭을 하면 벽에 닿았는가를 검사하겠죠?
그럼 현재 닿아 잇지 않으면 
블록이 끝나고 다음 블록을 해야 하는데 
아무것도 없죠?
그래서 아무 반응이 없는 것입니다.
하지만 스프라이트를 벽에 옮겨 놓고 블록을 더블클릭해서 실행하면
회전하는 걸 확인할 수 있습니다. 

▣ 그래서 제가 무한반복으로 계속 조건을 검사할 수 있게 코딩을 했던 것입니다.
이해가 안 되시면 무한반복을 했을 때랑
안 했을 때랑 직접 눈으로 확인해보시고
저처럼 숫자로 표시해서 하나하나 어떻게
순서대로 작동하는지를 해석해보세요.
꼭 해보셔야 합니다.

 

▣ 자 이렇게 감지 블록을 가면 많은 조건 블록들이 있습니다.
그리고 우리가 직접 조건을 만들 수도 있습니다.
한번 감지에 있는 블록들을 한번 사용해볼까요?

 

 

▣ 이렇게 코딩을 해서 실행하면 어떻게 되나요?
마우스를 클릭하면 조건이 참이고 
참이라는 건 true 맞다는 의미입니다.
그래서 10만큼 앞으로 움직이겠죠?
아주 간단합니다.
자 이번에는 이렇게 해볼까요?

 

▣ 깃발을 클릭하고 스페이스키를 누르면 앞으로 가겠죠?
이렇게 하는 방법도 있지만 우리가 이벤트 블록에서 배웠던 블록을 이용해서 
움직였던 코딩을 해보았습니다.

 

 

▣ 이벤트 블록을 이용해서 이렇게 할 수 있는데,
그럼 두 가지에 차이가 무엇일까요?
블록에 종류에서 차이가 있듯이
위에 있는 블록은 조건문이기 때문에 깃발을 누르면 무한으로 조건을 검사해서 실행합니다.
무한반복 중에는 다시 깃발을 누르지 않아도 검사해서 실행한다라는 말이죠.
하지만 이벤트 블록에서 스페이스키를 눌렀을 때는
계속 깃발 버튼을 계속 누르는 것과 동일합니다.
그럼 계속 재시작을 하는 효과가 나오겠죠?


▣ 이 차이를 확실하게 보시려면 
이렇게 두 가지를 코딩하셔서 확인해보세요.

 

 

 

▣ 꼭 각각 코딩을 해보셔서 움직여서 그 차이를 찾아보세요.
꼭 하셔야 합니다.

 

▣ 이번에는 색에 닿았는가를 해볼까요?
이걸 활용하여 어떤 물체를 닿았는가를 색으로 구분하여 코딩할 수 있습니다.
색을 바꾸려면 블록에 원모 양으로 되어 있는 걸 누르시면 되는데

 

 

▣ 이걸 누르면 색상 채도 명도를 설정할 수 있습니다.
하지만 우리가 다른 색을 지정하는데 색상, 채도, 명도 값을 지정하는 게 번거로움이 있겠죠?
다른 물체에 색을 딱 맞게 정하는 것도 어려울 거고요.
그래서 내가 원하는 색을 직접 지정하고 싶다고 하면
저 밑에 있는 스포일러 모양을 누르면 
오른쪽 화면에서 직접 색을 선택하는 화면으로 전환이 됩니다.
그럼 내가 원하는 색을 찍으면 그 색으로 자동으로 바뀌게 됩니다.


▣ 꼭 이것도 해보세요.
색으로 적이나 아이템을 구분할 때 많이 사용합니다. ^^

 

 

▣ 자 그럼 이건 무엇일까요?
네 눈치가 빠르신 분들은 아시겠지만
우리가 코딩했던 부분에서 그 조건이 안 맞으면 
밑에 있는 걸 하겠죠?
아주 간단합니다 ^^


▣ 이건 제가 해드리지 않겠습니다.
직접 한번 만들어서 해보세요.

 

 

 

 

 

▣ 자 이건 연산 블록에 있는 논리 연산자 블록입니다. 
쉽게 이야기하면
우리가 게임을 만들 때에도 조건이 하나만 있을 수 없겠죠?
저 위에 있는 블록처럼 딱 한 가지 조건과 아닌 조건 한 가지만 할 수 없습니다.
특히 게임을 만들 때는 말이죠.
사실 변수를 할 때 하려고 했지만
그래도 조건문에서 너무 중요한 부분이기 때문에 한번 알아보겠습니다. 

▣ 맨 처음에 그리고 블록은 두 조건이 맞으면 참이게 됩니다. 
참은 아까 위에서 말씀드렸듯이 맞다, true를 의미합니다.
조건이 맞아야 실행하겠죠?

▣ 두 번째 또는 블록은 두 조건이 맞으면도 참이고 둘 중에 하나만 맞아도 참이 됩니다. 

▣ 마지막 이 아니다 블록은 참이면 거짓 거짓이면 참 반대에 값을 주게 됩니다. 

 

 

 

▣ 또 연산 블록을 살펴보면 이렇게 관계 연산자도 있습니다.
우리가 수학에서 많이 배웠죠?

 

▣ 이걸 활용하여 이렇게 만들 수 있습니다.
제 고양이 스프라이트에 위치는 X0 Y0이라고 설정했습니다.
그럼 제가 관계 연산자와 논리 연산자를 활용하여 
두 가지 맞는 조건을 넣었습니다.
그리고 블록은 둘 다 맞으면 true 실행을 해준다고 했죠?
이걸 확인하기 위해서 마우스로 더블클릭하면 true라는 값이 나오게 됩니다.

 

 

▣ 이렇게 코딩을 해서 실행을 해보면
두 가지에 조건이 계속 무한으로 맞기 때문에 
90도로 계속 도는 걸 확인할 수 있습니다. 


▣ 눈으로만 보시지 마시고 직접 실습해보세요.

 

 

 

▣ 또한 연산 블록을 보면 이렇게 
연산을 하는 블록도 있습니다. 

 

 

▣ 또는 블록을 활용하여 코딩을 해보았습니다.
둘 다 조건이 맞거나 둘 중에 하나라도 조건이 맞으면 
실행되겠죠?
자 그럼 이렇게만 보면 알 수 없으니
직접 다른 코딩을 만들어서 확인해보겠습니다.

 

 

▣ 자 이렇게 하면 먼저 그리고 블록이 두 가지 조건이 맞으면 작동하겠죠
두가지 조건은
스페이스키를 누르고 스프라이트에 y좌표값이 -117보다 크면 작동해라라고 조건을 주었습니다. 
그럼 제가 원하는 저 위치에 있지 않으면 조건이 참이 되지 않겠죠?
배경에 땅에 그림에 있을 때만 점프를 하기 위해서 저렇게 코딩을 했습니다.
땅에 위치는 -117보다 크기 때문이죠.
그럼 스페이스를 누르면 10번 위로 올라가고 10번 아래로 내려오게 됩니다.


▣ 직접 한번 해보세요.
이 코드를 파악하시는 게 중요합니다. 

 

▣ 자 그럼 알고리즘 순서도를 한번 살펴볼까요?
판단 도형을 어떻게 그리면 될까요?

 

▣ 예를 들어 한 가지만 보여드리겠습니다.
이렇게 조건이 맞으면 참으로 표현해서 x y 처리 도형으로 흐름선을 그려주시고 
참인지 거짓인지를 적어주신 다음에 흐름선을 그리면 되겠습니다.
거짓이면 다시 10만큼 움직이기 때문에 이렇게 옆으로 거짓을 표현하고 흐름선으로 연결해줬습니다.


▣ 이런 식으로 저기 위에 있는 점프 코딩도 한번 알고리즘 순서도를 설계해보세요.

 

 

 

▣ 드디어 조건문을 통해서 
게임다운 걸 만들어 보네요 ^^
자 지금까지 알고리즘 순서도를 잘하셨다라면
이 영상을 보고도 알고리즘 순서도를 설계하실 수 있을 겁니다. 쉽게...

▣ 그러니 꼭 먼저 게임을 해보시고 
그다음에 알고리즘 순서도를 설계한 다음에 
코딩을 진행해주세요.
조건문이 처음이라 어려우실 수도 있지만,
제가 위에서 했던 것처럼 
블록 하나하나를 따라가고 해석하면서 코딩을 하시면 
하실 수 있습니다. 

▣ 너무 어려워서 안 되는 시는 분은
댓글을 남겨주세요.
그럼 제가 따로 챕터를 나눠서 만들던지 
따로 정답을 드리겠습니다. 

▣ 자 오늘은 이렇게 조건문을 배웠습니다. 
코딩에서 반복문과 조건문이 50% 이상을 차지합니다. 
아니 거의 70%라고 해도 되겠네요 ㅎㅎ
그러니 조건문 부분 꼼꼼하게 읽어주시고
숙제 그리고 해보라고 말씀드린 건 하나하나 해주세요.
어렵지만 천천히 알고리즘 순서도를 설계하고 코딩 진행해주시거 잊지 마시고요.
질문 있으시면 댓글 남겨주세요.
그럼 다음장에서 뵙겠습니다. 

▣ 포기하지 마세요!! 저도 했습니다!!! 파이팅!!!

728x90
반응형

댓글