c# - 如何根据百分比管理 AI 操作

标签 c#

我现在正在研究程序员如何根据最终幻想类战术游戏(策略游戏)的 Action 百分比模拟 AI 决策。

例如,AI 角色有以下 Action :

攻击1:10%
攻击2:9%
魔法:4%
移动:1%

这一切远未达到 100%

一开始我想有一个有 100 个空槽的数组,攻击会有 10 个槽,攻击 2 个数组上的 9 个槽。结合随机我可以让 Action 去做。我的问题是它不是很有效,或者看起来不是。同样重要的是,如果我进入空位我该怎么办。我是否必须为每个角色计算所有基于 100% 的 Action ,或者为每个人定义一个“默认” Action ?

或者也许有更有效的方式来查看所有这些?我认为该百分比是实现 AI 的最简单方法。

最佳答案

我能想到的最佳答案是列出您希望角色拥有的所有可能 Action ,给每个 Action 一个相对值,然后将所有 Action 缩放到总和 100%。

编辑:

例如,这是我的三个 Action 。我希望攻击和魔法的可能性相同,而逃跑的可能性是攻击或使用魔法的一半:

  • 攻击 = 20
  • 魔法 = 20
  • 逃离 = 10

这加起来是 50,所以将每个除以这个总数得到一个小数值(乘以 100 得到百分比):

  • 攻击= 0.4
  • 魔力 = 0.4
  • 逃离 = 0.2

然后,我将从中得出一个累积值列表(即每个条目都是该条目及其之前所有条目的总和):

  • 攻击= 0.4
  • 魔力 = 0.8
  • 逃离 = 1

现在,生成一个介于 0 和 1 之间的随机数,并找到列表中大于或等于该数字的第一个条目。这就是您要采取的行动。

关于c# - 如何根据百分比管理 AI 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/673557/

相关文章:

c# - 是否可以从每个请求中调用一个方法

c# - SQLDataadapter 不适用于 GO

c# - 如何扩展 Entity Framework 6 模型

c# - WPF 的 Validation.Error 和 Validation.HasError 的奇怪行为

XP 上的 C# WCF 客户端内存泄漏

c# - 带有字典的默认值属性

c# - 将Matlab模糊逻辑工具箱fis文件转换为c#/c++/javascript

c# - 如何在 javascript 中获取 UTC 偏移量(类似于 C# 中的 TimeZoneInfo.GetUtcOffset)

c# - Web API 2 Windows 身份验证不断提示登录

javascript - 使用 Kendo MVVM Dropdownlist 时如何强制选择第一项