2012-03-16 87 views
-2

我正在创建一个基于文本的游戏,可以让玩家拥有一定的体重能力。我有一个项目类(静止设置),现在每个项目的默认权重值为1。我想让一些物品的重量为0.5(半重量),但是我希望玩家的最大重量是6。现在,我可以通过将重量的int最大容量浮动,以便它可以接受0.5的值。还是我完全混淆了这一点,我应该尝试一些其他的东西。此外,如果玩家携带5.5重量,并且他尝试拿起1重量的物品,我该如何设置验证规则,以便告诉玩家“你不能拿起这个物品,它太重了”。C#基于文本的游戏项目

在此先感谢您的任何帮助。

+2

我相信你应该先尝试一种方法并发布一些代码。然后,基于这个问题提出一个问题。这样人们可以更容易地回答。 – 2012-03-16 22:12:59

+0

但是一些意味着一些,不要发表一段代码并尝试提出具体问题。 – 2012-03-16 22:14:59

+0

如果重量的最小增量为0.5,我建议您将所有重量值乘以系数2,以便可以使用整数类型。如果您确实必须将权重向用户显示一半,那么您可以在显示它们时对这些值进行分割。 – phoog 2012-03-16 22:17:38

回答

0

可能的解决方案是设置权重的默认'1'。 所以,如果你想使用权重'1'和'0.5',你应该规范这些项目,并设置'2'和'1'。如果你这样做,你可以使用,例如,Int16或任何小类型。 (导致浮点类型很大)。

但如果您这样做:Double Weight,您可以制作重量为3/223.1415...的物品,而无需标准化重量。

+0

如果4个字节是巨大的... – harold 2012-03-17 20:52:47

+0

如果你有成千上万的玩家和数以百万计的物品的天堂服务器... – gaussblurinc 2012-03-17 21:16:08

+0

然后,这很好,但它仍然没有关系。 – harold 2012-03-18 10:35:07

2

你可以做这样的事情:

 int maxWeight = 6; 
     double currentWeight = 5.5; 
     double itemWeight = 1; 

     if (currentWeight + itemWeight <= maxWeight) 
     { 
      // do stuff 
     } 
     else 
     { 
      Console.WriteLine("you can not pick up this item, it is too heavy"); 
     } 

我认为这是计算后的currenWeight的意图。但这是给你一个想法。

0

我想你想要这样的东西;该示例假设了几个实现细节。如果这是令人困惑的,让我知道,我会充实一点。

void TryPickUpItem(GameItem i, out bool success) 
{ 
    if ((i.Weight + this.TotalWeightCarried) > this.CarryingCapacity) 
    { 
     success = false; 
     return; 
    } 

    this.Items.Add(i); 
    success = true; 
} 

现在,如果有一个以上的原因未能接了一个项目(例如,项目可能是滑),那么你会做一个PickUpResult枚举,并使用out PickupResult result代替out bool success。此外,您可以使该方法的返回值而不是out参数:

PickUpResult TryPickUpItem(GameItem i) 
{ 
    if ((i.Weight + this.TotalWeightCarried) > this.CarryingCapacity) 
     return PickUpResult.TooHeavy; 

    if (i.IsGreasy) 
     return PickUpResult.ItemSlipped; 

    if (i.IsTooFarAway) 
     return //...something 

    //...etc 

    this.Items.Add(i); 
    return PickUpResult.Success; 
}