使用Math.random时的模式

时间:2014-06-20 01:45:20

标签: java random

我正试图让鼠标穿过房间到目标房间。我正在使用具有x和y轴的类图系统。我有一个问题,计算机似乎不想在现有变量中添加或减去。

控制台:

The mouse is in room (5,4) 
The mouse is in room (5,6) 
The mouse is in room (6,5) 
The mouse is in room (5,4) 
The mouse is in room (5,6) 
The mouse is in room (5,6) 

鼠标代码:

package mouse_maze;

public class Mouse {

    private int xCord = 5;
    private int yCord = 5;
    //position of the mouse when it starts


    public int getXCord() {
        return this.xCord;
    }
    public int getYCord() {
        return this.yCord;
    }

    public void move() {
    //method for the movement of the mouse
        boolean verticalMove = Math.random() < .5;
        boolean horizontalMove;
        if (verticalMove == true)
            horizontalMove = false;
        else
            horizontalMove = true;
        int moveBy = 1;
        if (Math.random() < .5)
            moveBy = -1;
        if (verticalMove) {
            int test = this.yCord + moveBy;
            if(test < 1 || test > 9) return;
            this.yCord += moveBy;
        }
        if (horizontalMove) {
            int test = this.xCord + moveBy;
            if(test < 1 || test > 9) return;
            this.xCord += moveBy;
        }
        System.out.println("The mouse is in room (" + xCord + "," + yCord + ")");
    }
}

迷宫代码:

package mouse_maze;

public class Maze {

    private boolean onGoing = false;
    private int tarX;
    private int tarY;
    //creates the target for the mouse.

    public static void main(String[] args) {
        new Maze(6, 8).init();
    }
    public Maze(int tarX, int tarY) {
        this.tarX = tarX;
        this.tarY = tarY;
    }
    public void init() {
        this.onGoing = true;
        while(this.onGoing)
            this.iterate();
    }
    public void iterate() {
        Mouse m = new Mouse();
        m.move();
        if (m.getXCord() == tarX && m.getYCord() == tarY) {
            this.onGoing = false;
            System.out.println("The mouse has beat the maze!");
            //checks if the mouse has gotten to the target room.
        }
    }
}

1 个答案:

答案 0 :(得分:3)

首先,学习使用调试器,或者至少学会通过任何方式进行调试。没有实际证明问题总是“假设”这个问题是毫无意义的。

你的整个问题与随机等无关。

iterate()方法中,您每次都在创建一个新鼠标,而不是让相同的鼠标继续移动。