2509회 채점자료 업데이트
This commit is contained in:
@@ -47,8 +47,8 @@ def copy_ent_files(source_root, target_root):
|
|||||||
|
|
||||||
# 사용법
|
# 사용법
|
||||||
|
|
||||||
source_directory = r"D:\project\data\CAS_제2508회 정기\답안파일\(전체답안)1교시2교시나눔\B형" # 원본 디렉토리 경로
|
source_directory = r"D:\project\Entry\Entry-Scoring\시험자료\2509\A" # 원본 디렉토리 경로
|
||||||
target_directory = r".\ent\2508_CAS_2_B"
|
target_directory = r".\ent\2509_CAT_3_A"
|
||||||
# target_directory_a = r"./output/A" # '1교시'의 타겟 경로
|
# target_directory_a = r"./output/A" # '1교시'의 타겟 경로
|
||||||
# target_directory_b = r"./output/B" # '2교시'의 타겟 경로
|
# target_directory_b = r"./output/B" # '2교시'의 타겟 경로
|
||||||
# target_directory_c = r"./output/C" # '3교시'의 타겟 경로
|
# target_directory_c = r"./output/C" # '3교시'의 타겟 경로
|
||||||
|
|||||||
@@ -50,8 +50,8 @@ def process_ent_files(ent_dir, output_dir):
|
|||||||
|
|
||||||
# 실행 예
|
# 실행 예
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
# test_names = ["2507_CAT_3_A"]
|
test_names = ["2509_CAT_3_A"]
|
||||||
test_names = ["2508_CAS_2_A","2508_CAS_2_B"]
|
# test_names = ["2508_CAS_2_A","2508_CAS_2_B"]
|
||||||
for test_name in test_names:
|
for test_name in test_names:
|
||||||
ent_dir = f".\\ent\\{test_name}"
|
ent_dir = f".\\ent\\{test_name}"
|
||||||
output_dir = f".\\output\\{test_name}"
|
output_dir = f".\\output\\{test_name}"
|
||||||
|
|||||||
BIN
251001_2509_CAT_3_A_채점결과.xlsx
Normal file
BIN
251001_2509_CAT_3_A_채점결과.xlsx
Normal file
Binary file not shown.
Binary file not shown.
557
correct/2509_CAT_3_A.json
Normal file
557
correct/2509_CAT_3_A.json
Normal file
@@ -0,0 +1,557 @@
|
|||||||
|
{
|
||||||
|
"1-1": {
|
||||||
|
"type": "scene",
|
||||||
|
"ele": "$..objects[?(@.name=='화산')]",
|
||||||
|
"points": 2,
|
||||||
|
"desc": "문제 1/화산섬/[배경] 이름 설정/이름을 '화산'으로 변경하기",
|
||||||
|
"sort": 11
|
||||||
|
},
|
||||||
|
"1-3": {
|
||||||
|
"type": "scene",
|
||||||
|
"ele": "$..objects[?(@.name=='불')]",
|
||||||
|
"points": 2,
|
||||||
|
"desc": "문제 1/불(2)/[개체] 이름 설정 1/이름을 '불'로 변경하기",
|
||||||
|
"sort": 13
|
||||||
|
},
|
||||||
|
"1-4": {
|
||||||
|
"type": "scene",
|
||||||
|
"ele": "$..objects[?(@.name=='공룡')]",
|
||||||
|
"points": 2,
|
||||||
|
"desc": "문제 1/공룡/[개체] 이름 설정 2/이름 변경 없음",
|
||||||
|
"sort": 14
|
||||||
|
},
|
||||||
|
"1-5": {
|
||||||
|
"type": "scene",
|
||||||
|
"ele": "$..objects[?(@.name=='알')]",
|
||||||
|
"points": 2,
|
||||||
|
"desc": "문제 1/계란/[개체] 이름 설정 3/이름을 '알'로 변경하기",
|
||||||
|
"sort": 15
|
||||||
|
},
|
||||||
|
"1-6": {
|
||||||
|
"type": "scene",
|
||||||
|
"ele": "$..objects[?(@.name=='바위')]",
|
||||||
|
"points": 2,
|
||||||
|
"desc": "문제 1/바위(4)/[개체] 이름 설정 4/이름을 '바위'로 변경하기",
|
||||||
|
"sort": 16
|
||||||
|
},
|
||||||
|
"2-0": {
|
||||||
|
"type": "script",
|
||||||
|
"ele": "$.objects[?(@.name=~'불')].script",
|
||||||
|
"blocks": [
|
||||||
|
{
|
||||||
|
"ele": "$[0][0].type",
|
||||||
|
"answer": "when_run_button_click",
|
||||||
|
"points": 2.14,
|
||||||
|
"desc": "문제 2/불/시작/시작하기 버튼을 클릭했을 때"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[0][1].type",
|
||||||
|
"$[0][1].params[0].params[0]",
|
||||||
|
"$[0][1].params[1].params[0]"
|
||||||
|
],
|
||||||
|
"answer": [
|
||||||
|
"locate_xy",
|
||||||
|
"120",
|
||||||
|
"90"
|
||||||
|
],
|
||||||
|
"points": 2.14,
|
||||||
|
"desc": "문제 2/불/[시작]의 세부 동작 1/x: '120' y: '90' 위치로 이동하기",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": "$[0][2].params[0].params[0]",
|
||||||
|
"answer": "130",
|
||||||
|
"points": 2.14,
|
||||||
|
"desc": "문제 2/불/[시작]의 세부 동작 2/크기를 '130' 으로 정하기"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[0][3].type",
|
||||||
|
"$[0][3].params[0]"
|
||||||
|
],
|
||||||
|
"answer": [
|
||||||
|
"repeat_inf",
|
||||||
|
null
|
||||||
|
],
|
||||||
|
"points": 2.14,
|
||||||
|
"desc": "문제 2/불/반복/계속 반복하기",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[0][3].statements[0][0].type",
|
||||||
|
"$[0][3].statements[0][0].params[0].type"
|
||||||
|
],
|
||||||
|
"answer": [
|
||||||
|
"change_to_some_shape",
|
||||||
|
"get_pictures"
|
||||||
|
],
|
||||||
|
"points": 2.14,
|
||||||
|
"desc": "문제 2/불/[반복]의 세부 동작 1/'불(2)_3' 모양으로 바꾸기",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[0][3].statements[0][1].type",
|
||||||
|
"$[0][3].statements[0][1].params[0].params[0]"
|
||||||
|
],
|
||||||
|
"answer": [
|
||||||
|
"wait_second",
|
||||||
|
"0.5"
|
||||||
|
],
|
||||||
|
"points": 2.14,
|
||||||
|
"desc": "문제 2/불/[반복]의 세부 동작 2/'0.5' 초 기다리기",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[0][3].statements[0][2].type",
|
||||||
|
"$[0][3].statements[0][2].params[0].type"
|
||||||
|
],
|
||||||
|
"answer": [
|
||||||
|
"change_to_some_shape",
|
||||||
|
"get_pictures"
|
||||||
|
],
|
||||||
|
"points": 2.14,
|
||||||
|
"desc": "문제 2/불/[반복]의 세부 동작 3/'불(2)_1' 모양으로 바꾸기",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[0][3].statements[0][3].type",
|
||||||
|
"$[0][3].statements[0][3].params[0].params[0]"
|
||||||
|
],
|
||||||
|
"answer": [
|
||||||
|
"wait_second",
|
||||||
|
"0.5"
|
||||||
|
],
|
||||||
|
"points": 2.14,
|
||||||
|
"desc": "문제 2/불/[반복]의 세부 동작 4/'0.5' 초 기다리기",
|
||||||
|
"type": "list"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sort": 102
|
||||||
|
},
|
||||||
|
"3-0": {
|
||||||
|
"type": "script",
|
||||||
|
"ele": "$.objects[?(@.name=~'공룡')].script",
|
||||||
|
"blocks": [
|
||||||
|
{
|
||||||
|
"ele": "$[0][0].type",
|
||||||
|
"answer": "when_run_button_click",
|
||||||
|
"points": 2.14,
|
||||||
|
"desc": "문제 2/공룡/시작/시작하기 버튼을 클릭했을 때"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[0][1].type",
|
||||||
|
"$[0][1].params[0].params[0]",
|
||||||
|
"$[0][1].params[1].params[0]"
|
||||||
|
],
|
||||||
|
"answer": [
|
||||||
|
"locate_xy",
|
||||||
|
"0",
|
||||||
|
"-20"
|
||||||
|
],
|
||||||
|
"points": 2.14,
|
||||||
|
"desc": "문제 2/공룡/[시작]의 세부 동작 1/x: '0' y: '-20' 위치로 이동하기",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": "$[0][2].params[*].params",
|
||||||
|
"answer": [
|
||||||
|
"공룡알을 구하자",
|
||||||
|
"1"
|
||||||
|
],
|
||||||
|
"points": 2.14,
|
||||||
|
"desc": "문제 2/공룡/[시작]의 세부 동작 2/'공룡알을 구하자' 를 '1' 초 동안 '말하기'"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[0][3].type",
|
||||||
|
"$[0][3].params[0]"
|
||||||
|
],
|
||||||
|
"answer": [
|
||||||
|
"repeat_inf",
|
||||||
|
null
|
||||||
|
],
|
||||||
|
"points": 2.14,
|
||||||
|
"desc": "문제 2/공룡/반복/계속 반복하기",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[0][3].statements[0][0].type",
|
||||||
|
"$[0][3].statements[0][0].params[0].type",
|
||||||
|
"$[0][3].statements[0][0].params[0].params[0]"
|
||||||
|
],
|
||||||
|
"answer": [
|
||||||
|
"_if",
|
||||||
|
"is_press_some_key",
|
||||||
|
"38"
|
||||||
|
],
|
||||||
|
"points": 2.14,
|
||||||
|
"desc": "문제 2/공룡/만일 1/만일 '위쪽 화살표' 키가 눌러져 있는가? 라면",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[0][3].statements[0][0].statements[0][0].type",
|
||||||
|
"$[0][3].statements[0][0].statements[0][0].params[0].params[0]"
|
||||||
|
],
|
||||||
|
"answer": [
|
||||||
|
"move_y",
|
||||||
|
"5"
|
||||||
|
],
|
||||||
|
"points": 2.14,
|
||||||
|
"desc": "문제 2/공룡/[만일 1]의 세부 동작/y 좌표를 '5' 만큼 바꾸기",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[0][3].statements[0][1].type",
|
||||||
|
"$[0][3].statements[0][1].params[0].type",
|
||||||
|
"$[0][3].statements[0][1].params[0].params[0]"
|
||||||
|
],
|
||||||
|
"answer": [
|
||||||
|
"_if",
|
||||||
|
"is_press_some_key",
|
||||||
|
"40"
|
||||||
|
],
|
||||||
|
"points": 2.14,
|
||||||
|
"desc": "문제 2/공룡/만일 2/만일 '아래쪽 화살표' 키가 눌러져 있는가? 라면",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[0][3].statements[0][1].statements[0][0].type",
|
||||||
|
"$[0][3].statements[0][1].statements[0][0].params[0].params[0]"
|
||||||
|
],
|
||||||
|
"answer": [
|
||||||
|
"move_y",
|
||||||
|
"-5"
|
||||||
|
],
|
||||||
|
"points": 2.14,
|
||||||
|
"desc": "문제 2/공룡/[만일 2]의 세부 동작/y 좌표를 '-5' 만큼 바꾸기",
|
||||||
|
"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]"
|
||||||
|
],
|
||||||
|
"answer": [
|
||||||
|
"_if",
|
||||||
|
"is_press_some_key",
|
||||||
|
"37"
|
||||||
|
],
|
||||||
|
"points": 2.14,
|
||||||
|
"desc": "문제 2/공룡/만일 3/만일 '왼쪽 화살표' 키가 눌러져 있는가? 라면",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[0][3].statements[0][2].statements[0][0].type",
|
||||||
|
"$[0][3].statements[0][2].statements[0][0].params[0].params[0]"
|
||||||
|
],
|
||||||
|
"answer": [
|
||||||
|
"move_x",
|
||||||
|
"-5"
|
||||||
|
],
|
||||||
|
"points": 2.14,
|
||||||
|
"desc": "문제 2/공룡/[만일 3]의 세부 동작/x 좌표를 '-5' 만큼 바꾸기",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[0][3].statements[0][3].type",
|
||||||
|
"$[0][3].statements[0][3].params[0].type",
|
||||||
|
"$[0][3].statements[0][3].params[0].params[0]"
|
||||||
|
],
|
||||||
|
"answer": [
|
||||||
|
"_if",
|
||||||
|
"is_press_some_key",
|
||||||
|
"39"
|
||||||
|
],
|
||||||
|
"points": 2.14,
|
||||||
|
"desc": "문제 2/공룡/만일 4/만일 '오른쪽 화살표' 키가 눌러져 있는가? 라면",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[0][3].statements[0][3].statements[0][0].type",
|
||||||
|
"$[0][3].statements[0][3].statements[0][0].params[0].params[0]"
|
||||||
|
],
|
||||||
|
"answer": [
|
||||||
|
"move_x",
|
||||||
|
"5"
|
||||||
|
],
|
||||||
|
"points": 2.14,
|
||||||
|
"desc": "문제 2/공룡/[만일 4]의 세부 동작/x 좌표를 '5' 만큼 바꾸기",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[0][3].statements[0][4].type",
|
||||||
|
"$[0][3].statements[0][4].params[0].type"
|
||||||
|
],
|
||||||
|
"answer": [
|
||||||
|
"_if",
|
||||||
|
"reach_something"
|
||||||
|
],
|
||||||
|
"points": 2.14,
|
||||||
|
"desc": "문제 2/공룡/만일 5/만일 '불' 에 닿았는가? 라면",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[0][3].statements[0][4].statements[0][0].type",
|
||||||
|
"$[0][3].statements[0][4].statements[0][0].params[0].params[0]",
|
||||||
|
"$[0][3].statements[0][4].statements[0][0].params[1]"
|
||||||
|
],
|
||||||
|
"answer": [
|
||||||
|
"dialog",
|
||||||
|
"앗 뜨거워!",
|
||||||
|
"speak"
|
||||||
|
],
|
||||||
|
"points": 2.14,
|
||||||
|
"desc": "문제 2/공룡/[만일 5]의 세부 동작 1/'앗 뜨거워!' 를 '말하기'",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[0][3].statements[0][4].statements[0][1].type",
|
||||||
|
"$[0][3].statements[0][4].statements[0][1].params[0].params[0]"
|
||||||
|
],
|
||||||
|
"answer": [
|
||||||
|
"wait_second",
|
||||||
|
"1"
|
||||||
|
],
|
||||||
|
"points": 2.14,
|
||||||
|
"desc": "문제 2/공룡/[만일 5]의 세부 동작 2/'1' 초 기다리기",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[0][3].statements[0][4].statements[0][2].type",
|
||||||
|
"$[0][3].statements[0][4].statements[0][2].params[0]"
|
||||||
|
],
|
||||||
|
"answer": [
|
||||||
|
"stop_object",
|
||||||
|
"all"
|
||||||
|
],
|
||||||
|
"points": 2.14,
|
||||||
|
"desc": "문제 2/공룡/[만일 5]의 세부 동작 3/'모든' 코드 멈추기",
|
||||||
|
"type": "list"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sort": 110
|
||||||
|
},
|
||||||
|
"4-0": {
|
||||||
|
"type": "script",
|
||||||
|
"ele": "$.objects[?(@.name=~'알|계')].script",
|
||||||
|
"blocks": [
|
||||||
|
{
|
||||||
|
"ele": "$[0][0].type",
|
||||||
|
"answer": "when_run_button_click",
|
||||||
|
"points": 2.14,
|
||||||
|
"desc": "문제 2/알/시작/시작하기 버튼을 클릭했을 때"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": "$[0][1].params[0].params[0]",
|
||||||
|
"answer": "50",
|
||||||
|
"points": 2.14,
|
||||||
|
"desc": "문제 2/알/[시작]의 세부 동작 1/크기를 '50' 으로 정하기"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[0][2].type",
|
||||||
|
"$[0][2].params[0].params[0]"
|
||||||
|
],
|
||||||
|
"answer": [
|
||||||
|
"rotate_absolute",
|
||||||
|
"270"
|
||||||
|
],
|
||||||
|
"points": 2.14,
|
||||||
|
"desc": "문제 2/알/[시작]의 세부 동작 2/방향을 '270°' 로 정하기",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[0][3].type",
|
||||||
|
"$[0][3].params[0]"
|
||||||
|
],
|
||||||
|
"answer": [
|
||||||
|
"repeat_inf",
|
||||||
|
null
|
||||||
|
],
|
||||||
|
"points": 2.14,
|
||||||
|
"desc": "문제 2/알/반복/계속 반복하기",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": "$[0][3].statements[0][0].type",
|
||||||
|
"answer": "show",
|
||||||
|
"points": 2.14,
|
||||||
|
"desc": "문제 2/알/[반복]의 세부 동작 1/모양 보이기"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[0][3].statements[0][1].type",
|
||||||
|
"$[0][3].statements[0][1].params[0].params[1].params[0]",
|
||||||
|
"$[0][3].statements[0][1].params[0].params[3].params[0]",
|
||||||
|
"$[0][3].statements[0][1].params[1].params[1].params[0]",
|
||||||
|
"$[0][3].statements[0][1].params[1].params[3].params[0]"
|
||||||
|
],
|
||||||
|
"answer": [
|
||||||
|
"locate_xy",
|
||||||
|
"55",
|
||||||
|
"160",
|
||||||
|
"5",
|
||||||
|
"10"
|
||||||
|
],
|
||||||
|
"points": 2.2,
|
||||||
|
"desc": "문제 2/알/[반복]의 세부 동작 2/x: '55 부터 160 사이의 무작위 수' y: '5 부터 10 사이의 무작위 수' 위치로 이동하기",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[0][3].statements[0][2].type",
|
||||||
|
"$[0][3].statements[0][2].params[0].params[0]",
|
||||||
|
"$[0][3].statements[0][2].params[1].params[1].params[0]",
|
||||||
|
"$[0][3].statements[0][2].params[1].params[3].params[0]",
|
||||||
|
"$[0][3].statements[0][2].params[2].params[0]"
|
||||||
|
],
|
||||||
|
"answer": [
|
||||||
|
"move_xy_time",
|
||||||
|
"2",
|
||||||
|
"-200",
|
||||||
|
"200",
|
||||||
|
"-140"
|
||||||
|
],
|
||||||
|
"points": 2.2,
|
||||||
|
"desc": "문제 2/알/[반복]의 세부 동작 3/'2' 초 동안 x: '-200 부터 200 사이의 무작위 수' y: '-140' 만큼 움직이기",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[0][3].statements[0][3].type",
|
||||||
|
"$[0][3].statements[0][3].params[0].type"
|
||||||
|
],
|
||||||
|
"answer": [
|
||||||
|
"_if",
|
||||||
|
"reach_something"
|
||||||
|
],
|
||||||
|
"points": 2.14,
|
||||||
|
"desc": "문제 2/알/만일/만일 '바위' 에 닿았는가? 라면",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": "$[0][3].statements[0][3].statements[0][0].params[*].params",
|
||||||
|
"answer": [
|
||||||
|
"공룡알이 깨졌다!",
|
||||||
|
"0.2"
|
||||||
|
],
|
||||||
|
"points": 2.14,
|
||||||
|
"desc": "문제 2/알/[만일]의 세부 동작 1/'공룡알이 깨졌다!' 를 '0.2' 초 동안 '말하기'"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": "$[0][3].statements[0][3].statements[0][1].type",
|
||||||
|
"answer": "hide",
|
||||||
|
"points": 2.14,
|
||||||
|
"desc": "문제 2/알/[만일]의 세부 동작 2/모양 숨기기"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": "$[1][0].params",
|
||||||
|
"answer": [
|
||||||
|
null,
|
||||||
|
"32"
|
||||||
|
],
|
||||||
|
"points": 2.14,
|
||||||
|
"desc": "문제 2/알/스페이스/'스페이스' 키를 눌렀을 때"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[1][1].type",
|
||||||
|
"$[1][1].params[0]"
|
||||||
|
],
|
||||||
|
"answer": [
|
||||||
|
"repeat_inf",
|
||||||
|
null
|
||||||
|
],
|
||||||
|
"points": 2.14,
|
||||||
|
"desc": "문제 2/알/반복/계속 반복하기",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[1][1].statements[0][0].type",
|
||||||
|
"$[1][1].statements[0][0].params[0].type"
|
||||||
|
],
|
||||||
|
"answer": [
|
||||||
|
"_if",
|
||||||
|
"reach_something"
|
||||||
|
],
|
||||||
|
"points": 2.14,
|
||||||
|
"desc": "문제 2/알/만일/만일 '공룡' 에 닿았는가? 라면",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": "$[1][1].statements[0][0].statements[0][0].type",
|
||||||
|
"answer": "locate",
|
||||||
|
"points": 2.14,
|
||||||
|
"desc": "문제 2/알/[만일]의 세부 동작 1/'공룡' 위치로 이동하기"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[1][1].statements[0][0].statements[0][1].type",
|
||||||
|
"$[1][1].statements[0][0].statements[0][1].params[0].params[0]"
|
||||||
|
],
|
||||||
|
"answer": [
|
||||||
|
"move_x",
|
||||||
|
"-20"
|
||||||
|
],
|
||||||
|
"points": 2.14,
|
||||||
|
"desc": "문제 2/알/[만일]의 세부 동작 2/x 좌표를 '-20' 만큼 바꾸기",
|
||||||
|
"type": "list"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sort": 126
|
||||||
|
},
|
||||||
|
"5-0": {
|
||||||
|
"type": "script",
|
||||||
|
"ele": "$.objects[?(@.name=~'바위')].script",
|
||||||
|
"blocks": [
|
||||||
|
{
|
||||||
|
"ele": "$[0][0].type",
|
||||||
|
"answer": "when_run_button_click",
|
||||||
|
"points": 2.14,
|
||||||
|
"desc": "문제 2/바위/시작/시작하기 버튼을 클릭했을 때"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[0][1].type",
|
||||||
|
"$[0][1].params[0].params[0]",
|
||||||
|
"$[0][1].params[1].params[0]"
|
||||||
|
],
|
||||||
|
"answer": [
|
||||||
|
"locate_xy",
|
||||||
|
"130",
|
||||||
|
"-120"
|
||||||
|
],
|
||||||
|
"points": 2.14,
|
||||||
|
"desc": "문제 2/바위/[시작]의 세부 동작 1/x: '130' y: '-120' 위치로 이동하기",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": "$[0][2].params[0].params[0]",
|
||||||
|
"answer": "150",
|
||||||
|
"points": 2.14,
|
||||||
|
"desc": "문제 2/바위/[시작]의 세부 동작 2/크기를 '150' 으로 정하기"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sort": 141
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -26,3 +26,11 @@ Traceback (most recent call last):
|
|||||||
File "D:\project\Entry\Entry-Scoring\main.py", line 162, in process_project
|
File "D:\project\Entry\Entry-Scoring\main.py", line 162, in process_project
|
||||||
total_points += question_points
|
total_points += question_points
|
||||||
TypeError: unsupported operand type(s) for +=: 'int' and 'NoneType'
|
TypeError: unsupported operand type(s) for +=: 'int' and 'NoneType'
|
||||||
|
[2025-10-01 15:43:18] [ERROR] [main:300] 🚫Error processing ./output/2509_CAT_3_A/2509_CAT_3_A\project.json: unsupported operand type(s) for +=: 'int' and 'NoneType'
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "D:\project\Entry\Entry-Scoring\main.py", line 295, in main
|
||||||
|
points = process_project(project_data, scoring_data)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "D:\project\Entry\Entry-Scoring\main.py", line 162, in process_project
|
||||||
|
total_points += question_points
|
||||||
|
TypeError: unsupported operand type(s) for +=: 'int' and 'NoneType'
|
||||||
|
|||||||
6
main.py
6
main.py
@@ -234,8 +234,8 @@ def main():
|
|||||||
timestamp = datetime.now().strftime("%y%m%d")
|
timestamp = datetime.now().strftime("%y%m%d")
|
||||||
test_mode = False # 테스트 모드 설정
|
test_mode = False # 테스트 모드 설정
|
||||||
# test_mode = True # 테스트 모드 설정
|
# test_mode = True # 테스트 모드 설정
|
||||||
exam_round = "2508"
|
exam_round = "2509"
|
||||||
exam_names = ["CAS_2_A", "CAS_2_B"] # 여러 시험명을 리스트로 설정
|
exam_names = ["CAT_3_A"] # 여러 시험명을 리스트로 설정
|
||||||
excel_list = []
|
excel_list = []
|
||||||
|
|
||||||
for exam_name in exam_names:
|
for exam_name in exam_names:
|
||||||
@@ -276,7 +276,7 @@ def main():
|
|||||||
for file in sorted(files): # 파일도 정렬
|
for file in sorted(files): # 파일도 정렬
|
||||||
if file == 'project.json':
|
if file == 'project.json':
|
||||||
full_path = os.path.join(root, file)
|
full_path = os.path.join(root, file)
|
||||||
print(f"\nProcessing: {full_path}")
|
print(f"\n🟠 Processing: {full_path}")
|
||||||
try:
|
try:
|
||||||
# 디렉토리 패스 내에 학생 이름만 뽑아서 엑셀 컬럼 명으로 추가
|
# 디렉토리 패스 내에 학생 이름만 뽑아서 엑셀 컬럼 명으로 추가
|
||||||
match = re.search(r'(\d{6}[-_][^\\/]+)[\\/]', full_path)
|
match = re.search(r'(\d{6}[-_][^\\/]+)[\\/]', full_path)
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ def read_json(file_path):
|
|||||||
|
|
||||||
def main():
|
def main():
|
||||||
# base_dir을 코드 내에서 직접 지정
|
# base_dir을 코드 내에서 직접 지정
|
||||||
base_dir = r".\output\2508_CAS_2_B" # 원하는 최상위 디렉토리 경로로 수정하세요
|
base_dir = r"D:\project\Entry\Entry-Scoring\output\2509_CAS_3_A" # 원하는 최상위 디렉토리 경로로 수정
|
||||||
|
|
||||||
# 하위 디렉토리 순회
|
# 하위 디렉토리 순회
|
||||||
for root, dirs, files in os.walk(base_dir):
|
for root, dirs, files in os.walk(base_dir):
|
||||||
|
|||||||
362
시험자료/2507/2507_CAT_3_A.json
Normal file
362
시험자료/2507/2507_CAT_3_A.json
Normal file
@@ -0,0 +1,362 @@
|
|||||||
|
{
|
||||||
|
"1-1": {
|
||||||
|
"type": "scene",
|
||||||
|
"ele": "$..objects[?(@.name=='실험실')]",
|
||||||
|
"points": 2,
|
||||||
|
"desc": "문제 1/교실 뒤(3)/[배경] 이름 설정/이름을 '실험실'으로 변경하기"
|
||||||
|
},
|
||||||
|
"1-2": {
|
||||||
|
"type": "scene",
|
||||||
|
"ele": "$..objects[?(@.name=='새로운 약')]",
|
||||||
|
"points": 2,
|
||||||
|
"desc": "문제 1/물약(빨강)/[개체] 이름 설정 1/이름을 '새로운 약'으로 변경하기"
|
||||||
|
},
|
||||||
|
"1-4": {
|
||||||
|
"type": "scene",
|
||||||
|
"ele": "$..objects[?(@.name=='불')]",
|
||||||
|
"points": 2,
|
||||||
|
"desc": "문제 1/불(2)/[개체] 이름 설정 2/이름을 '불'로 변경하기"
|
||||||
|
},
|
||||||
|
"1-5": {
|
||||||
|
"type": "scene",
|
||||||
|
"ele": "$..objects[?(@.name=='마법사')]",
|
||||||
|
"points": 2,
|
||||||
|
"desc": "문제 1/꼬마 마법사/[개체] 이름 설정 3/이름을 '마법사'로 변경하기"
|
||||||
|
},
|
||||||
|
"1-6": {
|
||||||
|
"type": "scene",
|
||||||
|
"ele": "$..objects[?(@.name=='마법의 약')]",
|
||||||
|
"points": 2,
|
||||||
|
"desc": "문제 1/마법의 약/[개체] 이름 설정 4/이름 변경 없음"
|
||||||
|
},
|
||||||
|
"2-0": {
|
||||||
|
"type": "script",
|
||||||
|
"ele": "$.objects[?(@.name=~'새로운 약|물약')].script",
|
||||||
|
"blocks": [
|
||||||
|
{
|
||||||
|
"ele": "$[0][0].type",
|
||||||
|
"answer": "when_run_button_click",
|
||||||
|
"points": 2.43,
|
||||||
|
"desc": "문제 2/새로운 약/시작/시작하기 버튼을 클릭했을 때"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[0][1].type",
|
||||||
|
"$[0][1].params[0].params[0]",
|
||||||
|
"$[0][1].params[1].params[0]"
|
||||||
|
],
|
||||||
|
"answer": ["locate_xy", "50", "5"],
|
||||||
|
"points": 2.43,
|
||||||
|
"desc": "문제 2/새로운 약/[시작]의 세부 동작 1/x: '50' y: '5' 위치로 이동하기",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": "$[0][2].params[0].params[0]",
|
||||||
|
"answer": "60",
|
||||||
|
"points": 2.43,
|
||||||
|
"desc": "문제 2/새로운 약/[시작]의 세부 동작 2/크기를 '60' 으로 정하기"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": "$[1][0].type",
|
||||||
|
"answer": "when_object_click",
|
||||||
|
"points": 2.43,
|
||||||
|
"desc": "문제 2/새로운 약/오브젝트/오브젝트를 클릭했을 때"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": ["$[1][1].type", "$[1][1].params[0]"],
|
||||||
|
"answer": ["repeat_inf", null],
|
||||||
|
"points": 2.43,
|
||||||
|
"desc": "문제 2/새로운 약/반복/계속 반복하기",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": "$[1][1].statements[0][0].type",
|
||||||
|
"answer": "locate",
|
||||||
|
"points": 2.43,
|
||||||
|
"desc": "문제 2/새로운 약/[반복]의 세부 동작/'마우스 포인터' 위치로 이동하기"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"3-0": {
|
||||||
|
"type": "script",
|
||||||
|
"ele": "$.objects[?(@.name=~'불')].script",
|
||||||
|
"blocks": [
|
||||||
|
{
|
||||||
|
"ele": "$[0][0].type",
|
||||||
|
"answer": "when_run_button_click",
|
||||||
|
"points": 2.43,
|
||||||
|
"desc": "문제 2/불/시작/시작하기 버튼을 클릭했을 때"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[0][1].type",
|
||||||
|
"$[0][1].params[0].params[0]",
|
||||||
|
"$[0][1].params[1].params[0]"
|
||||||
|
],
|
||||||
|
"answer": ["locate_xy", "-150", "-30"],
|
||||||
|
"points": 2.43,
|
||||||
|
"desc": "문제 2/불/[시작]의 세부 동작 1/x: '-150' y: '-30' 위치로 이동하기",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": "$[0][2].params[0].params[0]",
|
||||||
|
"answer": "90",
|
||||||
|
"points": 2.43,
|
||||||
|
"desc": "문제 2/불/[시작]의 세부 동작 2/크기를 '90' 으로 정하기"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": ["$[0][3].type", "$[0][3].params[0]"],
|
||||||
|
"answer": ["repeat_inf", null],
|
||||||
|
"points": 2.43,
|
||||||
|
"desc": "문제 2/불/반복/계속 반복하기",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[0][3].statements[0][0].type",
|
||||||
|
"$[0][3].statements[0][0].params[0].params[1].params[0]",
|
||||||
|
"$[0][3].statements[0][0].params[0].params[3].params[0]",
|
||||||
|
"$[0][3].statements[0][0].params[1].params[1].params[0]",
|
||||||
|
"$[0][3].statements[0][0].params[1].params[3].params[0]"
|
||||||
|
],
|
||||||
|
"answer": ["locate_xy", "-150", "0", "-10", "40"],
|
||||||
|
"points": 2.43,
|
||||||
|
"desc": "문제 2/불/[반복]의 세부 동작 1/x: '-150 부터 0 사이의 무작위 수' y: '-10 부터 40 사이의 무작위 수' 위치로 이동하기",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": "$[0][3].statements[0][1].type",
|
||||||
|
"answer": "hide",
|
||||||
|
"points": 2.43,
|
||||||
|
"desc": "문제 2/불/[반복]의 세부 동작 2/모양 숨기기"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[0][3].statements[0][2].type",
|
||||||
|
"$[0][3].statements[0][2].params[0].type",
|
||||||
|
"$[0][3].statements[0][2].params[0].params[1].params[0]",
|
||||||
|
"$[0][3].statements[0][2].params[0].params[3].params[0]"
|
||||||
|
],
|
||||||
|
"answer": ["wait_second", "calc_rand", "1", "2"],
|
||||||
|
"points": 2.43,
|
||||||
|
"desc": "문제 2/불/[반복]의 세부 동작 3/'1 부터 2 사이의 무작위 수' 초 기다리기",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": "$[0][3].statements[0][3].type",
|
||||||
|
"answer": "show",
|
||||||
|
"points": 2.43,
|
||||||
|
"desc": "문제 2/불/[반복]의 세부 동작 4/모양 보이기"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[0][3].statements[0][4].type",
|
||||||
|
"$[0][3].statements[0][4].params[0].params[0]"
|
||||||
|
],
|
||||||
|
"answer": ["wait_second", "0.5"],
|
||||||
|
"points": 2.43,
|
||||||
|
"desc": "문제 2/불/[반복]의 세부 동작 5/'0.5' 초 기다리기",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[0][3].statements[0][5].type",
|
||||||
|
"$[0][3].statements[0][5].params[0].type"
|
||||||
|
],
|
||||||
|
"answer": ["_if", "reach_something"],
|
||||||
|
"points": 2.43,
|
||||||
|
"desc": "문제 2/불/만일/만일 '새로운 약' 에 닿았는가? 라면",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": "$[0][3].statements[0][5].statements[0][0].params[0].params[0]",
|
||||||
|
"answer": "300",
|
||||||
|
"points": 2.43,
|
||||||
|
"desc": "문제 2/불/[만일]의 세부 동작 1/크기를 '300' 으로 정하기"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[0][3].statements[0][5].statements[0][1].type",
|
||||||
|
"$[0][3].statements[0][5].statements[0][1].params[0].params[0]",
|
||||||
|
"$[0][3].statements[0][5].statements[0][1].params[1]"
|
||||||
|
],
|
||||||
|
"answer": ["dialog", "마법 실패", "speak"],
|
||||||
|
"points": 2.43,
|
||||||
|
"desc": "문제 2/불/[만일]의 세부 동작 2/'마법 실패' 를 '말하기'",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[0][3].statements[0][5].statements[0][2].type",
|
||||||
|
"$[0][3].statements[0][5].statements[0][2].params[0]"
|
||||||
|
],
|
||||||
|
"answer": ["stop_object", "all"],
|
||||||
|
"points": 2.43,
|
||||||
|
"desc": "문제 2/불/[만일]의 세부 동작 3/'모든' 코드 멈추기",
|
||||||
|
"type": "list"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"4-0": {
|
||||||
|
"type": "script",
|
||||||
|
"ele": "$.objects[?(@.name=~'마법사')].script",
|
||||||
|
"blocks": [
|
||||||
|
{
|
||||||
|
"ele": "$[0][0].type",
|
||||||
|
"answer": "when_run_button_click",
|
||||||
|
"points": 2.43,
|
||||||
|
"desc": "문제 2/마법사/시작/시작하기 버튼을 클릭했을 때"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[0][1].type",
|
||||||
|
"$[0][1].params[0].params[0]",
|
||||||
|
"$[0][1].params[1].params[0]"
|
||||||
|
],
|
||||||
|
"answer": ["locate_xy", "135", "-20"],
|
||||||
|
"points": 2.43,
|
||||||
|
"desc": "문제 2/마법사/[시작]의 세부 동작 1/x: '135' y: '-20' 위치로 이동하기",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": "$[0][2].params[0].params[0]",
|
||||||
|
"answer": "180",
|
||||||
|
"points": 2.43,
|
||||||
|
"desc": "문제 2/마법사/[시작]의 세부 동작 2/크기를 '180' 으로 정하기"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": "$[0][3].params[*].params",
|
||||||
|
"answer": ["마법 실험을 해봐야지!", "2"],
|
||||||
|
"points": 2.43,
|
||||||
|
"desc": "문제 2/마법사/[시작]의 세부 동작 3/'마법 실험을 해봐야지!' 를 '2' 초 동안 '말하기'"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"5-0": {
|
||||||
|
"type": "script",
|
||||||
|
"ele": "$.objects[?(@.name=~'마법의 약')].script",
|
||||||
|
"blocks": [
|
||||||
|
{
|
||||||
|
"ele": "$[0][0].type",
|
||||||
|
"answer": "when_run_button_click",
|
||||||
|
"points": 2.43,
|
||||||
|
"desc": "문제 2/마법의 약/시작/시작하기 버튼을 클릭했을 때"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[0][1].type",
|
||||||
|
"$[0][1].params[0].params[0]",
|
||||||
|
"$[0][1].params[1].params[0]"
|
||||||
|
],
|
||||||
|
"answer": ["locate_xy", "-40", "10"],
|
||||||
|
"points": 2.43,
|
||||||
|
"desc": "문제 2/마법의 약/[시작]의 세부 동작 1/x: '-40' y: '10' 위치로 이동하기",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": "$[0][2].params[0].params[0]",
|
||||||
|
"answer": "50",
|
||||||
|
"points": 2.43,
|
||||||
|
"desc": "문제 2/마법의 약/[시작]의 세부 동작 2/크기를 '50' 으로 정하기"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": ["$[0][3].type", "$[0][3].params[0]"],
|
||||||
|
"answer": ["repeat_inf", null],
|
||||||
|
"points": 2.43,
|
||||||
|
"desc": "문제 2/마법의 약/반복/계속 반복하기",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": "$[0][3].statements[0][0].type",
|
||||||
|
"answer": "hide",
|
||||||
|
"points": 2.43,
|
||||||
|
"desc": "문제 2/마법의 약/[반복]의 세부 동작 1/모양 숨기기"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[0][3].statements[0][1].type",
|
||||||
|
"$[0][3].statements[0][1].params[0].params[1].params[0]",
|
||||||
|
"$[0][3].statements[0][1].params[0].params[3].params[0]"
|
||||||
|
],
|
||||||
|
"answer": ["locate_x", "-160", "60"],
|
||||||
|
"points": 2.43,
|
||||||
|
"desc": "문제 2/마법의 약/[반복]의 세부 동작 2/x: '-160 부터 60 사이의 무작위 수' 위치로 이동하기",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[0][3].statements[0][2].type",
|
||||||
|
"$[0][3].statements[0][2].params[0].params[0]"
|
||||||
|
],
|
||||||
|
"answer": ["wait_second", "2"],
|
||||||
|
"points": 2.43,
|
||||||
|
"desc": "문제 2/마법의 약/[반복]의 세부 동작 3/ '2' 초 기다리기",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": "$[0][3].statements[0][3].type",
|
||||||
|
"answer": "show",
|
||||||
|
"points": 2.43,
|
||||||
|
"desc": "문제 2/마법의 약/[반복]의 세부 동작 4/모양 보이기"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[0][3].statements[0][4].type",
|
||||||
|
"$[0][3].statements[0][4].params[0].params[0]"
|
||||||
|
],
|
||||||
|
"answer": ["wait_second", "0.5"],
|
||||||
|
"points": 2.43,
|
||||||
|
"desc": "문제 2/마법의 약/[반복]의 세부 동작 5/'0.5' 초 기다리기",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[0][3].statements[0][5].type",
|
||||||
|
"$[0][3].statements[0][5].params[0].type"
|
||||||
|
],
|
||||||
|
"answer": ["_if", "reach_something"],
|
||||||
|
"points": 2.43,
|
||||||
|
"desc": "문제 2/마법의 약/만일/만일 '새로운 약' 에 닿았는가? 라면",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": "$[0][3].statements[0][5].statements[0][0].params[0].params[0]",
|
||||||
|
"answer": "100",
|
||||||
|
"points": 2.43,
|
||||||
|
"desc": "문제 2/마법의 약/[만일]의 세부 동작 1/크기를 '100' 으로 정하기"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[0][3].statements[0][5].statements[0][1].type",
|
||||||
|
"$[0][3].statements[0][5].statements[0][1].params[0]",
|
||||||
|
"$[0][3].statements[0][5].statements[0][1].params[1].params[0]"
|
||||||
|
],
|
||||||
|
"answer": ["add_effect_amount", "color", "70"],
|
||||||
|
"points": 2.43,
|
||||||
|
"desc": "문제 2/마법의 약/[만일]의 세부 동작 2/'색깔' 효과를 '70' 만큼 주기",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[0][3].statements[0][5].statements[0][2].type",
|
||||||
|
"$[0][3].statements[0][5].statements[0][2].params[0].params[0]",
|
||||||
|
"$[0][3].statements[0][5].statements[0][2].params[1]"
|
||||||
|
],
|
||||||
|
"answer": ["dialog", "마법 성공", "speak"],
|
||||||
|
"points": 2.43,
|
||||||
|
"desc": "문제 2/마법의 약/[만일]의 세부 동작 3/'마법 성공' 을 '말하기'",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ele": [
|
||||||
|
"$[0][3].statements[0][5].statements[0][3].type",
|
||||||
|
"$[0][3].statements[0][5].statements[0][3].params[0]"
|
||||||
|
],
|
||||||
|
"answer": ["stop_object", "all"],
|
||||||
|
"points": 2.43,
|
||||||
|
"desc": "문제 2/마법의 약/[만일]의 세부 동작 4/'모든' 코드 멈추기",
|
||||||
|
"type": "list"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user