我是一名狂热的 DOTA 2 玩家。这是一款 5 人团队电子游戏,玩家可以从大约 100 名英雄中挑选一名进行游戏,这些英雄的能力和优势与劣势各不相同。
我经常担任队长,选择能够相互补充的英雄并暴露其他队长选择的弱点非常重要。
我想建立一个个人朋友和敌人数据库,可能使用 Excel 或 Access,但也可能还有其他解决方案。
如果我将两个英雄标记为反制者,例如 Venge > Enigma,我该怎么做,这样如果我看到 Venge,我就会看到 Enigma,如果我看到 Enigma,我就会看到 Venge。
例如
- 复仇克制谜团
- 谜团被 Venge 击败
或者
- Wisp 与 CK 结合
- CK 与 Wisp 结合
我只想输入每个计数器/组合的数据一次。
换句话说,我想要类似的东西http://www.mobacounter.com/dota/heroes,而是在我自己的电脑上有自己的列表。
我认为这很容易,但是当你不知道如何表述问题时,用 Google 寻找答案真的很困难。
答案1
我对这些微软程序一无所知;但我可以给你一些关于设计的反馈。
基本上,你需要一张表来记录所有的英雄和他们的属性,还有一张表来定义谁打败了谁。
这是在 postgresql 中执行此操作的方法。这可能不是您想要的,但也许您可以从中提取一些有用的信息:
create table hero (name varchar primary key, description varchar, size numeric);
create table defeats (stronger varchar references hero(name), weaker varchar references hero(name), reason varchar, constraint winlose_pk primary key (stronger,weaker));
现在是时候填充表格了:
insert into hero values ('rock', 'big and shiny', 5);
insert into hero values ('scissors', 'sharp and shiny', 4);
insert into hero values ('paper', 'white but dirty', 8);
insert into hero values ('noob', 'defeated by everything', 2);
现在关系表:
insert into defeats values ('rock', 'scissors', 'crushing defeat');
insert into defeats values ('paper', 'rock', 'enveloped');
insert into defeats values ('scissors', 'paper', 'cut');
insert into defeats values ('rock', 'noob', 'stone to the head');
insert into defeats values ('paper', 'noob', 'finger got cut');
insert into defeats values ('scissors', 'noob', 'would not stop runnning');
insert into defeats values ('noob', 'noob', 'self explanatory');
现在你有了两张表:
name | description | size
----------+------------------------+------
rock | big and shiny | 5
scissors | sharp and shiny | 4
paper | white but dirty | 8
noob | defeated by everything | 2
stronger | weaker | reason
----------+----------+-------------------------
rock | scissors | crushing defeat
paper | rock | enveloped
scissors | paper | cut
rock | noob | stone to the head
paper | noob | finger got cut
scissors | noob | would not stop runnning
noob | noob | self explanatory
现在你可以使用这个查询来检查谁是强力摇滚:
select * from defeats where stronger='rock';
stronger | weaker | reason
----------+----------+-------------------
rock | scissors | crushing defeat
rock | noob | stone to the head