结合游戏

时间:2016-02-04 18:57:02

标签: java

在我的游戏中,用户将能够组合项目,如果兼容,则会产生项目新项目。物料ID保存为int。

我想知道最有效的方法是什么,同时确保交换的订单总是会产生相同的结果,因此用户可以输入订单:

item X + item Y = item Z
item Y + item X = item Z

我最初想过做一些像开关一样简单的事情:

private int findItem(id1, id2)
{
     int newID = 0; 
     switch(id1)
     {
          case 1:
             if(id2.equals(4))
                 newID = 9;//Item 1 + Item 4 = Item 9
          break;
     }
  return newID
}

但是,我不确定使用开关是最有效(或整洁)的,并且我必须在函数以相反的顺序接收项目ID的情况下创建另一个案例。我还必须在一个案例中评估所有事情" id1"可以结合。

有一种简单的方法可以做到这一点,在保持高效率的同时不会超过1,000行?

1 个答案:

答案 0 :(得分:3)

我建议使用Map<Set<Item>, Item>来存储食谱。它的关键是一组所需的项目(可能超过两个),以及它对制作项目的价值。

然后,您可以使用其.containsKey(Set<Item>)方法检查配方是否存在,并使用其.get(Set<Item>)方法获得精心设计的结果。

请注意,您的商品必须覆盖Object.hashCode()才能使此解决方案正常运行。

以下是一个小代码段,以防它不太清楚:http://ideone.com/MbnsrC