Java 吃豆人,让鬼魂追吃豆人

Java 吃豆人,让鬼魂追吃豆人,java,artificial-intelligence,pacman,Java,Artificial Intelligence,Pacman,所以,现在在Java中,对于一个项目,我必须编写四个幽灵的代码,让它们追逐Pacman。这是我现在掌握的密码。当我运行它时,我得到一个错误,返回操作[I]中的变量“I”找不到。有人知道为什么会这样吗?这是我的密码 public int[] clyde(Game game) { Defender clyde = game.getDefender(3); Attacker pacman = game.getAttacker(); int direction = clyde.

所以,现在在Java中,对于一个项目,我必须编写四个幽灵的代码,让它们追逐Pacman。这是我现在掌握的密码。当我运行它时,我得到一个错误,返回操作[I]中的变量“I”找不到。有人知道为什么会这样吗?这是我的密码

public int[] clyde(Game game)
{

    Defender clyde = game.getDefender(3);
    Attacker pacman = game.getAttacker();
    int direction = clyde.getDirection();
    direction = clyde.getNextDir(pacman.getLocation(), true);
    int[] actions = new int[game.NUM_DEFENDER];
    List<Defender> enemies = game.getDefenders();
    int x = 0;
    if (clyde.isVulnerable())
    {
        for (int i = 0; i < actions.length; i++)
        {
            List<game.models.Node> powerpills = game.getPowerPillList();
            Defender defender = enemies.get(i);
            List<Integer> possibleDirs = defender.getPossibleDirs();

            if (possibleDirs.size() != 0)
            {
                actions[i] = possibleDirs.get(Game.rng.nextInt(possibleDirs.size()));
                for (int j = 0; j < powerpills.size(); j++)
                {
                    powerpills = game.getPowerPillList();
                    actions[i] = clyde.getNextDir(pacman.getLocation(), true);

                }
            }
            else
                clyde.getNextDir(pacman.getLocation(), false);

        }



    }
    return actions[i];
public int[]克莱德(游戏)
{
Defender clyde=game.getDefender(3);
攻击者pacman=game.get攻击者();
int direction=clyde.getDirection();
direction=clyde.getNextDir(pacman.getLocation(),true);
int[]actions=新int[game.NUM_DEFENDER];
列出敌人=game.getDefenders();
int x=0;
if(clyde.isVulnerable())
{
for(int i=0;i
变量
i
超出该行的范围。您在forloop中定义
i
,在forloop中探索每个动作/重影。循环结束后,
i
不再定义


编辑:既然你的函数返回
int[]
,你不应该返回
actions
(一个包含每个重影动作的数组)而不是单个动作吗?

那么,它应该是“return actions;”吗?@AnnaBelle绝对(如果我正确理解代码的话)@AnnaBelle这是正确的,看看您的返回类型,它是一个数组,通过编写操作[i],您也应该在编译时得到一个错误。如果没有代码,您的问题就没有意义。因此请不要删除它(请参阅)。