麻烦一个类中的方法与另一个类中的方法交互

时间:2013-12-07 02:32:21

标签: java loops if-statement

我是AP计算机科学课程的高中生,周末我们被分配了这个项目:

“在一个正方形的街道网格中模拟一个醉人的徘徊。画一个水平10条街道和10条街道垂直的网格。用点代表模拟的酒鬼,放在网格的中间开始。 100次,模拟酒鬼随机选择一个方向(东,西,北,南),在所选方向上移动一个区块,然后绘制点。迭代后,显示酒鬼所覆盖的距离。可能会期望平均来说这个人可能无法到达任何地方,因为从长远来看,向不同方向的移动会相互抵消,但事实上它可以以概率1显示该人最终移出任何有限区域。“

但是,因为图形不是课程的一部分,所以网格是由Grid类中的循环创建的网格模拟的,而代表醉汉的点是X,例如:

example of grid

X的默认位置为(5,5),如上所示。但是,我无法让X随机移动。

我的醉汉课程

public class Drunkard 
{

int row;

int column;

public Drunkard()
{
    row = 5;
    column = 5;
}

public int getCol()
{
    return column;
}

public int getRow()
{        
    return row;
}

public void moveRandomly()
{
    double directionDeterminer = Math.random();

    if (directionDeterminer >= 0 && directionDeterminer <= 0.25) 
    {
        row++;

    }
    else if (directionDeterminer >= 0.25 && directionDeterminer <= 0.50)
    {
        row--;

    }
    else if ( directionDeterminer >= 0.50 && directionDeterminer <= 0.75)
    {
        column++;

    }
    else if ( directionDeterminer >= 0.75 && directionDeterminer <= 1.00)
    {
        column--;

    }
}

}

和我的网格类(包含创建网格的循环):

public class Grid
{

    public static final int MAX_NUM_ROWS = 10;

    public static final int MAX_NUM_COLUMNS = 10;

    public Grid()
    {

    }

    public void draw(Drunkard theDrunk)
    {
        Drunkard drunk = new Drunkard();
        drunk.getRow();
        int y = drunk.getCol();

        String newRow = "- - - - - - - - - - ";
        drunk.moveRandomly();

        for (int row = 0; row < MAX_NUM_ROWS - 1; row++)
        {

            if (row == 4)
            {
                y = 8;
                System.out.print( newRow.substring(0,y) + "X " + newRow.substring(10,20) );
                System.out.print("\n");


            }

            for (int column = 0; column < MAX_NUM_COLUMNS ; column++)
            {
                System.out.print("- ");
            }
            System.out.print("\n");
        }
    }
}

方法moveRandomly()应该增加或减少行或列,以便X的位置向北,向南,向东或向西变化。但是,我不确定如何使moveRandomly()(行和列)中的变量对Grid类中创建的网格有任何影响。有没有人知道如何使它变得对网格产生影响?请记住,我是一名初学程序员,因此我对循环和if语句有基本知识,而不是arrrays或图形。任何评论将不胜感激。

1 个答案:

答案 0 :(得分:1)

它看起来很不错,我想你可能只想在画中这样的东西:

for(int row = 0; row < MAX_NUM_ROWS - 1; row ++)
{
    for(int column = 0; column < MAX_NUM_COLUMNS - 1; column ++)
    {
       if((row == theDrunk.getRow()) && (column == theDrunk.getCol()))
           System.out.print("X");
       else
           System.out.print("-");
    }
    System.out.println();
}

这也可以通过子串进行一些修改