0

我想在随机的地方生成我的物品(Sword1)。当我生成它时,首先它只创建一个,然后它随机移动到任何地方。我应该为对象创建和排列吗?如何?

    public class Sword1 {

        public static TextureRegion sprite;

        public static int x;
        public static int y;
        public static int size;

        public static boolean created;
        public Sword1(){
            created=true;
            Random r = new Random();
            x = (r.nextInt(5)+1)*GameRender.tilesize;
            y = (r.nextInt(5)+1)*GameRender.tilesize;
            size = GameRender.tilesize;
            sprite = AssetLoader.s1;
            createMe();
        }

        public static void createMe() { 
            GameRender.batch.draw(sprite, x, y, size, size);    
        }

   }

我批量渲染它:

while(number<4){
    number++;
    Items.createSwords();
}   

我还尝试使用 Items 类,它可以在有更多项目时保存所有项目

public class Items {


    public Items(){}

    public static void createSwords() {
        Object sword = (Sword1) new Sword1();
    }
}
4

1 回答 1

0

您可以清理并重命名 Sword1 类 [我还将静态变量更改为私有],否则它们将在各种类实例之间共享,请参阅:静态变量 — 它们是什么?。

public class Sword {

    private TextureRegion sprite;

    private int x;
    private int y;
    private int size;

    public Sword() {
        Random r = new Random();
        x = (r.nextInt(5)+1)*GameRender.tilesize;
        y = (r.nextInt(5)+1)*GameRender.tilesize;
        size = GameRender.tilesize;
        sprite = AssetLoader.s1;        
    }

    public void createMe() { 
        GameRender.batch.draw(sprite, x, y, size, size);    
    }
}

然后,您可以使用多把剑和一个 ArrayList of Swords使用剑对象GameRender的类,如评论中给出的:

    private List<Sword> swords = new ArrayList<Sword>();

有关 Array 的更多信息,请参阅Oracle 文档

现在您将拥有一个剑对象列表。此列表将用于存储新创建的 Sword 对象并在以后渲染它们。

创造剑

//create 10 swords
for (int i = 0; i<10 ; i++ ) {
    swords.add(new Sword());
}

渲染剑,在每个对象中调用create方法

for (Sword sword : swords) {
    sword.createMe();
}

例如GameRender 类中的一个最小示例

public class GameRender() { 
    private List<Sword> swords = new ArrayList<Sword>();

    public GameRender(){
        // create the swords
        for (int i = 0; i<10 ; i++ ) {
            swords.add(new Sword());
    }

    // render the swords
    public void render() {
        for (Sword sword : swords) {
            sword.createMe();
        }

    }

}
于 2014-10-25T19:04:41.973 回答