【发布时间】:2009-01-28 20:56:10
【问题描述】:
好的,我需要设计一种方法来跟踪每个项目的存在数量。 大约有 26 个项目。我还需要一种方法来确定是否存在某种项目组合。
例如, 这是纸牌游戏的引擎。每张卡片都有不同的类型,每张卡片都可以附有卡片。 为了让玩家在游戏中做某些事情,需要有一定的卡片组合附加到一张卡片上。 为了简化这个程序,我想做类似的事情
if (meetsCrit(2, water, 4, ground))
{
do this()
}
else
{
displayerror()
}
编辑:已解决!
我使用了下面几篇文章中描述的技术组合。 特别提及:
乔恩·斯基特, 里纳特·阿卜杜林, 弗兰克,
无论如何,这就是我所做的 我创建了一个名为 pair 的类,它存储我要查找的类型以及该类型的数量。 然后我使用了一个谓词代表来查找所有该类型并计算有多少, 然后我将它与我正在搜索的数字进行比较,并分别返回 true 或 false。
这是它的代码
public bool meetsCrit(params Pair[] specs)
{
foreach (Pair i in specs)
{
if (!(attached.FindAll(delegate(Card c) { return c.type == i.type; }).Count >= i.value))
{
return false;
}
}
return true;
}
【问题讨论】:
-
Michael:你需要比这更具体——它非常模糊。否则你只会被否决而被遗忘。
-
这个问题的措辞非常混乱。
-
你如何告诉你的代码什么是“气球”和什么是“纸杯蛋糕”?
-
每个人都知道气球会漂浮,而纸杯蛋糕就是你吃的东西。
-
您介意使用其他集合类型吗?字典等也可以帮助解决这个问题。
标签: c# arrays parameters