Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.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,我正在制作一个小游戏,猫必须抓住一只随意移动的老鼠。代码背后的想法是首先随机移动鼠标,然后检查猫与鼠标的位置。该代码对于较小的网格(CatAndMouse(…)中的第一个输入)运行良好,但在这个示例中(n=100),鼠标开始在0以下移动。我肯定会有更聪明的方法来移动猫,但我的主要问题是为什么鼠标移动的y值太负?如果当前位置大于0,则仅应沿负y方向移动,如果其等于0,则不应移动 public class CatAndMouse { publi

我正在制作一个小游戏,猫必须抓住一只随意移动的老鼠。代码背后的想法是首先随机移动鼠标,然后检查猫与鼠标的位置。该代码对于较小的网格(CatAndMouse(…)中的第一个输入)运行良好,但在这个示例中(n=100),鼠标开始在0以下移动。我肯定会有更聪明的方法来移动猫,但我的主要问题是为什么鼠标移动的y值太负?如果当前位置大于0,则仅应沿负y方向移动,如果其等于0,则不应移动

            public class CatAndMouse {
                public static void main(String[] args) {
                    // runs a test
                    CatAndMouse.runCatAndMouse(100, 7, 88, 98, 13);
                }
                // method here
                public static void runCatAndMouse(int n, int catX, int catY, int mouseX,int mouseY) {
                    // print user input
                    System.out.println(n+" ["+catX+";"+catY+"]"+" ["+mouseX+";"+mouseY+"]");
                    int k = 0;
                    Random random = new Random();
                    // checks for valid input
                    if ( catX < 0 || catY < 0 || mouseX < 0 || mouseY < 0 || n < 0 ||catX > n || catY > n || mouseX > n || mouseY > n) {
                        System.out.println("ERROR");
                    }
                    else {
                        while ( catX != mouseX || catY != mouseY) {
                            k ++;
                            int mouseMovement = random.nextInt(5);
                            if ( mouseMovement == 1 && mouseX < n) {
                                mouseX ++;
                            }
                            else if ( mouseMovement == 2 && mouseY < n) {
                                mouseY ++;
                            }
                            else if ( mouseMovement == 3 && mouseX > 0) {
                                mouseX --;
                            }
                            else if ( mouseMovement == 4 && mouseY > 0) {
                                mouseY --;
                            }

                            // cat
                            if ( catX < mouseX && catY < mouseY){
                                catX ++;
                                catY ++;
                            }
                            else if ( catX > mouseX && catY > mouseY) {
                                catX --;
                                catY --;
                            }
                            else if ( catX < mouseX && catY > mouseY) {
                                catX ++;
                                mouseY --;
                            }
                            else if ( catX > mouseX && catY < mouseY) {
                                catX --;
                                catY ++;
                            }
                            else if ( catX == mouseX+1) {
                                catX ++;
                            }
                            else if ( catY == mouseY+1) {
                                catY ++;
                            }
                            else if ( catX == mouseX-1) {
                                catX --;
                            }
                            else if ( catY == mouseY-1) {
                                catY --;
                            }
                            else if ( catX < mouseX) {
                                catX += 2;
                            }
                            else if ( catY < mouseY) {
                                catY +=2 ;
                            }
                            else if ( catX > mouseX) {
                                catX -= 2;
                                }
                            else if ( catY > mouseY) {
                                catY -= 2;
                            }
                            System.out.println("move "+k+" ["+catX+";"+catY+"]"+" ["+mouseX+";"+mouseY+"]");
                        }
                    }

                }
            }
公共类目录和鼠标{
公共静态void main(字符串[]args){
//运行测试
跑卡塔鼠(100,7,88,98,13);
}
//这里的方法
公共静态void runCatAndMouse(int n、int catX、int catY、int mouseX、int mouseY){
//打印用户输入
System.out.println(n+“[”+catX+”;“+catY+”]“+”[“+mouseX+”;“+mouseY+”]);
int k=0;
随机=新随机();
//检查有效输入
如果(catX<0 | | | catY<0 | | | mouseX<0 | | mouseY<0 | | n<0 | | catX>n | | mouseX>n | | mouseY>n){
System.out.println(“错误”);
}
否则{
while(catX!=mouseX | | catY!=mouseY){
k++;
int mouseMovement=random.nextInt(5);
if(mouseMovement==1&&mouseX0){
鼠标--;
}
else if(mouseMovement==4&&mouseY>0){
老鼠——;
}
//猫
如果(catXmouseX&&catY>mouseY){
catX--;
凯蒂--;
}
else if(catXmouseY){
catX++;
老鼠——;
}
else if(catX>mouseX&&catY鼠标){
catX-=2;
}
else if(猫>老鼠){
catY-=2;
}
System.out.println(“移动“+k+”[“+catX+”;“+catY+”]“+”[“+mouseX+”;“+mouseY+”]);
}
}
}
}

再次查看您的
else if
块。你有

            public class CatAndMouse {
                public static void main(String[] args) {
                    // runs a test
                    CatAndMouse.runCatAndMouse(100, 7, 88, 98, 13);
                }
                // method here
                public static void runCatAndMouse(int n, int catX, int catY, int mouseX,int mouseY) {
                    // print user input
                    System.out.println(n+" ["+catX+";"+catY+"]"+" ["+mouseX+";"+mouseY+"]");
                    int k = 0;
                    Random random = new Random();
                    // checks for valid input
                    if ( catX < 0 || catY < 0 || mouseX < 0 || mouseY < 0 || n < 0 ||catX > n || catY > n || mouseX > n || mouseY > n) {
                        System.out.println("ERROR");
                    }
                    else {
                        while ( catX != mouseX || catY != mouseY) {
                            k ++;
                            int mouseMovement = random.nextInt(5);
                            if ( mouseMovement == 1 && mouseX < n) {
                                mouseX ++;
                            }
                            else if ( mouseMovement == 2 && mouseY < n) {
                                mouseY ++;
                            }
                            else if ( mouseMovement == 3 && mouseX > 0) {
                                mouseX --;
                            }
                            else if ( mouseMovement == 4 && mouseY > 0) {
                                mouseY --;
                            }

                            // cat
                            if ( catX < mouseX && catY < mouseY){
                                catX ++;
                                catY ++;
                            }
                            else if ( catX > mouseX && catY > mouseY) {
                                catX --;
                                catY --;
                            }
                            else if ( catX < mouseX && catY > mouseY) {
                                catX ++;
                                mouseY --;
                            }
                            else if ( catX > mouseX && catY < mouseY) {
                                catX --;
                                catY ++;
                            }
                            else if ( catX == mouseX+1) {
                                catX ++;
                            }
                            else if ( catY == mouseY+1) {
                                catY ++;
                            }
                            else if ( catX == mouseX-1) {
                                catX --;
                            }
                            else if ( catY == mouseY-1) {
                                catY --;
                            }
                            else if ( catX < mouseX) {
                                catX += 2;
                            }
                            else if ( catY < mouseY) {
                                catY +=2 ;
                            }
                            else if ( catX > mouseX) {
                                catX -= 2;
                                }
                            else if ( catY > mouseY) {
                                catY -= 2;
                            }
                            System.out.println("move "+k+" ["+catX+";"+catY+"]"+" ["+mouseX+";"+mouseY+"]");
                        }
                    }

                }
            }
else if ( catX < mouseX && catY > mouseY) {
    catX ++;
    mouseY --;
}
else if(catXmouseY){
catX++;
老鼠——;
}
从逻辑上讲,你认为这是在做什么?我相信如果你把它从
mouseY--
改为
catY--
它将与你的猫捉老鼠游戏的逻辑相匹配。

你在
中有一个
mouseY--
,否则如果
块,而不是
catY--
            public class CatAndMouse {
                public static void main(String[] args) {
                    // runs a test
                    CatAndMouse.runCatAndMouse(100, 7, 88, 98, 13);
                }
                // method here
                public static void runCatAndMouse(int n, int catX, int catY, int mouseX,int mouseY) {
                    // print user input
                    System.out.println(n+" ["+catX+";"+catY+"]"+" ["+mouseX+";"+mouseY+"]");
                    int k = 0;
                    Random random = new Random();
                    // checks for valid input
                    if ( catX < 0 || catY < 0 || mouseX < 0 || mouseY < 0 || n < 0 ||catX > n || catY > n || mouseX > n || mouseY > n) {
                        System.out.println("ERROR");
                    }
                    else {
                        while ( catX != mouseX || catY != mouseY) {
                            k ++;
                            int mouseMovement = random.nextInt(5);
                            if ( mouseMovement == 1 && mouseX < n) {
                                mouseX ++;
                            }
                            else if ( mouseMovement == 2 && mouseY < n) {
                                mouseY ++;
                            }
                            else if ( mouseMovement == 3 && mouseX > 0) {
                                mouseX --;
                            }
                            else if ( mouseMovement == 4 && mouseY > 0) {
                                mouseY --;
                            }

                            // cat
                            if ( catX < mouseX && catY < mouseY){
                                catX ++;
                                catY ++;
                            }
                            else if ( catX > mouseX && catY > mouseY) {
                                catX --;
                                catY --;
                            }
                            else if ( catX < mouseX && catY > mouseY) {
                                catX ++;
                                mouseY --;
                            }
                            else if ( catX > mouseX && catY < mouseY) {
                                catX --;
                                catY ++;
                            }
                            else if ( catX == mouseX+1) {
                                catX ++;
                            }
                            else if ( catY == mouseY+1) {
                                catY ++;
                            }
                            else if ( catX == mouseX-1) {
                                catX --;
                            }
                            else if ( catY == mouseY-1) {
                                catY --;
                            }
                            else if ( catX < mouseX) {
                                catX += 2;
                            }
                            else if ( catY < mouseY) {
                                catY +=2 ;
                            }
                            else if ( catX > mouseX) {
                                catX -= 2;
                                }
                            else if ( catY > mouseY) {
                                catY -= 2;
                            }
                            System.out.println("move "+k+" ["+catX+";"+catY+"]"+" ["+mouseX+";"+mouseY+"]");
                        }
                    }

                }
            }