Files
cat/correct/2512_CAS_2_A.json

832 lines
24 KiB
JSON
Raw Normal View History

2025-12-30 16:58:27 +09:00
{
"1-1": {
"type": "scene",
"ele": "$..objects[?(@.name=='작업실')]",
"point": 1.7,
"desc": "문제 1/장면 1/[배경] 이름 설정 1/이름을 '작업실'로 변경하기",
"sort": 11
},
"1-2": {
"type": "scene",
"ele": "$..objects[?(@.name=='로봇방')]",
"point": 1.7,
"desc": "문제 1/장면 2/[배경] 이름 설정 2/이름을 '로봇방'으로 변경하기",
"sort": 12
},
"1-3": {
"type": "scene",
"ele": "$..objects[?(@.name=='렌치')]",
"point": 1.6,
"desc": "문제 1/렌치/[개체] 이름 설정 1/이름 변경 없음",
"sort": 13
},
"1-4": {
"type": "scene",
"ele": "$..objects[?(@.name=='로봇')]",
"point": 1.7,
"desc": "문제 1/둥근로봇/[개체] 이름 설정 2/이름을 '로봇'으로 변경하기",
"sort": 14
},
"1-5": {
"type": "scene",
"ele": "$..objects[?(@.name=~'^(뿅망치|망치)$')]",
"point": 1.7,
"desc": "문제 1/뿅망치(1)_1/[개체] 이름 설정 3/이름을 '망치'로 변경하기",
"sort": 15
},
"1-6": {
"type": "scene",
"ele": "$..objects[?(@.name=~'^(로봇 팔|단소)$')]",
"point": 1.6,
"desc": "문제 1/로봇 팔/[개체] 이름 설정 4/이름 변경 없음",
"sort": 16
},
"1-0": {
"ele": "$..variables[?(@.name=='고장 원인')]",
"point": 1.29,
"desc": "문제 2/렌치/변수/'고장 원인' 변수 만들기 (변수 기본값은 '0', '모든 오브젝트에 사용' 설정하기)",
"type": "scene",
"sort": 101
},
"2-0": {
"ele": "$.messages[?(@.name=='수리 완료')]",
"point": 1.29,
"desc": "문제 2/렌치/신호/'수리 완료' 신호 만들기",
"type": "scene",
"sort": 102
},
"3-0": {
"type": "script",
"ele": "$.objects[?(@.name=~'렌치')].script",
"blocks": [
{
"ele": "$[0][0].type",
"answer": "when_run_button_click",
"point": 1.29,
"desc": "문제 2/렌치/시작/시작하기 버튼을 클릭했을 때"
},
{
"ele": [
"$[0][1].type",
"$[0][1].params[0].params[0]",
"$[0][1].params[1].params[0]"
],
"answer": [
"locate_xy",
"-90",
"-40"
],
"point": 1.29,
"desc": "문제 2/렌치/[시작]의 세부 동작 1/x: '-90' y: '-40' 위치로 이동하기",
"type": "list"
},
{
"ele": [
"$[0][2].type",
"$[0][2].params[0].params[0]"
],
"answer": [
"rotate_absolute",
"180"
],
"point": 1.29,
"desc": "문제 2/렌치/[시작]의 세부 동작 2/방향을 '180°' 로 정하기",
"type": "list"
},
{
"ele": [
"$[0][3].type",
"$[0][3].params[0].params[0]"
],
"answer": [
"set_scale_size",
"110"
],
"point": 1.29,
"desc": "문제 2/렌치/[시작]의 세부 동작 3/크기를 '110' 으로 정하기",
"type": "list"
},
{
"ele": "$[1][0].type",
"answer": "when_object_click",
"point": 1.29,
"desc": "문제 2/렌치/오브젝트/오브젝트를 클릭했을 때"
},
{
"ele": [
"$[1][1].type",
"$[1][1].params[0].params[0]",
"$[1][1].params[1].params[0]"
],
"answer": [
"locate_xy",
"25",
"10"
],
"point": 1.29,
"desc": "문제 2/렌치/[오브젝트]의 세부 동작 1/x: '25' y: '10' 위치로 이동하기",
"type": "list"
},
{
"ele": [
"$[1][2].type",
"$[1][2].params[0].type",
"$[1][2].params[0].params[0].type",
"$[1][2].params[0].params[1]",
"$[1][2].params[0].params[2].params[0]"
],
"answer": [
"if_else",
"boolean_basic_operator",
"get_variable",
"EQUAL",
"나사 조임"
],
"point": 1.29,
"desc": "문제 2/렌치/만일 / 아니면/만일 '고장 원인 값' = '나사 조임' 이라면",
"type": "list"
},
{
"ele": "$[1][2].statements[0][0].params[*].params",
"answer": [
"로봇이 수리되었습니다.",
"1"
],
"point": 1.29,
"desc": "문제 2/렌치/[만일]의 세부 동작 1/'로봇이 수리되었습니다.' 를 '1' 초 동안 '말하기'"
},
{
"ele": "$[1][2].statements[0][1].type",
"answer": "message_cast",
"point": 1.29,
"desc": "문제 2/렌치/[만일]의 세부 동작 2/'수리 완료' 신호 보내기"
},
{
"ele": "$[1][2].statements[1][0].params[*].params",
"answer": [
"고장 원인을 다시 확인하세요.",
"2"
],
"point": 1.29,
"desc": "문제 2/렌치/[아니면]의 세부 동작/'고장 원인을 다시 확인하세요.' 를 '2' 초 동안 '말하기'"
},
{
"ele": [
"$[1][3].type",
"$[1][3].params[0].params[0]",
"$[1][3].params[1].params[0]"
],
"answer": [
"locate_xy",
"-90",
"-40"
],
"point": 1.29,
"desc": "문제 2/렌치/[오브젝트]의 세부 동작 2/x: '-90' y: '-40' 위치로 이동하기",
"type": "list"
}
],
"sortBlock": [
"when_run_button_click",
"when_object_click"
],
"sort": 105
},
"14-0": {
"ele": "$..variables[?(@.name=='수리된 로봇')]",
"point": 1.29,
"desc": "문제 2/로봇/변수/'수리된 로봇' 변수 만들기 (변수 기본값은 '0', '모든 오브젝트에 사용' 설정하기)",
"type": "scene",
"sort": 114
},
"15-0": {
"ele": "$.messages[?(@.name=='로봇 이동')]",
"point": 1.29,
"desc": "문제 2/로봇/신호/'로봇 이동' 신호 만들기",
"type": "scene",
"sort": 115
},
"4-0": {
"type": "script",
"ele": "$.objects[?(@.name=='로봇')].script",
"blocks": [
{
"ele": "$[0][0].type",
"answer": "when_run_button_click",
"point": 1.29,
"desc": "문제 2/로봇/시작/시작하기 버튼을 클릭했을 때"
},
{
"ele": [
"$[0][1].type",
"$[0][1].params[0].params[0]",
"$[0][1].params[1].params[0]"
],
"answer": [
"locate_xy",
"95",
"-30"
],
"point": 1.29,
"desc": "문제 2/로봇/[시작]의 세부 동작 1/x: '95' y: '-30' 위치로 이동하기",
"type": "list"
},
{
"ele": [
"$[0][2].type",
"$[0][2].params[0].params[0]"
],
"answer": [
"set_scale_size",
"120"
],
"point": 1.29,
"desc": "문제 2/로봇/[시작]의 세부 동작 2/크기를 '120' 으로 정하기",
"type": "list"
},
{
"ele": "$[1][0].type",
"answer": "when_message_cast",
"point": 1.29,
"desc": "문제 2/로봇/수리 완료/'수리 완료' 신호를 받았을 때"
},
{
"ele": "$[1][2].params[*].params",
"answer": [
"수리되었습니다.",
"1"
],
"point": 1.29,
"desc": "문제 2/로봇/[수리 완료]의 세부 동작 2/'수리되었습니다.' 를 '1' 초 동안 '말하기'"
},
{
"ele": [
"$[1][1].type",
"$[1][1].params[1].params[0]"
],
"answer": [
"change_variable",
"1"
],
"point": 1.29,
"desc": "문제 2/로봇/[수리 완료]의 세부 동작 1/'수리된 로봇'에 '1' 만큼 더하기",
"type": "list"
},
{
"ele": [
"$[1][3].type",
"$[1][3].params[0].type",
"$[1][3].params[0].params[0].type",
"$[1][3].params[0].params[1]",
"$[1][3].params[0].params[2].params[0]"
],
"answer": [
"_if",
"boolean_basic_operator",
"get_variable",
"EQUAL",
"2"
],
"point": 1.29,
"desc": "문제 2/로봇/만일/만일 '수리된 로봇 값' = '2' 이라면",
"type": "list"
},
{
"ele": [
"$[1][3].statements[0][0].type",
"$[1][3].statements[0][0].params[0]"
],
"answer": [
"set_visible_answer",
"HIDE"
],
"point": 1.29,
"desc": "문제 2/로봇/[만일]의 세부 동작 1/대답 '숨기기'",
"type": "list"
},
{
"ele": "$[1][3].statements[0][1].params[*].params",
"answer": [
"모두 수리했습니다.",
"1"
],
"point": 1.29,
"desc": "문제 2/로봇/[만일]의 세부 동작 2/'모두 수리했습니다.' 를 '1' 초 동안 '말하기'"
},
{
"ele": "$[1][3].statements[0][2].type",
"answer": "start_scene",
"point": 1.29,
"desc": "문제 2/로봇/[만일]의 세부 동작 3/ '장면2' 시작하기"
},
{
"ele": "$[1][4].type",
"answer": "message_cast",
"point": 1.29,
"desc": "문제 2/로봇/[수리 완료]의 세부 동작 3/'로봇 이동' 신호 보내기"
},
{
"ele": "$[2][0].type",
"answer": "when_message_cast",
"point": 1.29,
"desc": "문제 2/로봇/로봇 이동/'로봇 이동' 신호를 받았을 때"
},
{
"ele": [
"$[2][1].type",
"$[2][1].params[0].params[0]"
],
"answer": [
"move_x",
"120"
],
"point": 1.29,
"desc": "문제 2/로봇/[로봇 이동]의 세부 동작 1/x 좌표를 '120' 만큼 바꾸기",
"type": "list"
},
{
"ele": "$[2][2].type",
"answer": "hide",
"point": 1.29,
"desc": "문제 2/로봇/[로봇 이동]의 세부 동작 2/모양 숨기기"
},
{
"ele": [
"$[2][3].type",
"$[2][3].params[0].params[0]"
],
"answer": [
"wait_second",
"0.2"
],
"point": 1.29,
"desc": "문제 2/로봇/[로봇 이동]의 세부 동작 3/'0.2' 초 기다리기",
"type": "list"
},
{
"ele": [
"$[2][4].type",
"$[2][4].params[0].params[0]",
"$[2][4].params[1].params[0]"
],
"answer": [
"locate_xy",
"95",
"-30"
],
"point": 1.29,
"desc": "문제 2/로봇/[로봇 이동]의 세부 동작 4/x: '95' y: '-30' 위치로 이동하기",
"type": "list"
},
{
"ele": [
"$[2][5].type",
"$[2][5].params[0].params[0]"
],
"answer": [
"wait_second",
"0.2"
],
"point": 1.29,
"desc": "문제 2/로봇/[로봇 이동]의 세부 동작 5/'0.2' 초 기다리기",
"type": "list"
},
{
"ele": "$[2][6].type",
"answer": "show",
"point": 1.29,
"desc": "문제 2/로봇/[로봇 이동]의 세부 동작 6/모양 보이기"
}
],
"sortBlock": [
"when_run_button_click",
"when_message_cast",
"when_message_cast"
],
"sort": 115
},
"5-0": {
"type": "script",
"ele": "$..objects[?(@.name=~'^(망치|뿅망치)$')].script",
"ele_tmp": "$.objects[?(@.name=~'망치')].script",
"blocks": [
{
"ele": "$[0][0].type",
"answer": "when_run_button_click",
"point": 1.29,
"desc": "문제 2/망치/시작/시작하기 버튼을 클릭했을 때"
},
{
"ele": [
"$[0][1].type",
"$[0][1].params[0].params[0]",
"$[0][1].params[1].params[0]"
],
"answer": [
"locate_xy",
"180",
"10"
],
"point": 1.29,
"desc": "문제 2/망치/[시작]의 세부 동작/x: '180' y: '10' 위치로 이동하기",
"type": "list"
},
{
"ele": "$[1][0].type",
"answer": "when_object_click",
"point": 1.29,
"desc": "문제 2/망치/오브젝트/오브젝트를 클릭했을 때"
},
{
"ele": [
"$[1][1].type",
"$[1][1].params[0].params[0]"
],
"answer": [
"rotate_absolute",
"320"
],
"point": 1.29,
"desc": "문제 2/망치/[오브젝트]의 세부 동작 1/방향을 '320°' 로 정하기",
"type": "list"
},
{
"ele": "$[1][2].params[*].params",
"answer": [
"더 고장났어요!",
"2"
],
"point": 1.29,
"desc": "문제 2/망치/[오브젝트]의 세부 동작 2/'더 고장났어요!' 를 '2' 초 동안 '말하기'"
},
{
"ele": [
"$[1][3].type",
"$[1][3].params[0].params[0]"
],
"answer": [
"rotate_absolute",
"0"
],
"point": 1.29,
"desc": "문제 2/망치/[오브젝트]의 세부 동작 3/방향을 '0°' 로 정하기",
"type": "list"
}
],
"sortBlock": [
"when_run_button_click",
"when_object_click"
],
"sort": 135
},
"6-0": {
"type": "script",
"ele": "$..objects[?(@.name=~'^(로봇 팔|단소)$')].script",
"ele_tmp": "$.objects[?(@.name=~'로봇 팔')].script",
"blocks": [
{
"ele": "$[0][0].type",
"answer": "when_run_button_click",
"point": 1.29,
"desc": "문제 2/로봇 팔/시작/시작하기 버튼을 클릭했을 때"
},
{
"ele": [
"$[0][1].type",
"$[0][1].params[0].params[0]",
"$[0][1].params[1].params[0]"
],
"answer": [
"locate_xy",
"10",
"15"
],
"point": 1.29,
"desc": "문제 2/로봇 팔/[시작]의 세부 동작 1/x: '10' y: '15' 위치로 이동하기",
"type": "list"
},
{
"ele": [
"$[0][2].type",
"$[0][2].params[0].params[0]"
],
"answer": [
"rotate_absolute",
"180"
],
"point": 1.29,
"desc": "문제 2/로봇 팔/[시작]의 세부 동작 2/방향을 '180°' 로 정하기",
"type": "list"
},
{
"ele": [
"$[0][3].type",
"$[0][3].params[0].params[0].params[3]",
"$[0][3].params[0].params[1]",
"$[0][3].params[0].params[2].params[0]"
],
"answer": [
"repeat_while_true",
null,
"EQUAL",
"2"
],
"point": 1.29,
"desc": "문제 2/로봇 팔/반복/'수리된 로봇 값' = '2' 이 될 때까지' 반복하기",
"type": "list"
},
{
"ele": [
"$[0][3].statements[0][0].type",
"$[0][3].statements[0][0].params[0].params[0]"
],
"answer": [
"wait_second",
"1"
],
"point": 1.29,
"desc": "문제 2/로봇 팔/[반복]의 세부 동작 1/1' 초 기다리기",
"type": "list"
},
{
"ele": [
"$[0][3].statements[0][1].type",
"$[0][3].statements[0][1].params[0].params[0]"
],
"answer": [
"ask_and_wait",
"어디가 고장났나요?"
],
"point": 1.29,
"desc": "문제 2/로봇 팔/[반복]의 세부 동작 2/'어디가 고장났나요?' 를 묻고 대답 기다리기",
"type": "list"
},
{
"ele": [
"$[0][3].statements[0][2].type",
"$[0][3].statements[0][2].params[0].type",
"$[0][3].statements[0][2].params[0].params[0].type",
"$[0][3].statements[0][2].params[0].params[0].params[1]",
"$[0][3].statements[0][2].params[0].params[0].params[2].params[0]",
"$[0][3].statements[0][2].params[0].params[1]",
"$[0][3].statements[0][2].params[0].params[2].type",
"$[0][3].statements[0][2].params[0].params[2].params[1]",
"$[0][3].statements[0][2].params[0].params[2].params[2].params[0]"
],
"answer": [
"if_else",
"boolean_and_or",
"boolean_basic_operator",
"EQUAL",
"나사 조임",
"OR",
"boolean_basic_operator",
"EQUAL",
"부품 고장"
],
"point": 1.29,
"desc": "문제 2/로봇 팔/만일 / 아니면/만일 '대답' = '나사 조임' 또는 '대답' = '부품 고장' 이라면",
"type": "list"
},
{
"ele": [
"$[0][3].statements[0][2].statements[0][0].type",
"$[0][3].statements[0][2].statements[0][0].params[1].params[0]"
],
"answer": [
"set_variable",
null
],
"point": 1.29,
"desc": "문제 2/로봇 팔/[만일]의 세부 동작 1/'고장 원인' 을 '대답' 으로 정하기",
"type": "list"
},
{
"ele": "$[0][3].statements[0][2].statements[0][1].params[*].params",
"answer": [
"도구를 선택하세요.",
"2"
],
"point": 1.29,
"desc": "문제 2/로봇 팔/[만일]의 세부 동작 2/'도구를 선택하세요' 를 '2' 초 동안 '말하기'"
},
{
"ele": "$[0][3].statements[0][2].statements[1][0].params[*].params",
"answer": [
"나사 조임, 부품 고장 중 무엇입니까?",
"2"
],
"point": 1.29,
"desc": "문제 2/로봇 팔/[아니면]의 세부 동작 1/'나사 조임, 부품 고장 중 무엇입니까?' 를 '2' 초 동안 말하기"
},
{
"ele": [
"$[0][3].statements[0][3].type",
"$[0][3].statements[0][3].params[0].params[0]"
],
"answer": [
"wait_second",
"2"
],
"point": 1.29,
"desc": "문제 2/로봇 팔/[아니면]의 세부 동작 2/'2' 초 기다리기",
"type": "list"
},
{
"ele": "$[1][0].type",
"answer": "when_object_click",
"point": 1.29,
"desc": "문제 2/로봇 팔/오브젝트/오브젝트를 클릭했을 때"
},
{
"ele": [
"$[1][1].type",
"$[1][1].params[0].params[0]"
],
"answer": [
"rotate_absolute",
"130"
],
"point": 1.29,
"desc": "문제 2/로봇 팔/[오브젝트]의 세부 동작 1/방향을 '130°' 로 정하기",
"type": "list"
},
{
"ele": [
"$[1][2].type",
"$[1][2].params[0].type",
"$[1][2].params[0].params[0].type",
"$[1][2].params[0].params[1]",
"$[1][2].params[0].params[2].params[0]"
],
"answer": [
"if_else",
"boolean_basic_operator",
"get_variable",
"EQUAL",
"부품 고장"
],
"point": 1.29,
"desc": "문제 2/로봇 팔/만일 / 아니면/만일 '고장 원인' 값 = '부품 고장' 이라면",
"type": "list"
},
{
"ele": "$[1][2].statements[0][0].params[*].params",
"answer": [
"로봇이 수리되었습니다.",
"1"
],
"point": 1.29,
"desc": "문제 2/로봇 팔/[만일]의 세부 동작 1/'로봇이 수리되었습니다.' 를 '1' 초 동안 '말하기'"
},
{
"ele": "$[1][2].statements[0][1].type",
"answer": "message_cast",
"point": 1.29,
"desc": "문제 2/로봇 팔/[만일]의 세부 동작 2/'수리 완료' 신호 보내기"
},
{
"ele": "$[1][2].statements[1][0].params[*].params",
"answer": [
"고장 원인을 확인하세요.",
"2"
],
"point": 1.29,
"desc": "문제 2/로봇 팔/[아니면]의 세부 동작/'고장 원인을 다시 확인하세요' 를 '2' 초 동안 '말하기'"
},
{
"ele": [
"$[1][3].type",
"$[1][3].params[0].params[0]",
"$[1][3].params[1].params[0]"
],
"answer": [
"locate_xy",
"10",
"15"
],
"point": 1.29,
"desc": "문제 2/로봇 팔/[오브젝트]의 세부 동작 2/x: '10' y: '15' 위치로 이동하기",
"type": "list"
},
{
"ele": [
"$[1][4].type",
"$[1][4].params[0].params[0]"
],
"answer": [
"rotate_absolute",
"180"
],
"point": 1.29,
"desc": "문제 2/로봇 팔/[오브젝트]의 세부 동작 3/방향을 '180°' 로 정하기",
"type": "list"
}
],
"sortBlock": [
"when_run_button_click",
"when_object_click"
],
"sort": 141
},
"7-0": {
"type": "script",
"ele": "$.objects[?(@.name=~'로봇방|장면 ')].script",
"blocks": [
{
"ele": "$[0][0].type",
"answer": "when_scene_start",
"point": 1.29,
"desc": "문제 2/로봇방/장면 2/장면이 시작되었을 때"
},
{
"ele": "$[0][1].type",
"answer": "hide_variable",
"point": 1.29,
"desc": "문제 2/로봇방/[장면 2]의 세부 동작 1/변수 '고장 원인' 숨기기"
},
{
"ele": "$[0][2].type",
"answer": "hide_variable",
"point": 1.29,
"desc": "문제 2/로봇방/[장면 2]의 세부 동작 2/변수 '수리된 로봇' 숨기기"
},
{
"ele": [
"$[0][3].type",
"$[0][3].params[0].params[0]",
"$[0][3].params[1]"
],
"answer": [
"dialog",
"모든 로봇 수리 완료!",
"speak"
],
"point": 1.29,
"desc": "문제 2/로봇방/[장면 2]의 세부 동작 3/'모든 로봇 수리 완료!' 를 '말하기'",
"type": "list"
},
{
"ele": "$[1][0].type",
"answer": "when_object_click",
"point": 2,
"desc": "문제 3/로봇방/오브젝트/오브젝트를 클릭했을 때"
},
{
"ele": [
"$[1][1].type",
"$[1][1].params[0]",
"$[1][1].params[1].params[0]"
],
"answer": [
"add_effect_amount",
"color",
"45"
],
"point": 2,
"desc": "문제 3/로봇방/[오브젝트]의 세부 동작 1/'색깔' 효과를 '45' 만큼 주기",
"type": "list"
},
{
"ele": [
"$[1][2].type",
"$[1][2].params[0].params[0]",
"$[1][2].params[1]"
],
"answer": [
"dialog",
"처음부터 다시 실행합니다.",
"speak"
],
"point": 2,
"desc": "문제 3/로봇방/[오브젝트]의 세부 동작 2/'처음부터 다시 실행합니다.' 를 '말하기'",
"type": "list"
},
{
"ele": [
"$[1][3].type",
"$[1][3].params[0].params[0]"
],
"answer": [
"wait_second",
"2"
],
"point": 2,
"desc": "문제 3/로봇방/[오브젝트]의 세부 동작 3/'2' 초 기다리기",
"type": "list"
},
{
"ele": "$[1][4].type",
"answer": "restart_project",
"point": 2,
"desc": "문제 3/로봇방/[오브젝트]의 세부 동작 4/처음부터 다시 실행하기"
}
],
"sortBlock": [
"when_scene_start",
"when_object_click"
],
"sort": 160
}
}