我正在写一个c#单人游戏。地图上有两座金矿。玩家可以通过以下方式收集黄金:
public static void CollectGold(ObjectFactory.ObjectType type)
{
if (Hud.mCurrentTime >= Hud.mCountDuration)
{
Counter++;
Hud.mCurrentTime -= Hud.mCountDuration
if (sMaxGold < 10)
{
sMaxGold += 2;
}
if (sMaxGold >= 10)
{
sMaxGold -= 2; // or sMaxGold = 10 in earlier version-> same output
}
}
else if (sMaxGold > 0)
{
Hud.mGold += 2;
sMaxGold -= 2;
}
}但可以肯定的是,当玩家从金矿中收集黄金时,就好像他也在从另一个矿山中收集黄金。我如何分离这一点,CollectGold只适用于所选的一个矿。我不能用相同的代码为第二个矿创建CollectGold2,因为有一次我想在我的代码中构建很多矿。我认为有一种比复制和粘贴方法更好的方法。
我的第一个想法是,我可以检查地雷的位置,这样方法就可以知道那个地雷。但我不知道该怎么做?有什么想法吗?
发布于 2019-12-16 00:08:56
您应该为一个矿山使用一个自定义类,并在那里创建一个非静态方法,而不是一个静态方法。然后你就应该找到需要的矿并收集它的黄金。示例:
private class Player
{
public int GoldBalance = 0;
}
private class Mine
{
public int GoldAvailable = 10;
public void Collect(Player player)
{
if (GoldAvailable <= 0)
return;
player.GoldBalance += GoldAvailable;
GoldAvailable = 0;
}
}发布于 2019-12-15 21:53:38
这个问题实际上不能以这种形式回答;我们需要更多的信息。例如,您如何在代码中表示您的矿山?
然而,这里有几种可能的方法:
var mine = new Mine();
mine.CollectGold();public static void CollectGold(Mine mine)或
public static void CollectGold(int mineId)我删除了未使用的type参数。
方法1可能更可取,但它取决于您试图实现的目标以及应用程序的复杂程度。
https://stackoverflow.com/questions/59344440
复制相似问题