Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何有效地管理数百个实体?_Java_Resources_Lwjgl_Slick2d - Fatal编程技术网

Java 如何有效地管理数百个实体?

Java 如何有效地管理数百个实体?,java,resources,lwjgl,slick2d,Java,Resources,Lwjgl,Slick2d,好的,我是新来的,我一直在想一个解决这个问题的好方法。因此,我正在使用slick2d在Java中创建一个RPG自上而下的生存游戏。我有一个问题,当涉及到产卵项目在游戏中。管理数百件物品的最佳方式是什么。。。一个例子;我有一个子类的项目称为皮卡项目。例如,当一棵树被玩家破坏时,它会产生一个拾取项,它只是一个带有矩形框的图像,用于碰撞。不必为每个交互项目(树、灌木、农业等)创建数百个类,选择要生成的项目的最佳方式是什么。我应该有一个项目管理器类吗?给定一个名称,它将搜索一个文本文件以获取所需的参数,

好的,我是新来的,我一直在想一个解决这个问题的好方法。因此,我正在使用slick2d在Java中创建一个RPG自上而下的生存游戏。我有一个问题,当涉及到产卵项目在游戏中。管理数百件物品的最佳方式是什么。。。一个例子;我有一个子类的项目称为皮卡项目。例如,当一棵树被玩家破坏时,它会产生一个拾取项,它只是一个带有矩形框的图像,用于碰撞。不必为每个交互项目(树、灌木、农业等)创建数百个类,选择要生成的项目的最佳方式是什么。我应该有一个项目管理器类吗?给定一个名称,它将搜索一个文本文件以获取所需的参数,然后创建一个对象

公共无效拾取项(字符串类型,整数x,整数y) { PickUpItem PickUpItem=null

    switch(type)
    {
        case"Log":
            pickUpItem = new PickUpItem(type,logImage,x,y,this);
        break;
        case"Flint":
            pickUpItem = new PickUpItem(type,flintImage,x,y,this);
        break;
        case"Rock":
            pickUpItem = new PickUpItem(type,rockImage,x,y,this);
        break;
    }

这是我目前的尝试,它产生了必要的项目,但想象一下运行一个开关语句,包含数百个案例,每个项目都需要在游戏中产生一个项目。我相信有人可以帮助你。谢谢你你可以遵循
工厂方法
模式

Map<String, Image> imageRepository = new HashMap<>(); // to be filled

PickUpItem createItem(String type, int x, int y) {
    Image itemImage = imageRepository.getOrDefault(type, yourDefaultImg);
    return new PickUpItem(itemImage, x, y); 
}

public void spawnPickUpItem(String type, int x, int y) {
   PickUpItem pickUpItem = createItem(String type, int x, int y);
   // further logic . . .
}
Map imageRepository=new HashMap();//待填充
PickUpItem createItem(字符串类型,int x,int y){
Image itemImage=imageRepository.getOrDefault(类型,yourDefaultImg);
返回新拾取项(itemImage,x,y);
}
公共无效拾取项(字符串类型,整数x,整数y){
PickUpItem PickUpItem=createItem(字符串类型,int x,int y);
//进一步的逻辑。
}

我对该集合不熟悉。我将仔细阅读。谢谢。我对该集合类型进行了一些研究,它似乎对我的项目非常有用。我的问题是如何使用与给定字符串对应的所有图像填充此Hashmap…?我假设我将使用.put()方法,参数1是字符串,然后是图像?我在slick 2d中工作,因此要创建图像,我需要做如下操作…图像img=新图像(“PathGoesher”);谢谢您使用地图作为临时存储库是一种很好的方法,可以在将来保留扩展功能的可能性。第一个
string
(键)应该是您的图像标识符。与您在
案例附近使用的关键词(“岩石”、“燧石”等)的含义相同