Database 使用C+有效地存储和访问带有计数器和Synergies的现有视频游戏角色列表+; 我试图在C++ 中编写一个守卫遗迹草稿同伴应用程序

Database 使用C+有效地存储和访问带有计数器和Synergies的现有视频游戏角色列表+; 我试图在C++ 中编写一个守卫遗迹草稿同伴应用程序,database,list,class,vector,text-parsing,Database,List,Class,Vector,Text Parsing,我会给你一点关于它如何工作的概述。DotA有两支5人的球队。在一场比赛中,任何角色都不能被选中两次,这意味着团队不能共享一个角色。记住你的球队和对手的选择是很重要的。因此,这将根据你和你对手的球队为你推荐角色 澄清一下,现有的列表不是某种数据库,只是各种网站、论坛和视频上的建议的集合。我将自己组织这个列表,所以我的问题最终是我应该以什么格式创建这个列表 例如,一个很受欢迎的角色是Phatom刺客,他对可以减少护甲的角色很强,而对可以造成大量伤害的角色很弱 所以英雄类可能是这样的 class D

我会给你一点关于它如何工作的概述。DotA有两支5人的球队。在一场比赛中,任何角色都不能被选中两次,这意味着团队不能共享一个角色。记住你的球队和对手的选择是很重要的。因此,这将根据你和你对手的球队为你推荐角色

澄清一下,现有的列表不是某种数据库,只是各种网站、论坛和视频上的建议的集合。我将自己组织这个列表,所以我的问题最终是我应该以什么格式创建这个列表

例如,一个很受欢迎的角色是Phatom刺客,他对可以减少护甲的角色很强,而对可以造成大量伤害的角色很弱

所以英雄类可能是这样的

 class DotaHero
 {
     Name = "Phantom Assassin";
     vector<DotaHero> Counters{"Lina", "Lion"};
     vector<DotaHero> Friends{"Templar Assassin", "Shadow Demon"};
     CImg<unsigned char> src("PA.jpg");
 }
class-DotaHero
{
Name=“幻影刺客”;
向量计数器{“Lina”、“Lion”};
矢量朋友{“圣殿骑士刺客”,“阴影恶魔”};
CImg src(“PA.jpg”);
}
我的程序将允许您输入前几个英雄,然后显示一个字符列表作为建议

我应该

  • 为游戏中的每个英雄创建一个类
  • 来自文本文件的流,每个英雄由计数器/朋友描述
  • 创建某种数据库来存储每个英雄的计数器/朋友

  • 请随时提出建议

    一个非常难的问题

    存储什么以及如何表达角色之间的关系的问题将从根本上定义工具的工作方式和有效性

    在我的头顶,我会创建两个加权图

    1)朋友。 2)柜台

    每个节点代表一个英雄,图的每个边将对应于一个计数器有多强或者你认为英雄的朋友有多强。当英雄被挑选时,找到当前挑选的所有英雄的权重最高的邻居节点,这将是你的权重最高的建议。这将是只基于下一个选择的天真方法(并不总是最好的,一个陷入麻烦的好方法)。添加层并为二阶邻居创建权重,您可以开始对数据集进行非确定性分析,以获得更复杂的结果


    只是一个起点。这将是一个真正令人着迷的问题

    好主意!所有英雄都有多个计数器,有些计数器比其他计数器好,因此加权图是完美的。但在这种情况下,我仍然需要每个英雄都有一个条目。目前,我只是创建一个hero类,让我的主方法使用循环将相关信息放入每个对象中。这似乎有点冗长,我希望有更好的方法将这些信息输入到对象中。是否有一个C++中的序列化技术,就像java中有一个序列化技术,这样我就可以保存这些对象?我建议使用一个图形数据类库,然后SeriTyp技术可以是任何你能用的东西,如果是我,我会使用三重存储——公认的标准答案是某种XML文件和XML解析代码,您可以使用对象样式或三重存储/RDF样式。只要你知道如何解析它,你就可以真正使用任何你想要的东西。