コード例 #1
0
        public void MusteriCikart()
        {
            while (true)
            {
                int katSayisi = 1 + random.Next(4);

                if (katlar[katSayisi].gelenKisiler.Count != 0)
                {
                    int kisiSayisi = 1 + random.Next(5);

                    while (true)
                    {
                        if (kisiSayisi == 0 || katlar[katSayisi].gelenKisiler.Count == 0)
                        {
                            break;
                        }
                        else
                        {
                            if (katlar[katSayisi].gelenKisiler.Peek().kisiSayisi - kisiSayisi <= 0)
                            {
                                // kat tablo kontrolü
                                katlar[katSayisi].kisiSayisi -= katlar[katSayisi].gelenKisiler.Peek().kisiSayisi;
                                katlar[katSayisi].kuyrukSayisi++;

                                kisiSayisi -= katlar[katSayisi].gelenKisiler.Peek().kisiSayisi;
                                katlar[katSayisi].gelenKisiler.Peek().katSayisi = 0;
                                katlar[katSayisi].cikanKisiler.Enqueue(katlar[katSayisi].gelenKisiler.Dequeue());

                                // kat tablo kontrolü
                                katlar[katSayisi].KuyrukSayisiYazdır();
                                katlar[katSayisi].KuyrukYazdir(katSayisi);
                            }

                            else if (katlar[katSayisi].gelenKisiler.Peek().kisiSayisi - kisiSayisi > 0)
                            {
                                Grup grup = new Grup()
                                {
                                    katSayisi  = 0,
                                    kisiSayisi = kisiSayisi,
                                };

                                katlar[katSayisi].gelenKisiler.Peek().kisiSayisi -= kisiSayisi;
                                katlar[katSayisi].cikanKisiler.Enqueue(grup);

                                // kat tablo kontrolü
                                katlar[katSayisi].kisiSayisi -= kisiSayisi;
                                katlar[katSayisi].kuyrukSayisi++;
                                katlar[katSayisi].KuyrukSayisiYazdır();
                                katlar[katSayisi].KuyrukYazdir(katSayisi);

                                kisiSayisi = 0;
                            }
                        }
                    }
                }

                Thread.Sleep(Utilites.cikisThreadCalismaSuresi);
            }
        }
コード例 #2
0
        private void MusteriEkle()
        {
            while (true)
            {
                int kisiSayisi = 1 + random.Next(10);
                int katSayisi  = 1 + random.Next(4);

                Grup grup = new Grup()
                {
                    kisiSayisi = kisiSayisi,
                    katSayisi  = katSayisi,
                };

                katlar[0].kuyrukSayisi++;
                katlar[0].gelenKisiler.Enqueue(grup);

                // kat tablo kontrolü
                katlar[0].KuyrukSayisiYazdır();
                katlar[0].KuyrukYazdir(0);

                Thread.Sleep(Utilites.girisThreadCalismaSuresi);
            }
        }
コード例 #3
0
        public void MusteriAl()
        {
            if (musteriKomutları == AsansorMusteriKomutları.YolcuGotur)
            {
                while (true)
                {
                    if (kisiSayisi < Utilites.asansorKapasite && kisiSayisi >= 0)
                    {
                        if (kat == 0 && katlar[kat].gelenKisiler.Count > 0)
                        {
                            if (kisiSayisi + katlar[kat].gelenKisiler.Peek().kisiSayisi <= Utilites.asansorKapasite)
                            {
                                kisiSayisi += katlar[kat].gelenKisiler.Peek().kisiSayisi;
                                asansordekiKisiler.Add(katlar[kat].gelenKisiler.Dequeue());

                                // kat tablo kontrolü
                                katlar[kat].kuyrukSayisi--;
                            }
                            else if (kisiSayisi + katlar[kat].gelenKisiler.Peek().kisiSayisi > Utilites.asansorKapasite)
                            {
                                int asansorDolumFark = Utilites.asansorKapasite - kisiSayisi;

                                Grup grup = new Grup()
                                {
                                    katSayisi  = katlar[kat].gelenKisiler.Peek().katSayisi,
                                    kisiSayisi = asansorDolumFark,
                                };

                                kisiSayisi += asansorDolumFark;
                                katlar[kat].gelenKisiler.Peek().kisiSayisi -= asansorDolumFark;
                                asansordekiKisiler.Add(grup);
                            }
                        }
                        else if (kat == 0 && katlar[kat].gelenKisiler.Count == 0)
                        {
                            break;
                        }
                    }
                    else
                    {
                        break;
                    }
                }
            }
            else if (musteriKomutları == AsansorMusteriKomutları.YolcuTopla)
            {
                while (true)
                {
                    if (kisiSayisi < Utilites.asansorKapasite && kisiSayisi >= 0)
                    {
                        if (kat != 0 && katlar[kat].cikanKisiler.Count > 0)
                        {
                            if (kisiSayisi + katlar[kat].cikanKisiler.Peek().kisiSayisi <= Utilites.asansorKapasite)
                            {
                                // kat tablo kontrolü
                                katlar[kat].kuyrukSayisi--;
                                katlar[kat].KuyrukYazdir(kat);
                                katlar[kat].KisiSayisiYazdır(kat);
                                katlar[kat].KuyrukSayisiYazdır();

                                kisiSayisi += katlar[kat].cikanKisiler.Peek().kisiSayisi;
                                asansordekiKisiler.Add(katlar[kat].cikanKisiler.Dequeue());
                            }
                            else if (kisiSayisi + katlar[kat].cikanKisiler.Peek().kisiSayisi > Utilites.asansorKapasite)
                            {
                                int asansorDolumFark = Utilites.asansorKapasite - kisiSayisi;

                                Grup grup = new Grup()
                                {
                                    katSayisi  = katlar[kat].cikanKisiler.Peek().katSayisi,
                                    kisiSayisi = asansorDolumFark,
                                };

                                // kat tablo kontrolü
                                katlar[kat].KuyrukYazdir(kat);
                                katlar[kat].KuyrukSayisiYazdır();
                                katlar[kat].KisiSayisiYazdır(kat);

                                kisiSayisi += asansorDolumFark;
                                katlar[kat].cikanKisiler.Peek().kisiSayisi -= asansorDolumFark;
                                asansordekiKisiler.Add(grup);
                            }
                        }
                        else if (kat != 0 && katlar[kat].cikanKisiler.Count == 0)
                        {
                            break;
                        }
                    }
                    else
                    {
                        break;
                    }
                }
            }
        }