|
|
[{"action": "SET_PROPERTY","component": "ChessBoard","property": "Width","value": 465},
{"action": "SET_PROPERTY","component": "ChessBoard","property": "Height","value": 465},
{"action": "ADD_BLOCK_INTENT","intent":[
{"var": "board","init":{"list":[]}},
{"var": "currentPlayer","init": 1},
{"var": "gameOver","init":false},
{"procedure": "重置游戏","params":[],"do":[
{"set_var": "global board","value":{"list":[]}},
{"for_range":{"var": "r","from": 1,"to": 15,"step": 1,"do":[
{"local_var": "rowList","value":{"list":[]},"do":[
{"for_range":{"var": "c","from": 1,"to": 15,"step": 1,"do":[
{"list_add":{"list":{"get_var": "rowList"},"item": 0}}
]}},
{"list_add":{"list":{"get_var": "global board"},"item":{"get_var": "rowList"}}}
]}
]}},
{"call_proc": "绘制棋盘","args":{}},
{"set_var": "global currentPlayer","value": 1},
{"set_var": "global gameOver","value":false},
{"set_prop": "StatusLabel.Text","value": "你的回合"}
]},
{"procedure": "绘制棋盘","params":[],"do":[
{"call": "ChessBoard.Clear","args":{}},
{"set_prop": "ChessBoard.PaintColor","value": "&HFF000000"},
{"for_range":{"var": "i","from": 1,"to": 15,"step": 1,"do":[
{"local_var": "y","value":{"add":[15,{"multiply":[{"subtract":[{"get_var": "i"},1]},30]}]},"do":[
{"call": "ChessBoard.DrawLine","args":{"x1": 15,"y1":{"get_var": "y"},"x2": 435,"y2":{"get_var": "y"}}}
]},
{"local_var": "x","value":{"add":[15,{"multiply":[{"subtract":[{"get_var": "i"},1]},30]}]},"do":[
{"call": "ChessBoard.DrawLine","args":{"x1":{"get_var": "x"},"y1": 15,"x2":{"get_var": "x"},"y2": 435}}
]}
]}}
]},
{"procedure": "绘制棋子","params":["row","col","player"],"do":[
{"set_prop": "ChessBoard.PaintColor","value":{"choose":{"test":{"eq":[{"get_var": "player"},1]},"then": "&HFF000000","else": "&HFFFFFFFF"}}},
{"call": "ChessBoard.DrawCircle","args":{
"centerX":{"add":[15,{"multiply":[{"subtract":[{"get_var": "col"},1]},30]}]},
"centerY":{"add":[15,{"multiply":[{"subtract":[{"get_var": "row"},1]},30]}]},
"radius": 12,
"fill":true
}}
]},
{"procedure": "设置棋盘位","params":["row","col","value"],"do":[
{"local_var": "oldBoard","value":{"get_var": "global board"},"do":[
{"local_var": "newBoard","value":{"list":[]},"do":[
{"for_range":{"var": "r","from": 1,"to": 15,"step": 1,"do":[
{"if":{"eq":[{"get_var": "r"},{"get_var": "row"}]},"then":[
{"local_var": "oldRow","value":{"select_item":{"list":{"get_var": "oldBoard"},"index":{"get_var": "r"}}},"do":[
{"local_var": "newRow","value":{"list":[]},"do":[
{"for_range":{"var": "c","from": 1,"to": 15,"step": 1,"do":[
{"if":{"eq":[{"get_var": "c"},{"get_var": "col"}]},"then":[
{"list_add":{"list":{"get_var": "newRow"},"item":{"get_var": "value"}}}
],"else_do":[
{"list_add":{"list":{"get_var": "newRow"},"item":{"select_item":{"list":{"get_var": "oldRow"},"index":{"get_var": "c"}}}}}
]}
]}},
{"list_add":{"list":{"get_var": "newBoard"},"item":{"get_var": "newRow"}}}
]}
]}
],"else_do":[
{"list_add":{"list":{"get_var": "newBoard"},"item":{"select_item":{"list":{"get_var": "oldBoard"},"index":{"get_var": "r"}}}}}
]}
]}},
{"set_var": "global board","value":{"get_var": "newBoard"}}
]}
]}
]},
{"function": "计数方向","params":["row","col","dr","dc","player"],"return":{
"do_return":{"do":[
{"local_var": "count","value": 0,"do":[
{"local_var": "r","value":{"add":[{"get_var": "row"},{"get_var": "dr"}]},"do":[
{"local_var": "c","value":{"add":[{"get_var": "col"},{"get_var": "dc"}]},"do":[
{"while":{"and":[
{"and":[{"gte":[{"get_var": "r"},1]},{"lte":[{"get_var": "r"},15]}]},
{"and":[{"gte":[{"get_var": "c"},1]},{"lte":[{"get_var": "c"},15]}]},
{"eq":[
{"select_item":{"list":{"select_item":{"list":{"get_var": "global board"},"index":{"get_var": "r"}}},"index":{"get_var": "c"}}},
{"get_var": "player"}
]}
]},"do":[
{"set_var": "count","value":{"add":[{"get_var": "count"},1]}},
{"set_var": "r","value":{"add":[{"get_var": "r"},{"get_var": "dr"}]}},
{"set_var": "c","value":{"add":[{"get_var": "c"},{"get_var": "dc"}]}}
]}
]}
]}
]}
],"value":{"get_var": "count"}}
}},
{"function": "评估长度","params":["row","col","player"],"return":{
"do_return":{"do":[
{"local_var": "directions","value":{"list":[
{"list":[0,1]},{"list":[1,0]},{"list":[1,1]},{"list":[1,-1]}
]},"do":[
{"local_var": "maxLen","value": 0,"do":[
{"foreach":{"var": "dir","in":{"get_var": "directions"},"do":[
{"local_var": "count1","value":{"call_proc": "计数方向","args":{
"row":{"get_var": "row"},"col":{"get_var": "col"},
"dr":{"select_item":{"list":{"get_var": "dir"},"index": 1}},
"dc":{"select_item":{"list":{"get_var": "dir"},"index": 2}},
"player":{"get_var": "player"}
}},"do":[
{"local_var": "count2","value":{"call_proc": "计数方向","args":{
"row":{"get_var": "row"},"col":{"get_var": "col"},
"dr":{"multiply":[{"select_item":{"list":{"get_var": "dir"},"index": 1}},-1]},
"dc":{"multiply":[{"select_item":{"list":{"get_var": "dir"},"index": 2}},-1]},
"player":{"get_var": "player"}
}},"do":[
{"local_var": "len","value":{"add":[1,{"add":[{"get_var": "count1"},{"get_var": "count2"}]}]},"do":[
{"if":{"gt":[{"get_var": "len"},{"get_var": "maxLen"}]},"then":[{"set_var": "maxLen","value":{"get_var": "len"}}]}}
]}
]}
]}
]}}
]}
]}
],"value":{"get_var": "maxLen"}}
}},
{"function": "分数映射","params":["len"],"return":{
"choose":{"test":{"gte":[{"get_var": "len"},5]},"then": 100000,"else":{
"choose":{"test":{"eq":[{"get_var": "len"},4]},"then": 10000,"else":{
"choose":{"test":{"eq":[{"get_var": "len"},3]},"then": 1000,"else":{
"choose":{"test":{"eq":[{"get_var": "len"},2]},"then": 100,"else": 10
}}
}}
}}
}},
{"procedure": "检查胜负","params":["row","col","player"],"do":[
{"local_var": "len","value":{"call_proc": "评估长度","args":{"row":{"get_var": "row"},"col":{"get_var": "col"},"player":{"get_var": "player"}}},"do":[
{"if":{"gte":[{"get_var": "len"},5]},"then":[
{"set_var": "global gameOver","value":true},
{"set_prop": "StatusLabel.Text","value":{"choose":{"test":{"eq":[{"get_var": "player"},1]},"then": "黑棋胜!","else": "白棋胜!"}}}
]}
]}
]},
{"procedure": "AI决策","params":[],"do":[
{"local_var": "bestScore","value": -1,"do":[
{"local_var": "bestR","value": 0,"do":[
{"local_var": "bestC","value": 0,"do":[
{"for_range":{"var": "row","from": 1,"to": 15,"step": 1,"do":[
{"for_range":{"var": "col","from": 1,"to": 15,"step": 1,"do":[
{"if":{"eq":[
{"select_item":{"list":{"select_item":{"list":{"get_var": "global board"},"index":{"get_var": "row"}}},"index":{"get_var": "col"}}},
0
]},"then":[
{"local_var": "lenAI","value":{"call_proc": "评估长度","args":{"row":{"get_var": "row"},"col":{"get_var": "col"},"player": 2}},"do":[
{"local_var": "lenHuman","value":{"call_proc": "评估长度","args":{"row":{"get_var": "row"},"col":{"get_var": "col"},"player": 1}},"do":[
{"local_var": "score","value":{"add":[
{"call_proc": "分数映射","args":{"len":{"get_var": "lenAI"}}},
{"multiply":[{"call_proc": "分数映射","args":{"len":{"get_var": "lenHuman"}}},0.9]}
]},"do":[
{"if":{"gt":[{"get_var": "score"},{"get_var": "bestScore"}]},"then":[
{"set_var": "bestScore","value":{"get_var": "score"}},
{"set_var": "bestR","value":{"get_var": "row"}},
{"set_var": "bestC","value":{"get_var": "col"}}
]}
]}
]}
]}
]}
]}}
]}},
{"call_proc": "落子","args":{"row":{"get_var": "bestR"},"col":{"get_var": "bestC"},"player": 2}},
{"set_var": "global currentPlayer","value": 1}
]}
]}
]}
]},
{"procedure": "落子","params":["row","col","player"],"do":[
{"call_proc": "设置棋盘位","args":{"row":{"get_var": "row"},"col":{"get_var": "col"},"value":{"get_var": "player"}}},
{"call_proc": "绘制棋子","args":{"row":{"get_var": "row"},"col":{"get_var": "col"},"player":{"get_var": "player"}}},
{"call_proc": "检查胜负","args":{"row":{"get_var": "row"},"col":{"get_var": "col"},"player":{"get_var": "player"}}}
]},
{"event": "Screen6.Initialize","do":[
{"call_proc": "重置游戏","args":{}}
]},
{"event": "ChessBoard.TouchDown","do":[
{"if":{"and":[{"not":{"get_var": "global gameOver"}},{"eq":[{"get_var": "global currentPlayer"},1]}]},"then":[
{"local_var": "row","value":{"add":[1,{"floor":{"divide":[{"subtract":[{"get_var": "y"},15]},30]}}]},"do":[
{"local_var": "col","value":{"add":[1,{"floor":{"divide":[{"subtract":[{"get_var": "x"},15]},30]}}]},"do":[
{"if":{"and":[
{"and":[{"gte":[{"get_var": "row"},1]},{"lte":[{"get_var": "row"},15]}]},
{"and":[{"gte":[{"get_var": "col"},1]},{"lte":[{"get_var": "col"},15]}]},
{"eq":[
{"select_item":{"list":{"select_item":{"list":{"get_var": "global board"},"index":{"get_var": "row"}}},"index":{"get_var": "col"}}},
0
]}
]},"then":[
{"call_proc": "落子","args":{"row":{"get_var": "row"},"col":{"get_var": "col"},"player": 1}},
{"if":{"not":{"get_var": "global gameOver"}},"then":[
{"call_proc": "AI决策","args":{}}
]}
]}
]}
]}
]}
]},
{"event": "RestartButton.Click","do":[
{"call_proc": "重置游戏","args":{}}
]}
]},
{"action": "CLEANUP_BLOCKS"}]
代码块添加失败,工作区已恢复: 块 procedures_defnoreturn: Connection checks failed. | 未知的操作:
|
|