-1

我想用 Java 实现一个玩纸足球的机器人,但我不知道如何开始。

我需要选择哪种算法来降低复杂度?关于我该怎么做的任何想法?

4

3 回答 3

3

首先学习如何编写类似的算法。

国际象棋http://www.sluijten.com/winglet/

博弈树算法简介

http://www.hamedahmadi.com/gametree/

于 2013-04-09T12:42:54.410 回答
0

一个简单的算法是测试 8 个方向中的每一个的有效性,然后随机选择其中一个。您可能想要更接近对手目标的方向。您可以为所有选择平均分配 60% 的概率,然后将 20% 额外分配给最佳选择,将 10% 额外分配给第二和第三最佳选择。如果只有 2 个选项可用,则分配 75/25% 的机会。当只有一个可用的选择时,就不需要随机性了。

编辑:

示例 1:起始位置、屏幕顶部的目标、每次移动的百分比机会:

17.5 27.5 17.5
 7.5       7.5
 7.5  7.5  7.5

示例 2:

那么,如何将动作从最好到最差排列?我会使用在每个方向上与目标的距离,如果你朝着目标移动,我会加上它,如果你离开,我会减去它。因此,如果目标是向上 7 个方格和向左 3 个方格,那么每个方向的得分将是:

10  7   4
 3     -3
-4 -7 -10

假设在上述情况下有 5 种可能的移动,并且非法移动恰好是向上、向上和向下,那么每个移动的百分比机会将是(非法移动被分配为 0 机会):

32  0  0
22    22
12 12  0
于 2013-04-09T12:54:40.820 回答
0

尝试minimax,但它不会那么容易。

于 2013-04-09T12:38:05.527 回答