gpt4 book ai didi

c# - 在 LinkedList 中查找类

转载 作者:行者123 更新时间:2023-11-30 21:01:19 24 4
gpt4 key购买 nike

我正在制作这款 2-D 游戏,我希望能够在其中构建结构。玩家必须能够从某些结构中受益。今天的游戏看起来像这样:

enter image description here(蓝点为player,其他点为ais)

我创建了一个名为 Structure 的类和其他三个继承自 Structure 的类。这些类或多或少是空的。游戏的方 block 有自己的类,名为 Tile。在这门课上我写了一些东西,但感兴趣的代码是这样的:

public LinkedList<Structure> Structures = new LinkedList<Structure>();

当我构建一个结构(例如壁炉)时,代码如下所示:

Bundle.map.tile[Bundle.player.X, Bundle.player.Y].Structures.
AddFirst(new Fireplace());

我不确定的部分是我如何检查列表是否包含例如壁炉(这是一个名为 Fireplace 的类)或任何其他建筑物。例如,如果玩家在瓷砖上发现壁炉,他​​/她将恢复温暖。这是行不通的。也许我对这一切采取了错误的方法,无论哪种情况,请提供一个代码示例。

答案结论:

bool anyFireplace = Bundle.map.tile[Bundle.player.X, Bundle.player.Y].Structures.OfType<Fireplace>().Any();
if (anyFireplace)
{
Warmth = MaxWarmth;
}
else
{
if (Warmth > 0)
{
Warmth--;
}
else
{
HP--;
}
}

最佳答案

例如,您可以使用 Enumerable.OfType<TResult>()Enumerable.Any(TSource)如下:

LinkedList<Structure> structures = new LinkedList<Structure>();

// Add Different Types of Structures

Boolean anyFireplace = structures.OfType<Fireplace>().Any();

只要确保你有:

using System.Linq;

在源代码顶部的 using 指令中以及对 System.Core 程序集模块的引用。如果您需要知道 LinkedList 中壁炉的确切数量,您也可以使用 Count() 方法,否则 Any() 在 Linq 对象中更有效。

关于c# - 在 LinkedList 中查找类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14295718/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com