清泛IT社区

标题: AI助手能力再进化:“手术级”修改代码块 [打印本页]

作者: App Inventor 2     时间: 2026-07-02 22:26
标题: AI助手能力再进化:“手术级”修改代码块
1、追加代码块到指定位置:
(, 下载次数: 684)

2、指定改某个代码块:
(, 下载次数: 688)


作者: App Inventor 2     时间: 2026-07-02 22:45
运行报错与AI联动:

(, 下载次数: 689)

作者: App Inventor 2     时间: 2026-07-14 22:07
[{"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. | 未知的操作:








作者: App Inventor 2     时间: 2026-07-16 22:29
(, 下载次数: 640)
复杂任务引入规划执行。





欢迎光临 清泛IT社区 (https://bbs.tsingfun.com/) Powered by Discuz! X3.3