7. 공 굴리기 게임(엔트리)
【배우기】
1. 엔트리로 게임 만드는 방법 알기
2. 엔트리로 게임 만들기
1엔트리로 게임 만드는 방법 알기
앞에서 모든 블록 프로그램 코딩인 엔트리에 대해서 이해하고 학습하였다면, 이 번 단원에서는 엔트리 블록 프로그램으로 간단한 게임을 만들어 보려고 한다. 그렇다면 엔트리로 게임을 어떻게 만들 수 있을까? 우선 엔트리로 게임을 만들기 위해서는 어떤 게임을 만들지에 대해서 먼저 생각하여야 한다. 그리고 게임에 대한 정보를 수집하고, 게임에 대한 전략을 수립한다. 게임에 대한 전략이 수립되었다면,다음으로 어떻게 게임을 구성하고 문제를 해결해야 하는지 생각한 후 게임을 만들면 된다. 따라서 우리는 이 번 단원을 통해서 엔트리로 게임을 어떻게 만들 것인지를 살펴보고, 간단한 프로그램으로 게임을 만들어 보도록 하자.
1. 엔트리로 게임 전략 수립하기
엔트리로 게임을 만들 전략을 먼저 수립하여 보도록 하자. 그렇다면 게임의 전략을 수립하기 위해서 게임에 대한 주제 또는 목적이 있어야 하는데, 우리는 이번 단원에서 보치아와 관련된 게임을 생각하여 보도록 하자. 보치아를 생각해보면, 보치아는 표적구를 던져놓고, 적색공과 청색 공을 규칙에 의해 던져서 표적구에 가까운 공의 숫자가 점수가 되며 규칙에 점수의 합으로 승패를 결정하게 된다. 또한 공의 수는 적색과 청색 각 6개의 시합공과 백색의 표적구 1개로 구성되어 있다. 따라서 게임을 만들 때, 게임의 목적을 보치아 게임에서 공을 활용하듯이 공과 관련된 게임이라고 목적을 가질 수 있으며, 공을 던지거나 굴리는 게임을 생각할 수 있다. 그래서 이 번 게임의 전략은 공과 관련된 게임이며, 보치아 게임과 비슷하게 구성하는 것에서부터 단순화하는 게임까지 생각하며 게임의 전략을 수립한다.
2. 엔트리 게임의 문제 해결하기
이번 게임을 만들 때의 문제점을 생각하여 보자. 우선 첫 번째로 보치아 경기와 같은 구조의 게임을 만들기 위해서는 많은 시간이 필요하며, 게임이 경기 규칙에 따라 구성되어야 하는 어려움이 있다. 두번째로는 게임을 위한 많은 캐릭터와 배경이 필요하다. 그리고 마지막으로 게임에 필요한 수학적 계산이나 게임에 적용해야 하는 기능에 대한 적용의 어려움이 있다. 그렇다면 어떻게 문제를 해결할 수 있을까 생각해 보자. 우선은 보치아 게임에서 가장 단순화할 수 있는 부분까지 생각해보면, 공을 굴리거나던지는 방법까지 생각해 볼 수 있다. 따라서 이번 게임은 공을 위에서 떨어뜨려서 굴려가는 방법으로 문제를 해결할 수 있다. 그리고 두 번째는 게임이 단순화되었으므로 엔트리에서 제공되는 배경과 캐릭터를 충분히 활용한다. 그리고 마지막으로 게임의 기능은 단순화 시켜 버튼을 구성하여 공이 굴러갈 수 있도록 하고, 공의 거리를 비교하여 승패를 결정할 수 있도록 하여 문제를 해결한다.
2엔트리로 게임 만들기
게임을 만들기 위한 방법이 수립되고 해결되었다면 다음으로는 게임을 직접 만들어 보도록 하자. 게임을 만들기 위해서는 게임이 실행된 장소인 배경이 먼저 필요하다. 그리고 게임을 실행할 하나의 캐릭터와 공이 필요하며, 다음으로는 공을 굴릴 수 있는 버튼이 필요하다. 게임을 위한 구성이 모든 준비되었다면, 다음으로는 직접 엔트리 블록 코딩을 하며, 하나씩 학습하여 보도록 하자.
2단원 2차시의 지체장애 학생을 위한 컴퓨터 환경 만들기의 PC 태블릿 모드 사용법을 참고하여 터치모니터와 함께 사용해보자.
1. 오브젝트 추가
2. 오브젝트에 엔트리 블록 코딩
순번 4 오브젝트를 클릭 (버튼1)
블록탭-[시작]-[오브젝트를 클릭했을 때]
블록탭-[시작]-[공 신호 보내기]
블록탭-[시작]-[버튼1 신호를 받았을 때]
블록탭-[생김새]-[모양 숨기기]
순번 5 오브젝트를 클릭 (버튼2)
블록탭-[시작]-[오브젝트를 클릭했을 때]
블록탭-[시작]-[공2 신호 보내기]
블록탭-[시작]-[버튼2 신호를 받았을 때]
블록탭-[생김새]-[모양 숨기기]
블록탭-[시작]-[결과 신호 보내기]
순번 6 오브젝트를 클릭 (공)
블록탭-[시작]-[공 신호를 받았을 때]
블록탭-[움직임]-[2초 동안 x: 10 y: 10 위치로 이동하기]-x의 10을 -170으로 y의 10을 -110으로 변경
블록탭-[움직임]-[2초 동안 x: 10 y: 10 위치로 이동하기]-x의 10을 -170으로 y의 10을 -90으로 변경하고 2초를 1초로 변경
블록탭-[움직임]-[2초 동안 x: 10 y: 10 위치로 이동하기]-x의 10을 -170으로 y의 10을 -110으로 변경하고 2초를 1초로 변경
블록탭-[자료]-[temp을 10로 정하기]-[계산]-[0부터 10까지 사이의 무작위 수]- 10을 “0부터 200 사이의 마작위 수”의 블록으로 삽입 변경
블록탭-[움직임]-[2초 동안 x: 10 y: 10 위치로 이동하기]-x의 10을 temp 값으로 y의 10을 -100으로 변경하고 2초를 1초로 변경
블록탭-[자료]-[result1을 10로 정하기]-[자료]-[temp 값]- 10을 temp값으로 변경
블록탭-[시작]-[버튼1 신호 보내기]
순번 7 오브젝트를 클릭 (공2)
블록탭-[시작]-[공2 신호를 받았을 때]
블록탭-[움직임]-[2초 동안 x: 10 y: 10 위치로 이동하기]-x의 10을 -170으로 y의 10을 -110으로 변경
블록탭-[움직임]-[2초 동안 x: 10 y: 10 위치로 이동하기]-x의 10을 -170으로 y의 10을 -90으로 변경하고 2초를 1초로 변경
블록탭-[움직임]-[2초 동안 x: 10 y: 10 위치로 이동하기]-x의 10을 -170으로 y의 10을 -110으로 변경하고 2초를 1초로 변경
블록탭-[자료]-[temp을 10로 정하기]-[계산]-[0부터 10까지 사이의 무작위 수]- 10을 “0부터 200 사이의 마작위 수”의 블록으로 삽입 변경
블록탭-[움직임]-[2초 동안 x: 10 y: 10 위치로 이동하기]-x의 10을 temp 값으로 y의 10을 -100으로 변경하고 2초를 1초로 변경
블록탭-[자료]-[result2을 10로 정하기]-[자료]-[temp 값]- 10을 temp값으로 변경
블록탭-[시작]-[버튼2 신호 보내기]
순번 8 오브젝트를 클릭
블록탭-[시작]-[결과 신호를 받았을 때]
블록탭-[흐름]-[만일 참 이라면]-[판단]-[10>10]-10을 result1 값으로 변경, 10을 result2로 변경한 후, 참에 삽입
블록탭-[생김새]-[안녕!을 4초동안 말하기]- “안녕”을 “최고점수는”으로 변경하고, 4초를 2초로 변경
블록탭-[생김새]-[안녕!을 4초동안 말하기]- “안녕”을 “첫 번째 선수 입니다. 점수는”으로 변경하고, 4초를 2초로 변경
블록탭-[생김새]-[안녕!을 4초동안 말하기]- “안녕”을 result1 값으로 변경하고, 4초를 2초로 변경
블록탭-[흐름]-[만일 참 이라면]-[판단]-[10<10]-10을 result1 값으로 변경, 10을 result2로 변경한 후, 참에 삽입
“최고점수는”으로 변경하고, 4초를 2초로 변경
블록탭-[생김새]-[안녕!을 4초동안 말하기]- “안녕”을 “두 번째 선수 입니다. 점수는”으로 변경하고, 4초를 2초로 변경
블록탭-[생김새]-[안녕!을 4초동안 말하기]- “안녕”을 result2 값으로 변경하고, 4초를 2초로 변경
3. 엔트리 블록 코딩 실행 결과
엔트리로 공 굴리기 게임을 만들었다면, 게임의 실행 결과는 아래와 같다.
공 굴리기 게임의 실행 결과를 살펴보면, 가장 먼저 버튼 1의 버튼을 누른다. 버튼이 눌려지면, 첫 번째 선수의 공이 위에서 아래로 떨어진 후 앞으로 굴려져서 이동한다. 그리고 버튼 1이 사라진다. 그리고 다시 버튼 2를 누르면, 두 번째 선수의 공이 위에서 아래로 떨어진 후 앞으로 굴려져서 이동하게 된다. 그리고 캐릭터에서는 두 선수의 공의 거리를 비교하여 이긴 선수의 점수를 출력하여 준다.