跟踪鼠标的猫,迷你游戏

时间:2015-10-05 16:19:35

标签: java

我正在创建一个迷你游戏,其中猫必须捕捉随机移动的鼠标。代码背后的想法是首先随机移动鼠标,然后检查猫的位置与鼠标相比。代码适用于较小的网格(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+"]");
                        }
                    }

                }
            }

1 个答案:

答案 0 :(得分:1)

再次查看else if块。

else if ( catX < mouseX && catY > mouseY) {
    catX ++;
    mouseY --;
}

从逻辑上讲,您认为这是做什么的?我相信如果你将它从mouseY--更改为catY--,它将与你对猫和老鼠游戏应该做的逻辑相匹配。