我应该在这个C#程序中有2个列表,还是只有1个?

时间:2017-09-04 14:12:19

标签: c# .net delegates

我有这个代码并且关于过山车,该游戏可容纳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开始骑行

0 个答案:

没有答案