2012-03-16 89 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; 
}