월드 미션 CODE 30. 좌표와방향
-과일 위치 알려주기 1. 토마토가 있는 셀로 이동 2. 토마토의 x좌표와 y좌표를 출력
3. "토마토 주세요."를 출력
repeat(“move()”,3);
turn_left();
repeat(“move()”,2);
set_color('yellow');
x=get_x(); y=get_y();
name = what_object();
print("토마토의 x좌표는 " +x);
print("토마토의 y좌표는 " +y);
print(name +" 주세요.");
31. 좌표와방향 - 어느 방향 을 바라보는지 알아내기
플레이봇이 (1,3)에서 출발 (1,1), (4,1), (4,2), (1,2)위치 를 차례로 방문할 때, 각각의 위치에서 발자국방향으로 플레 이봇을 회전시킨 후에
어느 방향을 바라보고 있는지 확인한 값을 출력한다.
미션수행 후 플레이봇은 목표 지점으로 이동.
<출력형식>
방향 확인 값 = 0 방향 확인 값 = 1 방향 확인 값 = 2 방향 확인 값 = 3
get_direction() : 플레이봇이 어느 방향을 바라보고 있는지 알아내는 함수, 플레이봇이 바 라보는 방향에 따라 (동쪽), 1 (북쪽), 2 (서쪽), 3 (남쪽)을 돌려준다
repeat(“move()”,2);
turn_left();
a=get_direction();
print("방향확인 값 = " +a);
clear_color();
repeat(“move()”,3);
turn_left();
a=get_direction();
print("방향확인 값 = " +a);
clear_color();
move();
turn_left();
a=get_direction();
print("방향확인 값 = " +a);
clear_color();
repeat(“move()”,3);
turn_left();
a=get_direction();
print("방향확인 값 = " +a);
clear_color();
turn_left();
repeat(“move()”,4);
turn_left();
move();
pick_object();
31-1. 좌표와방향 - 어느 방향 을 바라보는지 알아내기
플레이봇이 (1,1) - (5,1) - (5,5) - (1,5) 순으로 이동, 각 셀로 이동했을 때 발자국과 같은 방향으로 바라보게 하고 출력형식처럼 로봇의 방향 확인 값을 출력한다.
그리고 clear_color() 함수를 사 용하여 발자국이 있는 위치의 색을 지운다.
* 규칙을 찾고, 찾은 규칙을 사 용자 정의 함수로 만들어서 해 결
function 방향확인() { repeat("move()", 4) // 이동
turn_left() // 왼쪽으로 회전
a=get_direction() // 방향 확인
print("방향 확인 값 = "+a) // 방향 출력
clear_color() // 색 지우기
}
repeat("방향확인()", 4)
32. 좌표와방향, if문 - 강아 지집의 좌표출력
플레이봇이 강아지에게 먹이를 주러 강아지 집까지 간다.
강아지 집에 도착했을 때 플레이봇의 x좌표와 y좌표를 출력한다.
로봇의 방향이 바라보는 방향을 if문 을 활용하여 출력한다.
깃발 위치의 도착지점 색을 파란색 ("blue")으로 바꾼다.
// 새로운 명령어를 만드는 공간 function turn_right() { repeat(“move()”,3); } // 명령어를 실행하는 공간 move();move();
turn_right();
move();move();move();
turn_right();
move();
x=get_x();
y=get_y();
a=get_direction();
print("X의 좌표는 " + x);
print("Y의 좌표는 " + y);
if (a==0) {
print ("방향은 동쪽") } else if (a==1) {
print ("방향은 북쪽") } else if (a==2) {
33. 논리연산자
[미션] 플레이봇이 길을 가다가 장애 물을 만났다. 장애물이 문일 경우 문 을 열고 통과해서 도착지점까지 이동 할 수 있도록 프로그램을 작성하세요 [논리연산자] 여러 개의 조건을 조합 하여 보다 복잡한 조건을 나타낼 때 사용하는 것이 논리 연산자이다
&& (그리고 , AND) 연산자 → (a>=5)&&(a<10) 의 의미는 (a는 5보 다 크거나 같다) 그리고 (a는 10보다 작다)
따라서 a는 5보다 크거나 같고 10보 다 작은 수
|| (또는 , OR) 연산자 → (a==5)||(a==10) 의 의미는 (a는 5와 같다) 또는 (a는 10과 같다) 따라서 a 의 값은 5 또는 10
! (부정, NOT) 연산자
!(a==5) 의 의미는 (a는 5와 같다)가 니다 따라서 a는 5가 아니다 a && b a와 b를 모두 만족할때 참 a || b a 또는 b중 하나라도 만족하 면 참
! a : a가 아니다. a가 참이면 거짓, a가 거짓이면 참
// 새로운 명령어를 만드는 공간 function 장애물확인후이동() { a = front_is_wall()
b = front_is_door() if (a==false && b==true) { open_door() } move()
}
// 명령어를 실행하는 공간 repeat("장애물확인후이동()",3);
pick_object();
35. get_random() - 임의의 숫자만큼 이동하기
[미션] 플레이봇이 1~4 까지 의 숫자 중 임의의 숫자만큼 앞 으로가기 get_random() 함수를 활용하여 이동하기
밝은초록색셀을 파란색("blue") 으로 칠하고, 도착지점으로 이 동하여 깃발을 뽑(줍)도록 도와 주세요
[함수]get_random(작은수, 큰 수) 작은 수와 큰 수 사이의 숫 자 중에서 임의로 하나를 골라 주는 함수이다.
a=get_random(1,4);
repeat("move()",a);
popup(a +"칸 이동");
repeat("move()",4-a);
turn_left();
move();
set_color("blue");
turn_left();
move();
pick_object();
36. get_random(), if문 - 제비뽑기(가위바위보)
[미션] 플레이봇이 1~3까지 의 숫자 중 하나를 뽑은 결과를 아래의 출력형식과 같이 출력하 고 해당되는 숫자 만큼 앞으로 이동하고 1이면 가위, 2이면 바위, 3이면 보라고 출력한다.
그리고 도착지점 아래의 밝은초 록색 셀의 색을 파란색으로 칠 하고 도착지점의 깃발을 뽑(줍) 도록 도와주세요.
- get_random(), if문 을 활용 하여 해결하여 보세요.
a=get_random(1,3)
say("제비뽑은 숫자는 " +a);
repeat("move()",a);
if (a==1) {
say("결과는 가위") } else if (a==2) { say("결과는 바위") } else {
say("결과는 보") }
repeat("move()",4-a);
set_color("blue");
turn_left();
move();
pick_object();
37. for문 100까지 더하기
[미션] 플레이봇 학생들~!
이번에는 1부터 100까지 숫자의 합을 구해주세요. 결과는 얼마 인지
계산하여 출력형식처럼 출력하 고 모서리 네 군데의 밝은초록 색을 파란색("blue")으로 바꾸고 도착지점으로 이동하시오.
[출력형식] popup() 함수를 사 용하세요.
100까지의 합은 5050
[ 반복문 - for문 ] for문은 반 복처리를 효율적으로 수행하기 위한 제어문이다. 일반적으로 초기값, 반복을 계속하기 위한 조건, 증가방법을 차례로 표기 하며 이 세 가지 요소에 의해 반복횟수를 결정된다.
sum=0;
for (i=1 ; i<=100 ; i++) { sum=sum+i;
}
popup("100까지의 합은 "+sum);
for (i=1 ; i<=4 ; i++) { move(); move();
turn_left();
set_color("blue") }
move();
turn_left();
move()
38. for문 레인번호 표시 [미션] 플레이봇! 운동회를 맞 이하여 육상 경기장에 레인을 표시해야 한다. 4명이 달릴 수 있도록 1~4까지 각각의 레인(분 홍색셀)에 비퍼를 이용하여 레 인번호를 표시해라. 오바.
for (i=1 ; i<=4 ; i++) { move();
repeat("put_beeper()",i) }
move();move();
39. for문 - 바닥 색 알아내 기
[미션] 플레이봇 학생들~! 바 닥에 칠해진 색이 무엇인지 말 해볼까요?
for (i=1 ; i<=4 ; i++) { move();
c=get_color() say(c) }
turn_left();
move();
pick_object();
40. while문 1부터 100까지 합
[미션] while문을 활용하 여 1부터 100까지의 합을 계 산하고 출력해 보세요.
[while문]
while ( 조건식) { 해야 할 일 }
조건식에 만족 하는 동안 반 복하는 반복문 while문은 어떤 조건이 성립하는 동안 만 반복을 수행하는 제어문 이다.
sum=0;
i=0;
while (i<=100) { sum=sum+i;
i++;
}
popup("100까지의 합은 " +sum);
i=1
while (i<=4) { move(); move();
turn_left();
set_color("red");
i++;
}
move(); turn_left(); move();
put_object("도착")
41. switch문 윷놀이
[미션] 뒤집힌 막대수에 따른 윷놀 이
- 왼쪽의 소스를 이해한다.
- 윷을 던저 나온 결과 자리에 "흰바 둑알"를 한 그루 심고 목표지점으로 이동하여 깃발 위치 셀색을 파란색 ("blue")으로 칠해 주세요.
[ switch문 ] switch문은 여러 개의 case라는 선택의 가지에서 조건식의 값과 일치하는 것을 골라 해당되는 처리를 실행한다. 조건식의 값은 숫 자와 문자 모두 가능하며, 어떤 case 와도 맞지 않을 경우는 default로 넘 어간다. 각 case의 마지막에는 break 문을 써서 조건식의 값과 일 치하는 선택만 처리할 수 있도록 한 다.
a = get_random(1, 5) switch (a) {
case(1):
b="도"
break case(2):
b="개"
break case(3):
b="걸"
break case(4):
b="윷"
break default:
b="모"
}
c = "윷을 던지세요."
say(c) popup(b)
repeat("move()",a);
put_object("흰바둑알");
repeat("move()",9-a);
set_color("blue");
42. 1차원 배열
[미션] 일차원배열을 만들고 길 이를 구한 후에 자료를 출력해 보세요.
[배열] 동일한 특성을 가지며 일 정한 규칙에 따라 몇몇 요소가 나열되어 있는 데이터 집합을 묶어서 배열이라고 한다. 배열 은 복수의 동일한 형의 변수를 하나로 묶은 것으로 대량의 데 이터를 취급할 때나 여러 데이 터를 차례로 자동적으로 입출력 해야 할 때 사용하면 편리하다.
배열은 하나의 공간을 여러 개 a=[];
a[0]="유재석"
a[1]="강호동"
a[2]="신동엽"
a[3]="김연아"
a[4]="손연재"
b=a.length;
print("출연하는 연예인은 "+b+"명");
for (i=0 ; i<b ; i++) { print(a[i]) set_text(i);
move() }
43. 2차원 배열
[미션] 이차원배열을 만들고 길 이를 구한 후에 자료를 출력해 보세요.
[배열] 배열은 요소의 수에 따라 x축으로 늘어나는 것을 1차원 배열, x축과 y축으로 늘어나는 것을 2차원 배열이라고 한다.
a=[
["현아","신우","태우","호영"], ["민아","산들","호영","영수"]
] b=a.length
print("줄의 개수는 "+b);
for (i=0 ; i<b ; i++) { p ="a["+i+"]"
for (j=0 ; j<=3 ; j++) { q="["+j+"] = "
print(p+q+a[i][j]) set_text(i,j,i*5+j) set_color(i,j,"pink") }
move();
}
put_object("도착") move();
44. 토마토 주세요.
플레이봇이 가게를 운영하고 있 어요. 산타클로스 손님이 토마 토를 사러 왔습니다.
진열대를 둘러보고 진열되어 있 는 물건을 배열에 저장한 후에 가게에 있는 과일을 알려주고 산타클로스에게 토마토가 있는 위치를 알려주도록 도와주세요.
- 목표지점에 도착하면 깃발을 주워 주세요.
[출력형식]
저희 가게에 있는 물건입니다.
수박 포도 토마토 딸기 호박
토마토는 (4,3)에 있어요.
[미션 수행과정]
1) 진열대를 분홍색길을 이동하 면서 배열에 물건의 이름을 저 장한다. (배열선언 및 배열에 저 장)
2) 물건이 토마토이면 토마토의 좌표값을 저장한다.
3) 분홍색길을 따라 목표지점으
fruit = []
// 물건의 이름을 저장하기 위해 배열 선언
for (i=1 ; i<=5 ; i++) { move()
fruit[i] = what_object()
// 물건의 이름을 알아내어 fruit배열에 저장
if (fruit[i] == "토마토") { x = get_x()
y = get_y() } // 토마토의 좌표 저장
}
move();turn_left();
move(); move(); turn_left();
print("저희 가게에 있는 물건입니다. ") for (i=1 ; i<=5 ; i++) { print(fruit[i]) } // 물건의 이름을 출력
print("토마토는 ("+x+","+y+")에 있습니다.") pick_object()
45. 미로 찾기
[미션] 플레이봇이 미로 갖혀 있 습니다. 미로를 빠져나와 ‘도착’
지점까지 무사히 도착할 수 있 도록 도와주세요.
오른손 법칙은 미로가 모두 연 결되어 있다면(폐구간) 오른손으 로 벽을 잡고 따라가면 출구를 찾을 수 있는 방법입니다.
[알고리즘]
① 오른쪽에 벽이 없을 경우 : 오른쪽으로 회전 앞으로 한칸 이동
② 오른쪽에 벽이 있으면서 앞 쪽에 장애물이 있을 경우 : 왼 쪽으로 회전
③ 오른쪽에 벽이 있으면서 앞 쪽에 장애물이 없을 경우 : 앞 으로 한칸 이동
④ 목표지점에 도달할 때까지
① ② ③ 과정을 반복한다.
// 새로운 명령어를 만드는 공간 function turn_right() { repeat("turn_left()",3) }
// 명령어를 실행하는 공간 while ( what_object() != "도착") { if ( right_is_clear() ) { turn_right()
move()
} else if ( front_is_clear() ) { move()
} else {
turn_left() } }
pick_object()