我正在创建一个基于文本的游戏,可以让玩家拥有一定的体重能力。我有一个项目类(静止设置),现在每个项目的默认权重值为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