Esempio n. 1
0
        public Form1()
        {
            this.Hide();
            Form2 f2 = new Form2(this);

            f2.Owner = this;
            f2.ShowDialog();

            InitializeComponent();
            predkosc         = 5;
            label1.Text      = predkosc.ToString();
            x                = 10;
            liczbaOkienek    = 2;
            liczbaKlientow   = 0;
            okien.typOkienka = false;

            for (i = 0; i < liczbaOkienek1; ++i)
            {
                zbiorOkienek1[i]            = new Okienko();
                zbiorOkienek1[i].liczbaOsob = 0;
                zbiorOkienek1[i].polozenie  = ((60 * i) + 60 * (i + 1));
                //zbiorOkienek1[i].liczba = i;
                //kolejka[i] = 0;
            }

            for (i = 0; i < liczbaOkienek2; ++i)
            {
                zbiorOkienek2[i]            = new Okienko();
                zbiorOkienek2[i].liczbaOsob = 0;
                zbiorOkienek2[i].polozenie  = ((60 * (i + liczbaOkienek1)) + 60 * ((i + liczbaOkienek1) + 1));
                //zbiorOkienek2[i].liczba = i;
                //kolejka[i + liczbaOkienek1] = 0;
            }

            i = 5;
            //zbiorOkienek[0].typOkienka = false;
            // zbiorOkienek[1].typOkienka = false;
            //label4.Text = liczbaOkienek1.ToString();
            typOkna = false;
        }
