/// <summary> /// Voorbeeldfunctie waarmee aan het Liftsysteem kenbaar wordt gemaakt dat er een /// nieuw doel moet toegevoegd worden aan de wachtrij. Wordt aangeroepen door de binnenbediening. /// </summary> /// <param name="doelVerdieping"></param> public void VerdiepingAanvragen(int doelverdieping) { Beweging b = new Beweging(); b.Verdiep = doelverdieping; q.Enqueue(b); }
/// <summary> /// Voorbeeldfunctie waarmee aan het Liftsysteem kenbaar wordt gemaakt dat er bepaalde richting /// wordt aangevraagd op een verdieping. Wordt aangeroepen door de buitenbediening. /// </summary> /// </summary> /// <param name="aanvragendeVerdieping"></param> /// <param name="richting"></param> public void RichtingAanvragen(int aanvragendeVerdieping, LiftDirection richting) { Beweging b = new Beweging(); b.Verdiep = aanvragendeVerdieping; b.Richting = (int)richting; q.Enqueue(b); }
int DoelverdiepHerzoeken(int doelverdiep, Queue <object> q) { Beweging b = new Beweging(); b = (Beweging)q.Peek(); doelverdiep = b.Verdiep; return(doelverdiep); }
public Queue <object> Prio1(Queue <object> q, string huidigeRichting, int positieLift) { Queue <object> que = new Queue <object>(); if (q.Count != 0) { Beweging b = (Beweging)q.Dequeue(); que.Enqueue(b); if (q.Count != 0) { for (int i = 0; i < q.Count; i++) { b = ((Beweging)q.ElementAt(i)); int controle = 0; if (que.Count != 0) { for (int n = 0; n < que.Count; n++) { Beweging be = new Beweging(); be = (Beweging)que.ElementAt(n); if (be.Verdiep == b.Verdiep) { controle++; } } if (controle == 0) { que.Enqueue(b); } } } } } que = Prio2(que, huidigeRichting, positieLift); return(que); }
public void PositieBepalen() { var arg = new PositieLiftEventArgs(); int positie = 1; DoelVerdieping = 1; Beweging b = new Beweging(); b.Verdiep = 1; q.Enqueue(b); while (true) { if (q.Count != 0) { Beweging v = (Beweging)q.Peek(); this.DoelVerdieping = v.Verdiep; { while (DoelVerdieping != positie) { Positie(this, arg); if (DoelVerdieping > positie) { arg.Deuren = " De deuren sluiten"; arg.Positie = positie; Positie(this, arg); Thread.Sleep(4000); arg.Richting = "\u23F6"; Positie(this, arg); while (DoelVerdieping > positie) { q = prioriteit.Prio1(q, arg.Richting, arg.Positie); DoelVerdieping = DoelverdiepHerzoeken(DoelVerdieping, q); arg.Deuren = ""; Positie(this, arg); Thread.Sleep(4000); positie += 1; arg.Positie = positie; Positie(this, arg); } } else if (DoelVerdieping < positie) { arg.Deuren = " De deuren sluiten"; arg.Positie = positie; Positie(this, arg); Thread.Sleep(4000); arg.Richting = "\u23F7"; Positie(this, arg); while (DoelVerdieping < positie) { q = prioriteit.Prio1(q, arg.Richting, arg.Positie); DoelVerdieping = DoelverdiepHerzoeken(DoelVerdieping, q); arg.Deuren = ""; Positie(this, arg); Thread.Sleep(4000); positie -= 1; arg.Positie = positie; Positie(this, arg); } } } if (DoelVerdieping == positie) { arg.Positie = positie; arg.Richting = ""; Positie(this, arg); } } } if (q.Count != 0) { Beweging v = (Beweging)q.Dequeue(); this.DoelVerdieping = v.Verdiep; } arg.Deuren = "Stop"; Positie(this, arg); Thread.Sleep(1000); } }
public Queue <object> Prio2(Queue <object> q, string huidigeRichting, int positieLift) { Queue <object> que = new Queue <object>(); Beweging b = new Beweging(); if (huidigeRichting != null) { if (q.Count > 1) { if (huidigeRichting == "\u23F6") { for (int i = positieLift + 1; i <= 2; i++) { foreach (Beweging be in q) { if (be.Verdiep == i && (be.Richting == 1 || be.Richting == 0)) { que.Enqueue(be); } } } for (int i = positieLift; i <= 2; i++) { foreach (Beweging be in q) { if (be.Verdiep == i && be.Richting == 2) { que.Enqueue(be); } } } for (int i = positieLift - 1; i >= -1; i--) { foreach (Beweging be in q) { if (be.Verdiep == i && (be.Richting == 2 || be.Richting == 0)) { que.Enqueue(be); } } } } if (huidigeRichting == "\u23F7") { for (int i = positieLift - 1; i >= -1; i--) { foreach (Beweging be in q) { if (be.Verdiep == i && (be.Richting == 2 || be.Richting == 0)) { que.Enqueue(be); } } } for (int i = positieLift; i >= -1; i--) { foreach (Beweging be in q) { if (be.Verdiep == i && be.Richting == 1) { que.Enqueue(be); } } } for (int i = positieLift + 1; i <= 2; i++) { foreach (Beweging be in q) { if (be.Verdiep == i && (be.Richting == 1 || be.Richting == 0)) { que.Enqueue(be); } } } } } else { que.Enqueue((Beweging)q.Dequeue()); } } return(que); }