我尝试开发业余网页游戏(仅仅是为了好玩),我正在寻找一种允许我(使用用例)的工具:
你知道这样的工具吗?如果你不这样做,你可以向我推荐哪些技术来构建它?
非常感谢!
答案 0 :(得分:0)
我会选择双向链表,其中每个节点可以同时是多个不同列表的成员:
struct node
{
struct node *factory_prev;
struct node *factory_next;
struct node *finish_prev;
struct node *finish_next;
struct node *progress_prev;
struct node *progress_next;
};
第一个列表链接该工厂生产的所有物品;列表库是工厂对象。当工厂受到攻击时,您可以走这个列表来查找现在已经延迟的所有项目,这样您就可以将它们从其他列表中删除。
第二个列表链接所有正在生成的项目,在完成时排序。查看第一个元素可以在O(1)中告诉您项目是否已完成。
第三个列表链接所有广播进度事件的项目,再次按下一个此类事件发生的时间排序。这种机制非常类似于“完成”列表,理论上可以合并,但是有一个单独的,更短的列表允许您更快地找到需要进度广播的项目。
由于这些是双链表,只要你有一个指向节点的指针,你就知道如何取消它与所有其他列表的链接。请注意,在多线程程序中,您可能仍需要某种形式的锁定。
另一种方法是重新安排在通常生产时延迟的物品;然而,对于也有进度报告的项目来说,这很难做到。