Esempio n. 2
0
        public void Klient(int wyb)
        {
            Random  rndTyp = new Random();
            int     czas   = 200;
            int     minus  = 0;
            int     typ;
            Okienko cel = new Okienko();

            cel.liczbaOsob = 100;

            Brush Kolor;

            switch (wyb)
            {
            case 0:
                typ = rndTyp.Next(1, 4);
                break;

            case 1:
                typ = 1;
                break;

            case 2:
                typ = 2;
                break;

            default:
                typ = 3;
                break;
            }

            switch (typ)
            {
            case 1:     //Przesyłka Listowa
                Kolor = Brushes.Yellow;
                for (i = 0; i < liczbaOkienek1; ++i)
                {
                    if (zbiorOkienek1[i].liczbaOsob <= cel.liczbaOsob)
                    {
                        cel = zbiorOkienek1[i];
                    }
                }
                for (i = 0; i < liczbaOkienek2; ++i)
                {
                    if (zbiorOkienek2[i].liczbaOsob <= cel.liczbaOsob)
                    {
                        cel = zbiorOkienek2[i];
                    }
                }
                break;

            case 2:     //Paczka
                Kolor = Brushes.Green;
                for (i = 0; i < liczbaOkienek1; ++i)
                {
                    if (zbiorOkienek1[i].liczbaOsob <= cel.liczbaOsob)
                    {
                        cel = zbiorOkienek1[i];
                    }
                }
                break;

            default:     //Pieniądze
                Kolor = Brushes.Blue;
                for (i = 0; i < liczbaOkienek2; ++i)
                {
                    if (zbiorOkienek2[i].liczbaOsob <= cel.liczbaOsob)
                    {
                        cel = zbiorOkienek2[i];
                    }
                }
                break;
            }


            ++cel.liczbaOsob;
            //MessageBox.Show(cel.liczbaOsob.ToString());
            switch (typ)
            {
            case 1:
                bool sprawdz  = false;
                bool sprawdzZ = false;
                bool sprawdzN = false;
                zolci.WaitOne();
                //niebiescy.WaitOne();
                //zieloni.WaitOne();
                for (i = 0; i < liczbaOkienek1; ++i)
                {
                    if (zbiorOkienek1[i].liczbaOsob < 8)
                    {
                        sprawdzZ = true;
                    }
                }
                if (sprawdzZ == false)
                {
                    zieloni.WaitOne();
                }
                for (i = 0; i < liczbaOkienek2; ++i)
                {
                    if (zbiorOkienek2[i].liczbaOsob < 8)
                    {
                        sprawdzN = true;
                    }
                }
                if (sprawdzN == false)
                {
                    niebiescy.WaitOne();
                }

                for (i = 0; i < liczbaOkienek1; ++i)
                {
                    if (zbiorOkienek1[i].liczbaOsob < 8)
                    {
                        sprawdz = true;
                        //sprawdzZ = true;
                    }
                }
                for (i = 0; i < liczbaOkienek2; ++i)
                {
                    if (zbiorOkienek2[i].liczbaOsob < 8)
                    {
                        sprawdz = true;
                        //sprawdzN = true;
                    }
                }
                if (sprawdz == true)
                {
                    zolci.Release();
                }
                break;

            case 2:
                bool sprawdzZiel = false;
                zieloni.WaitOne();
                for (i = 0; i < liczbaOkienek1; ++i)
                {
                    if (zbiorOkienek1[i].liczbaOsob < 8)
                    {
                        sprawdzZiel = true;
                    }
                }
                if (sprawdzZiel == true)
                {
                    zieloni.Release();
                }

                break;

            case 3:
                bool sprawdzNieb = false;
                niebiescy.WaitOne();
                for (i = 0; i < liczbaOkienek2; ++i)
                {
                    if (zbiorOkienek2[i].liczbaOsob < 8)
                    {
                        sprawdzNieb = true;
                    }
                }
                if (sprawdzNieb == true)
                {
                    niebiescy.Release();
                }
                break;
            }

            minus = x;
            while ((x - minus) < 40)
            {
                this.CreateGraphics().FillEllipse(Kolor, wejsciex, (270 - (x - minus)), 20, 20);
            }

            minus = x;
            if (cel.polozenie < wejsciex)
            {
                while ((wejsciex - (x - minus)) > cel.polozenie)
                {
                    this.CreateGraphics().FillEllipse(Kolor, wejsciex - (x - minus), wejsciey, 20, 20);
                }
            }
            else
            {
                while ((wejsciex + (x - minus)) < cel.polozenie)
                {
                    this.CreateGraphics().FillEllipse(Kolor, wejsciex + (x - minus), wejsciey, 20, 20);
                }
            }
            //////////////////////////////////////////////////////////////////////////////////

            minus = x;
            while ((wejsciey - (x - minus)) > 180)
            {
                this.CreateGraphics().FillEllipse(Kolor, cel.polozenie, (wejsciey - (x - minus)), 20, 20);
            }
            cel.pierwszySem.WaitOne();
            cel.flaga1 = 0;

            while ((wejsciey - (x - minus)) > 160)
            {
                this.CreateGraphics().FillEllipse(Kolor, cel.polozenie, (wejsciey - (x - minus)), 20, 20);
            }
            while (cel.flaga2 == 0)
            {
                this.CreateGraphics().FillEllipse(Kolor, cel.polozenie, 160, 20, 20);
            }
            cel.drugiSem.WaitOne();
            cel.flaga2 = 0;
            cel.pierwszySem.Release();
            cel.flaga1 = 1;

            while ((wejsciey - (x - minus)) > 140)
            {
                this.CreateGraphics().FillEllipse(Kolor, cel.polozenie, (wejsciey - (x - minus)), 20, 20);
            }
            while (cel.flaga3 == 0)
            {
                this.CreateGraphics().FillEllipse(Kolor, cel.polozenie, 140, 20, 20);
            }
            cel.trzeciSem.WaitOne();
            cel.flaga3 = 0;
            cel.drugiSem.Release();
            cel.flaga2 = 1;

            while ((wejsciey - (x - minus)) > 120)
            {
                this.CreateGraphics().FillEllipse(Kolor, cel.polozenie, (wejsciey - (x - minus)), 20, 20);
            }
            while (cel.flaga4 == 0)
            {
                this.CreateGraphics().FillEllipse(Kolor, cel.polozenie, 120, 20, 20);
            }
            cel.czwartySem.WaitOne();
            cel.flaga4 = 0;
            cel.trzeciSem.Release();
            cel.flaga3 = 1;

            while ((wejsciey - (x - minus)) > 100)
            {
                this.CreateGraphics().FillEllipse(Kolor, cel.polozenie, (wejsciey - (x - minus)), 20, 20);
            }
            while (cel.flaga5 == 0)
            {
                this.CreateGraphics().FillEllipse(Kolor, cel.polozenie, 100, 20, 20);
            }
            cel.piatySem.WaitOne();
            cel.flaga5 = 0;
            cel.czwartySem.Release();
            cel.flaga4 = 1;

            while ((wejsciey - (x - minus)) > 80)
            {
                this.CreateGraphics().FillEllipse(Kolor, cel.polozenie, (wejsciey - (x - minus)), 20, 20);
            }
            while (cel.flaga6 == 0)
            {
                this.CreateGraphics().FillEllipse(Kolor, cel.polozenie, 80, 20, 20);
            }
            cel.szostySem.WaitOne();
            cel.flaga6 = 0;
            cel.piatySem.Release();
            cel.flaga5 = 1;

            while ((wejsciey - (x - minus)) > 60)
            {
                this.CreateGraphics().FillEllipse(Kolor, cel.polozenie, (wejsciey - (x - minus)), 20, 20);
            }
            while (cel.flaga7 == 0)
            {
                this.CreateGraphics().FillEllipse(Kolor, cel.polozenie, 60, 20, 20);
            }
            cel.siodmySem.WaitOne();
            cel.flaga7 = 0;
            cel.szostySem.Release();
            cel.flaga6 = 1;

            while ((wejsciey - (x - minus)) > 40)
            {
                this.CreateGraphics().FillEllipse(Kolor, cel.polozenie, (wejsciey - (x - minus)), 20, 20);
            }

            while (cel.flaga8 == 0)
            {
                this.CreateGraphics().FillEllipse(Kolor, cel.polozenie, 40, 20, 20);
            }
            cel.osmySem.WaitOne();
            cel.flaga8 = 0;
            cel.siodmySem.Release();
            cel.flaga7 = 1;

            while ((wejsciey - (x - minus)) > 20)
            {
                this.CreateGraphics().FillEllipse(Kolor, cel.polozenie, (wejsciey - (x - minus)), 20, 20);
            }

            minus = x;
            czas  = rndTyp.Next(50, 1000);
            while ((x - minus) < czas)
            {
                this.CreateGraphics().FillEllipse(Kolor, cel.polozenie, 20, 20, 20);
            }

            cel.osmySem.Release();
            cel.flaga8 = 1;

            ////////////////////////////////////////////////////////////////////////////////////
            minus = x;
            while ((x - minus) < 20)
            {
                this.CreateGraphics().FillEllipse(Kolor, cel.polozenie + (x - minus), 20, 20, 20);
            }

            switch (typ)
            {
            case 1:
            {
                {
                    bool sprawdz  = false;
                    bool sprawdzZ = false;
                    bool sprawdzN = false;
                    for (i = 0; i < liczbaOkienek1; ++i)
                    {
                        if (zbiorOkienek1[i].liczbaOsob < 8)
                        {
                            sprawdz  = true;
                            sprawdzZ = true;
                        }
                    }
                    if (sprawdzZ == false)
                    {
                        zieloni.Release();
                    }
                    for (i = 0; i < liczbaOkienek2; ++i)
                    {
                        if (zbiorOkienek2[i].liczbaOsob < 8)
                        {
                            sprawdz  = true;
                            sprawdzN = true;
                        }
                    }
                    if (sprawdzN == false)
                    {
                        niebiescy.Release();
                    }
                    if (sprawdz == false)
                    {
                        zolci.Release();
                    }
                }
            }
            break;

            case 2:
                bool sprawdzZiel = false;
                for (i = 0; i < liczbaOkienek1; ++i)
                {
                    if (zbiorOkienek1[i].liczbaOsob < 8)
                    {
                        sprawdzZiel = true;
                    }

                    if (sprawdzZiel == false)
                    {
                        zieloni.Release();
                    }
                }
                break;

            case 3:
                bool sprawdzNieb = false;
                for (i = 0; i < liczbaOkienek1; ++i)
                {
                    if (zbiorOkienek2[i].liczbaOsob < 8)
                    {
                        sprawdzNieb = true;
                    }

                    if (sprawdzNieb == false)
                    {
                        niebiescy.Release();
                    }
                }
                break;
            }
            --cel.liczbaOsob;

            minus = x;
            while ((20 + (x - minus)) < (wejsciey - 20))
            {
                this.CreateGraphics().FillEllipse(Kolor, cel.polozenie + 20, (20 + (x - minus)), 20, 20);
            }

            minus = x;
            if (cel.polozenie < wejsciex)
            {
                while ((cel.polozenie + 20 + (x - minus)) < wejsciex)
                {
                    this.CreateGraphics().FillEllipse(Kolor, cel.polozenie + 20 + (x - minus), (wejsciey - 20), 20, 20);
                }
            }
            else
            {
                while ((cel.polozenie + 20 - (x - minus)) > wejsciex)
                {
                    this.CreateGraphics().FillEllipse(Kolor, cel.polozenie + 20 - (x - minus), (wejsciey - 20), 20, 20);
                }
            }

            minus = x;
            while ((x - minus) < 60)
            {
                this.CreateGraphics().FillEllipse(Kolor, wejsciex, (wejsciey - 20) + (x - minus), 20, 20);
            }
        }