我如何为单人游戏中收集金币设置限制?

时间:2019-12-09 14:34:07

标签: c# counter limit monogame

我想限制我的C#单机游戏中的Goldmine。我希望有10个金币,在收集它们之后有新的金币。每5秒2新金。这在我的代码中很完美。但是现在我希望等待黄金之后有限制。如果玩家等待很长时间,他只能获得10金。 但是限制不起作用。 有什么想法吗?

这是我的代码:

public static void CollectGold(ObjectFactory.ObjectType type)
{
    if(MaxGoldLimit <=10)
    { 
        if (sMaxGold > 0)
        {
            Hud.mGold += 2;
            sMaxGold -= 2;
        }
        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 
            }
         }
    }                   
}

sMaxGold是我的极限。这永远不会超过10。但是每5秒钟我就会获得2新金。因此限制不起作用。 有没有人可以帮助我?

编辑:

我在对象工厂中构建对象。

case ObjectFactory.ObjectType.GoldVein:
    mActiveButtons.Add(ObjectFactory.ObjectType.GoldVein.ToString());
    mButtons[ObjectFactory.ObjectType.GoldVein.ToString()].SetLocation(one);
    mButtons[ObjectFactory.ObjectType.GoldVein.ToString()].mAction = 
    GoldVein.CollectGold;
    mButtons[ObjectFactory.ObjectType.GoldVein.ToString()].UpdateText("Collect");
    MAXGoldLimit= 10;
    break;

这就是我与对象管理器绘制地雷的方式:

CreateObject(ObjectFactory.ObjectType.GoldVein, new Point(TileSize * 26, TileSize * 8);
CreateObject(ObjectFactory.ObjectType.GoldVein, new Point(TileSize * 30, TileSize * 8);

1 个答案:

答案 0 :(得分:4)

尝试在声明中添加其他

 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;
  }

 }