每個機器人為一線程,線程調度為**非搶佔式**,由戰鬥管理線程依序調度運行。線程執行至阻塞函數(AdvancedRobot 為 execute())時交出 CPU。
setXXX() 設定動作,再呼叫 execute() 提交本回合指令。execute() 之後繼續執行,直到下一次 execute()。setXXX() 設定的動作常需多回合完成(如移動、轉向有速度限制)。若上回合動作未完成,本回合再次 setXXX() 會**覆蓋**舊動作。
onXXX() 特性execute() 結束回合,剩餘事件延至下回合處理。onXXX() 僅改變**線程內部執行順序**,不影響機器人間的調度順序。優化建議:避免在事件處理中過早呼叫 execute(),合理規劃動作佇列,減少不必要的動作覆蓋。