如何正确设计填充数组的方法

时间:2016-12-22 22:20:08

标签: java arrays

我是游戏的开头我正在创建一个由星形物体组成的背景

bg = new Background();

我的背景课程如下:

public class Background {

    public ArrayList<Star> starList;
    private Star star;

    public Background(int level) {
        star = new Star();
        star.populateStarList(level);
    }

    public class Star{

        private boolean stillSearching = true;
        boolean clash = false;
        public Vector2 starPositionVector;

        public Star() {
            //loop through the starList to find valid x,y coordinates
            while (stillSearching){
                float x = 0 + (int)(Math.random() * ((GamePanel.WIDTH - 0) + 1));
                float y = 0 + (int)(Math.random() * ((GamePanel.HEIGHT - 0) + 1));
                starPositionVector = new Vector2(x,y);

                for (int u = 0; u < starList.size(); u++){
                    Star starCollision = starList.get(u);

                    //check distance
                    if (starPositionVector.dstSqr(starCollision.starPositionVector) < 5){
                        clash = true;
                        break;
                    }
                }
                if (clash == false){
                    stillSearching = false;
                }
            }
        }


        public void populateStarList(int level){

            if(starList==null) {
                starList = new ArrayList<Star>();
            }

            for (int i = 0; i < 10; i++){
                Star star = new Star();
                starList.add(star);
            }
        }
    }
}

这个想法是populateStarList将用星形对象填充数组。但是,我不能在没有实例化星级的情况下调用populateStarlist。这是一个问题,因为在

中使用了starList数组
public class Star

并且在调用populateStarlist之前为零。

我不确定这是不是我不了解如何使用静态方法,或者我是否做了一些糟糕的设计选择。

ps:如果有一种更有效的方法来测试有效的x,y坐标而不是我的while / for循环,我很乐意知道。

0 个答案:

没有答案