我有这个代码并且关于过山车,该游戏可容纳5人,持续时间约为10秒......每3秒钟,Park类会创建人并将其添加到列表中这就像是游戏的队列,但我需要它做的是让人们在游戏中有一个地方进入游戏。游戏开始时它已满,所以前5个人应该直接进入游戏并且不加入队列。那么我应该有一个队列列表和另一个游戏列表吗?我可以在这里修改什么来告诉用户哪个人进入游戏?
class RollerCoaster
{
private Chronometer crono;
private List<Person> Queue; //Queue
private int nMax;
private Output output;
private int duration; //Game duration
private UI ui;
public RollerCoaster(int n)
{
ui = new UI();
crono = new Chronometer();
Queue = new List<Person>();
this.nMax = n;
duration = 10;
output = ui.output;
crono.Start(1000);
crono.AddAction(Verify);
}
public void AddPerson(Person p)
{
string date = DateTime.Now.ToString();
Queue.Add(p);
output("Person " + p.id + " joined the queue at " + date);
}
public void RemovePersons()
{
crono.RemoveAction(DecreaseTime);
duration = 10;
output("The ride just ended!");
output("People got down at " + DateTime.Now.ToString());
}
public void Verify()
{
if (Queue.Count == this.nMax)
{
output("Roller Coaster is finally full!. Starting ride at " + DateTime.Now.ToString());
Queue = new List<Person>();
crono.AddAction(DecreaseTime);
}
}
public void DecreaseTime()
{
duration--;
if (duration == 0)
{
RemovePersons();
}
}
}
此代码的当前输出为:
人员1于9/4/2017 8:58:21 AM加入队列
Person 2于9/4/2017 8:58:24 AM加入队列
人3在9/4/2017 8:58:27 AM加入队列
第4个人在9/4/2017 8:58:30 AM加入队列
人5在9/4/2017 8:58:33 AM加入队列
过山车终于满了!从9/4/2017 8:58:34 AM开始骑行人6在9/4/2017 8:58:36 AM加入队列
Person 7于9/4/2017 8:58:39 AM加入队列
Person 8于9/4/2017 8:58:42 AM加入队列
骑行刚刚结束!人们在9/4/2017 8:58:44 AM沮丧
9号人员于9月4日上午8:58:45加入队列
人10在9/4/2017 8:58:48 AM加入队列
过山车终于满了!从9/4/2017 8:58:49 AM开始骑行