gpt4 book ai didi

C#:使用堆栈创建方法

转载 作者:太空宇宙 更新时间:2023-11-03 21:25:44 25 4
gpt4 key购买 nike

我正在处理一个 C# 项目。我正在尝试创建一种必须使用堆栈的方法。

该项目是关于在指定时间内移动一组飞机。每架飞机的信息都包含在一个名为 FlightPlan 的类中,其中包含:速度、初始位置 (x,y)、最终位置 (x,y)、航空公司...

我创建了这个方法:

public void Move(double time)
{
double distance = (time * this.Speed) / 60;
double hyp = Math.Sqrt( (this.Destination.GetX() - this.Actual.GetX())^2 + (this.Destination.GetY() - this.Actual.GetY())^2 );
if (hyp < distance)
{
this.Actual = this.Destination;
}
else
{
double cosine = (this.Destination.GetX() - this.Actual.GetX()) / hyp;
double sine = (this.Destination.GetY() - this.Actual.GetY()) / hyp;
this.Actual.SetX(this.Actual.GetX() + (distance * cosine));
this.Actual.SetY(this.Actual.GetY() + (distance * sine));
}
}

该方法将飞行器移动到指定时间后到达的位置。

现在,我的问题是:我必须创建一个允许我回到上一个位置的方法(即撤消 Move 方法)。为此,我必须使用堆栈。我真的不习惯使用堆栈,在考虑太多之后我不会做这个方法。

堆栈应该存储每个时间周期后飞行器移动时的所有位置,然后我必须将它们从堆栈中弹出,所以最后到达的位置将是离开堆栈的第一个位置。

你们能帮我写代码吗?尽管它并不准确,因为您不知道创建的所有变量,但我只需要一些提示来说明如何操作。

我认为它应该像这样开始(因为你现在不需要时间)public void MoveBack ()

先谢谢你。

最佳答案

我会提出以下建议。您创建方法 SetPosition,而不是 SetX 和 SetY 函数。然后该函数使用堆栈来保存更改的历史记录。像这样

void SetPosition(double x, double y)
{
positionHistoryX.Push(x);
positionHistoryY.Push(y);
X = x;
Y = y;
}

然后您可以实现一个名为 MoveToLastPosition() 的方法,该方法从堆栈中弹出 x 和 y 位置并将它们放入 X 和 Y 属性中。

编辑:根据 Zee 的评论,只是想指出最好有一个堆栈来存储有关位置的所有信息,但我没有这样做,因为我没有使用的结构。所以也许你可以做以下事情

struct LocationInfo
{
double X;
double Y;
double Time;
}

然后您可以将 Stack 类型的字段添加到您的类中,并开始在您的 Move 方法中使用它。

关于C#:使用堆栈创建方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27170679/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com