我正在創建一個基於文本的遊戲,可以讓玩家擁有一定的體重能力。我有一個項目類(靜止設置),現在每個項目的默認權重值爲1。我想讓一些物品的重量爲0.5(半重量),但是我希望玩家的最大重量是6。現在,我可以通過將重量的int最大容量浮動,以便它可以接受0.5的值。還是我完全混淆了這一點,我應該嘗試一些其他的東西。此外,如果玩家攜帶5.5重量,並且他嘗試拿起1重量的物品,我該如何設置驗證規則,以便告訴玩家「你不能拿起這個物品,它太重了」。C#基於文本的遊戲項目
在此先感謝您的任何幫助。
我正在創建一個基於文本的遊戲,可以讓玩家擁有一定的體重能力。我有一個項目類(靜止設置),現在每個項目的默認權重值爲1。我想讓一些物品的重量爲0.5(半重量),但是我希望玩家的最大重量是6。現在,我可以通過將重量的int最大容量浮動,以便它可以接受0.5的值。還是我完全混淆了這一點,我應該嘗試一些其他的東西。此外,如果玩家攜帶5.5重量,並且他嘗試拿起1重量的物品,我該如何設置驗證規則,以便告訴玩家「你不能拿起這個物品,它太重了」。C#基於文本的遊戲項目
在此先感謝您的任何幫助。
可能的解決方案是設置權重的默認'1'。 所以,如果你想使用權重'1'和'0.5',你應該規範這些項目,並設置'2'和'1'。如果你這樣做,你可以使用,例如,Int16或任何小類型。 (導致浮點類型很大)。
但如果您這樣做:Double Weight
,您可以製作重量爲3/22
或3.1415...
的物品,而無需標準化重量。
如果4個字節是巨大的... – harold 2012-03-17 20:52:47
如果你有成千上萬的玩家和數以百萬計的物品的天堂服務器... – gaussblurinc 2012-03-17 21:16:08
然後,這很好,但它仍然沒有關係。 – harold 2012-03-18 10:35:07
你可以做這樣的事情:
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的意圖。但這是給你一個想法。
我想你想要這樣的東西;該示例假設了幾個實現細節。如果這是令人困惑的,讓我知道,我會充實一點。
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;
}
我相信你應該先嚐試一種方法併發布一些代碼。然後,基於這個問題提出一個問題。這樣人們可以更容易地回答。 – 2012-03-16 22:12:59
但是一些意味着一些,不要發表一段代碼並嘗試提出具體問題。 – 2012-03-16 22:14:59
如果重量的最小增量爲0.5,我建議您將所有重量值乘以係數2,以便可以使用整數類型。如果您確實必須將權重向用戶顯示一半,那麼您可以在顯示它們時對這些值進行分割。 – phoog 2012-03-16 22:17:38