Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 吃豆人游戏:如何让货币跟随玩家?_Java - Fatal编程技术网

Java 吃豆人游戏:如何让货币跟随玩家?

Java 吃豆人游戏:如何让货币跟随玩家?,java,Java,事实上,我是java的初学者,我试图创建一个货币玩家,让它找到到玩家的最短路径,但不幸的是,货币玩家的移动方式很快(玩家每走一步,货币玩家都跟着他,货币玩家突然跳起来),所以这里的主要问题是: 在每个角落里,钱贩子都会跳到玩家的前面 货币玩家一步一步地移动(当我松开按钮时,它停止),我需要它继续跟随玩家 我创建了这些与问题相关的类: -游戏类(缩写为grid、wall、monester、food) -Square类是每个网格的组件 -ghost类需要在收缩器中有一个称为current的正方形,然

事实上,我是java的初学者,我试图创建一个货币玩家,让它找到到玩家的最短路径,但不幸的是,货币玩家的移动方式很快(玩家每走一步,货币玩家都跟着他,货币玩家突然跳起来),所以这里的主要问题是:

  • 在每个角落里,钱贩子都会跳到玩家的前面
  • 货币玩家一步一步地移动(当我松开按钮时,它停止),我需要它继续跟随玩家
  • 我创建了这些与问题相关的类: -游戏类(缩写为grid、wall、monester、food)

    -Square类是每个网格的组件

    -ghost类需要在收缩器中有一个称为current的正方形,然后它会将此电流更改为距离chasedSquare最近的下一个nieghbour

     ghost.add(new Ghost(grid.get(2).get(2)));      // just for expermental purposes
    
    public ArrayList findNieghbours(){
    ArrayList nieghbours=新的ArrayList();
    int currentX=current.getX();
    int currentY=current.getY();
    if(currentX0&!grid.get(currentY/30).get(currentX/30-1).isWall()){
    nieghbours.add(grid.get(currentX/30-1).get(currentY/30));
    }
    if(currentY0&!grid.get(currentY/30-1).get(currentX/30).isWall()){
    nieghbours.add(grid.get(currentX/30).get(currentY/30-1));
    }
    返回尼堡;
    }
    
    public void Chase(方形chasedSquare){
    ArrayList nieghbours=findNieghbours();
    Square lower=nieghbours.get(0);//尝试捕捉??
    用于(方形:尼格尔布尔){
    
    如果(Math.sqrt((square.getX()-chasedSquare.getX())^2+(square.getX()-chasedSquare.getX())^2)我相信问题出在您的
    Chase
    方法中。^运算符不是幂运算符。您应该使用Math.pow方法,或者将值本身相乘:

    Math.pow(square.getX()-chasedSquare.getX(),2)


    (square.getX()-chasedSquare.getX())*(square.getX()-chasedSquare.getX())
    我相信问题出在你的
    Chase
    方法中。^运算符不是幂运算符。你应该使用Math.pow方法,或者将值本身相乘:

    Math.pow(square.getX()-chasedSquare.getX(),2)


    (square.getX()-chasedSquare.getX())*(square.getX()-chasedSquare.getX())
    问题似乎出在
    Chase
    函数中。
    ^
    是Java中的逐位异或运算符(请参阅)。您可以使用
    Math.pow()
    方法获取值的平方:

    double x = 2.0
    double xSq = Math.pow(x, 2)
    

    查看更多详细信息。

    问题似乎出在
    Chase
    函数中。
    ^
    是Java中的逐位异或运算符(请参阅)。您可以使用
    Math.pow()
    方法获取值的平方:

    double x = 2.0
    double xSq = Math.pow(x, 2)
    
    查看更多详细信息

    double x = 2.0
    double xSq = Math.pow(x, 2)