对象 - 我做错了什么?

时间:2014-03-18 19:18:50

标签: java object

我正在尝试创建一个对象数组,树(如森林)12x12。它们起初都是树木。用户输入要开始的火灾次数以及火灾蔓延到周围物体之一的概率。当我使用数组[] []时,我有它工作但是当试图使它与对象一起工作时,我无法让对象检查它们周围的对象然后决定是否着火。我是网站的新手,所以我不确定你需要看到什么。

public static void fireCheck(Tree[][] trees1){

    int i = 0;
    int c = 0;

    for(i = 0; i <= 11; i ++) {

        for(c = 0; c <= 11; c ++) {

            switch(trees1[i][c].getStatus()){

                case '^': break;
                case '.': break;
                case '*': trees1[i][c].burned(); break;
                default: break;
            }

            if(trees1[i][c].getStatus() == '^'){

                if(i <= 10){

                    switch(trees1[i + 1][c].getStatus()){

                            case '^': break;
                            case '.': break;
                            case '*': trees1[i+1][c].probability(); break;
                            default: break;
                    }

                    if(c <= 10){
                        switch(trees1[i][c + 1].getStatus()){

                            case '^': break;
                            case '.': break;
                            case '*': trees1[i][c+1].probability(); break;
                            default: break;
                        }

                        switch(trees1[i + 1][c + 1].getStatus()){

                            case '^': break;
                            case '.': break;
                            case '*': trees1[i+1][c+1].probability(); break;
                            default: break;
                        }


                    }
                }

                if(i >= 1){

                    switch(trees1[i - 1][c].getStatus()){

                            case '^': break;
                            case '.': break;
                            case '*': trees1[i-1][c].probability(); break;
                            default: break;
                        }

                    if(c >= 1){
                        switch(trees1[i][c - 1].getStatus()){

                            case '^': break;
                            case '.': break;
                            case '*': trees1[i][c-1].probability(); break;
                            default: break;
                        }

                        switch(trees1[i - 1][c - 1].getStatus()){

                            case '^': break;
                            case '.': break;
                            case '*': trees1[i-1][c-1].probability(); break;
                            default: break;
                        }
                    }
                }

                if(i <= 10){

                    if(c >= 1){

                        switch(trees1[i+1][c-1].getStatus()){

                            case '^': break;
                            case '.': break;
                            case '*': trees1[i+1][c-1].probability(); break;
                            default: break;

                        }
                    }
                }               
            }
        }
    }

}

1 个答案:

答案 0 :(得分:1)

我想你想让这个程序更加面向对象。

创建一个类树,它有一些位置和一种识别另一棵树是否是邻居的方法。

interface OurTree{
    public int getPosition();
    public boolean isNeighbour(OurTree tree);
    public boolean isBurning();
}

实施上述界面将对您有所帮助。

创建上面实现的接口的一组对象(假设这是一个林)。循环通过集合,并确定是否有任何树着火。如果是的话,烧掉它的邻居。

或者,您可以定义一个方法来返回给定树的邻居,并一次刻录它们。