当前位置: 首页 > 知识库问答 >
问题:

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

令狐钧
2023-03-14

好的,所以我是新来的,我坚持想出一个解决这个问题的好方法。所以我正在使用slick2d在Java创建一个RPG自上而下的生存游戏。在游戏中生成物品时,我有一个问题。管理数百个物品的最佳方法是什么...一个例子;我有一个名为PickUpItems的物品子类。例如,当一棵树被玩家摧毁时,它会生成一个PickUpItem,它只是一个带有矩形框以进行碰撞的图像。选择要生成的物品而不必为每个互动物品(树、灌木、耕种等)制作数百个类的最佳方法是什么。我应该有一个项目管理器类吗?给定一个名称,它将搜索一个文本文件以获取所需的参数并创建一个对象?

public ull spawnPickUpItem(String type, int x, int y){PickUpItem picUpItem=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;
    }

这是我目前的尝试,它产生了必要的项目,但想象一下运行一个带有数百个案例的switch语句,每个项目都需要在游戏中产生一个项目。我相信有人能帮上忙。。非常感谢。

共有1个答案

平嘉熙
2023-03-14

您可以遵循工厂方法

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 . . .
}
 类似资料:
  • 在C很新,很抱歉提前听起来很没有经验... 我希望通过将节点存储在静态分配的数组中来实现列表抽象数据类型,而不使用malloc()或free()。每个列表元素都是一个节点,可以容纳一个“项”。我需要能够使用next和previous遍历节点,并具有“current”、“tail”、“head”的概念。 还有两个数组。。。一个指向“头”的指针数组,因此每个头都有一个“节点”数组。我还需要能够将当前项

  • 我有INT数组 我也在寻找类似的问题,但我只发现了java.util.stream.stream .sorted()的大O复杂性,这一点也没有帮助,因为有两个不同的答案(第一个当然是部分错误的,因为arrays.sort并不总是O(n log n))。第二个呢?我还没找到证据。

  • 有两个类。我想在dataConsumer类中获取数据提供程序类providerData_。 为了解决这种情况,我认为下面是一个解决方案。我制作了如下的singleton数据传输类。但我不确定这是不是c中的通用解,首先我想知道我的解是否可用。接下来,如果你知道更好的解决方案(或设计模式)来解决我的情况,请告诉我。

  • 假设我有理由要求通过多个值类型快速查找类实例,为了便于解释,我将以游戏服务器为例。 假设服务器使用静态标识号处理用户。这个数字用于与特定玩家交流和互动(即:私聊、交易请求、战斗、公会邀请等)。 这需要经常使用玩家的识别号来查找玩家,根据我目前的经验,最好的方法是:(如果我错了,请纠正我。) 然而,在处理网络时,很多时候我还需要将播放器与网络会话关联,或者一些人可能更熟悉的“套接字”。看起来是这样的

  • 目前,我有一个EC2实例(2个CPU、8GB RAM、Linux),上面有: NodeJS Express服务器(后端) NodeJS“微服务”Express服务器(与API等通信) PostgreSQL数据库 Redis(作为我的服务器(1)和我的微服务服务器(2)之间的消息代理 与服务器(1)通信的ReactJS应用程序(前端) 现在,这在低流量下工作得很好,但是随着流量的增加(每分钟/小时1

  • ● 什么是图层 ● 更新属性内容 ● 设置图层的标题 ● 隐藏图层字段 ● 复制拷贝图层 ● 批量更新属性内容 ● 移动记录到另一个图层 ● 合并两个图层到一个图层 ● 怎么控制一个图层内容不重复 ● 修改字段类型 ● 修改列标题 ● 怎么使用表格管理数据 ● 怎么下载图层数据 ● 怎么上传照片