赞 | 0 |
VIP | 90 |
好人卡 | 0 |
积分 | 104 |
经验 | 60532 |
最后登录 | 2020-7-14 |
在线时间 | 1181 小时 |
Lv4.逐梦者 水月·镜花
- 梦石
- 10
- 星屑
- 403
- 在线时间
- 1181 小时
- 注册时间
- 2005-10-22
- 帖子
- 1183
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 电子最终龙 于 2013-8-1 18:52 编辑
每次寫AI的時候都會覺得自己的遊戲AI課程白上了……orz
這次要做SLG,寫了遍歷之後發現技能多移動範圍廣的單位行動居然能卡個兩三秒
無奈之下暫時模仿貪婪算法寫了個最弱目標優先
運算時間沒錯是最小化了……
但是少了技能預讀,AI不會找人多的位置放技能傷害最大化,不會補刀,也不會卡敵人的攻擊距離……
總之趕腳好低端{:2_271:}
求吐槽,求指點,求優化,各種求{:2_272:}- # AI主流程。battler: 行動方,map: 當前地圖站位分佈集
- def 最弱優先攻擊(battler, map)
- route = move_to(battler, 搜索防禦最低目標(battler))
- if battler.未施放增益法術?
- skill_id = battler.增益法術id
- return 生成行動(route, 增益法術id)
- elsif battler.生命小於10%?
- if battler.能治療?
- return 生成行動(route, 治療id)
- end
- if battler.有藥吃?
- return 生成行動(route, 吃藥id)
- end
- end
- if 範圍內無可用目標
- return 生成行動(route, 加速技能id)
- end
- skill_id, target_pos = 計算攻擊技能和落點(battler, 搜索防禦最低目標(battler))
- return 生成行動(route, skill_id, target_pos)
- end
- # 搜索battler的移動+攻擊範圍內防禦最低的敵人,返回最接近目標的可移動座標
- # battler: 當前行動方,map: 地圖站位分佈集
- def 搜索防禦最低目標(battler, map)
- if 範圍內無可用目標
- # 搜索最近目標target,算法略
- return target.x, target.y
- else # 範圍內有可用目標時
- # 計算範圍內所有目標中防禦最低的target, 算法略
- return target.x, target.y
- end
- # 貪婪尋路計算移動路點集
- # battler: 行動方,x, y: 目標路點座標
- def move_to(battler, x, y)
- #創建路點集route
- route = []
- # 計算路點集,算法略
- return route
- end
复制代码 |
|