【问题标题】:Pacman, make the ghosts chase Pacman吃豆人,让鬼魂追逐吃豆人
【发布时间】:2017-12-10 23:42:54
【问题描述】:

所以,现在在 Java 中,对于一个项目,我必须编写四个幽灵并让它们追逐吃豆人。这是我现在拥有的代码。当我运行它时,我得到了返回操作[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];

【问题讨论】:

  • 没有代码你的问题没有意义。所以请不要删除它(见How to Ask)。

标签: java artificial-intelligence pacman


【解决方案1】:

变量i 超出了该行的范围。您在 forloop 中定义i,您可以在其中探索每个动作/幽灵。循环结束后,i 不再定义。

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

【讨论】:

  • 那么,应该只是“返回操作”吗? ?
  • @AnnaBelle 绝对是(如果我正确理解代码)
  • @AnnaBelle 是正确的,看看你的返回类型,它是一个数组,通过编写 action[i] ,你也应该在编译时得到一个错误。
猜你喜欢
  • 2011-04-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-13
  • 1970-01-01
  • 2022-08-15
  • 2013-01-03
相关资源
最近更新 更多