Ejemplo n.º 1
0
        public void SpawningTrain()
        {
            //Spawnowanie pociągu

            if (IsTrainIs == false) //jeżeli nie istnieje żaden pociąg
            {
                IsTrainIs = true;   //zmieniamy że istnieje
                //Thread.Sleep(1);

                lock (Ekran) // blokada mapy sceny i wypełnienie trasy pociągu '2'
                {
                    for (int i = 0; i < 1932; i++)
                    {
                        for (int j = 250; j < 340; j++)
                        {
                            if (Ekran[i, j] != 1) //pomijamy miejsca gdzie na torach jest auto, aby zdążyło zjechać
                            {
                                Ekran[i, j] = 2;
                            }
                        }
                    }
                }

                bool TrainFlag = false;    //Flaga ruszenia pociągu

                while (TrainFlag == false) //Czekamy aż tory będą puste
                {
                    TrainFlag = true;      //ustawiamy tory na wolne
                    for (int i = 0; i < 1932; i++)
                    {
                        for (int j = 250; j < 340; j++)
                        {
                            if (Ekran[i, j] != 1) //sprawdzamy czy jest auto na torach
                            {
                                lock (Ekran)
                                { Ekran[i, j] = 2; } //miejsca gdzie już nie ma samochodów wypełniamy '2'
                            }
                            else
                            {
                                TrainFlag = false; //gdy znajdzie się chociaż jeden piksel gdzie jeszcze jest auto na torach ustawiamy tory na zajęte
                            }
                        }
                    }
                }
                //Po wyjściu z pętli tory na pewno są puste

                int Losowanie;
                Losowanie = rnd.Next(1, 5000) % 2;    //losujemy strone z której pojedzie pociąg
                Action action;
                Train  Train1 = new Train(Losowanie); //tworzymy pociąg
                Point  Punkt  = new Point();          //oraz punkt w którym zostanie umieszczony
                if (Losowanie == 1)
                {
                    Punkt.X = -100;
                }                   //pociąg jedzie z lewej współrzędna X
                else
                {
                    Punkt.X = 1900;
                }                                                        //pociąg jedzie z prawej
                Punkt.Y = 258;                                           //współrzędna Y

                Train1.Location  = Punkt;                                //ustawiamy pociąg w odpowiedniej lokalizacji
                Train1.Height    = 70;                                   //nadajemy mu wysokośc
                Train1.Width     = 400;                                  //i szerokość
                Train1.BackColor = Color.Yellow;                         //oraz kolor
                action           = () => { this.Controls.Add(Train1); }; //dodajemy go do formatki za pomocą delegata
                this.Invoke(action);

                IsTrainIs = true;

                if (Losowanie == 1)                                                     //jeżeli pociąg jedzie z lewej - przesuwamy go w prawo
                {
                    Point  Punkt1 = Train1.Location;                                    //tworzymy nowy punkt
                    Action action1;                                                     //i delegata
                    while (Punkt1.X < 1900)                                             // dopóki pociąg nie wyjedzie za mapę
                    {
                        Punkt1.X += 8;                                                  //przesuwamy go w każdym kroku o 8px w prawo

                        action1 = () => { Train1.Location = Punkt1; Train1.Update(); }; //i updatujemy jego położenie na formatce
                        this.Invoke(action1);

                        Thread.Sleep(80);                                                 //usypiamy wątek by dać szanse innym na dostęp do procesora
                    }
                    IsTrainIs = false;                                                    // jeżeli dojechał do końca mapy ustawiamy flage na brak pociągu
                }
                else if (Losowanie == 0)                                                  //jeżeli z prawej - w lewo
                {
                    Point  Punkt1 = Train1.Location;                                      //tworzymy nowy punkt
                    Action action1;                                                       //i delegata
                    while (Punkt1.X > -200)                                               // dopóki pociąg nie wyjedzie za mapę
                    {
                        Punkt1.X -= 8;                                                    //przesuwamy go w każdym kroku o 8px w lewo
                        action1   = () => { Train1.Location = Punkt1; Train1.Update(); }; //i updatujemy jego położenie na formatce
                        this.Invoke(action1);
                        this.Invoke(action1);

                        Thread.Sleep(80); //usypiamy wątek by dać szanse innym na dostęp do procesora
                    }
                    IsTrainIs = false;    // jeżeli dojechał do końca mapy ustawiamy flage na brak pociągu
                }

                for (int i = 0; i < 1932; i++) //mapę sceny w miejscu gdzie przebiegała trasa pociągu wypełniamy zerami
                {
                    for (int j = 250; j < 340; j++)
                    {
                        lock (Ekran)
                        { Ekran[i, j] = 0; }
                    }
                }

                if (IsTrainIs == false) // jeżeli pociąg dojechał do końca mapy - usuwamy go z formatki
                {
                    action = () => { this.Controls.Remove(Train1); };
                    this.Invoke(action);
                }
            }
        }
Ejemplo n.º 2
0
        private void SpawningPeople()
        {
            //Spawnowanie ludzia

            if (IsPeopleIs == false) //jeżeli nie istnieje żaden ludź
            {
                IsPeopleIs = true;   //zmieniamy że istnieje
                //Thread.Sleep(1);

                lock (Ekran) // blokada mapy sceny i wypełnienie trasy ludzia '2'
                {
                    for (int i = 600; i < 1200; i++)
                    {
                        for (int j = 670; j < 800; j++)
                        {
                            if (Ekran[i, j] != 1) //pomijamy miejsca gdzie na pasach jest auto, aby zdążyło zjechać
                            {
                                Ekran[i, j] = 2;
                            }
                        }
                    }
                }

                bool PeopleFlag = false;    //Flaga ruszenia ludzia

                while (PeopleFlag == false) //Czekamy aż pasy będą puste
                {
                    PeopleFlag = true;      //ustawiamy pasy na wolne
                    for (int i = 600; i < 1200; i++)
                    {
                        for (int j = 670; j < 800; j++)
                        {
                            if (Ekran[i, j] != 1) //sprawdzamy czy jest auto na pasach
                            {
                                lock (Ekran)
                                { Ekran[i, j] = 2; } //miejsca gdzie już nie ma samochodów wypełniamy '2'
                            }
                            else
                            {
                                PeopleFlag = false; //gdy znajdzie się chociaż jeden piksel gdzie jeszcze jest auto na pasach ustawiamy pasy na zajęte
                            }
                        }
                    }
                }
                //Po wyjściu z pętli pasy na pewno są puste

                int Losowanie;
                Losowanie = rnd.Next(1, 5000) % 2;     //losujemy strone z której pojdzie ludź
                Action action;
                Train  People1 = new Train(Losowanie); //tworzymy ludzia
                Point  Punkt   = new Point();          //oraz punkt w którym zostanie umieszczony
                if (Losowanie == 1)
                {
                    Punkt.X = 600;
                }                  //ludź idzie z lewej współrzędna X
                else
                {
                    Punkt.X = 1200;
                }                                                          //ludź idzie z prawej
                Punkt.Y = 715;                                             //wspóżędna Y

                People1.Location  = Punkt;                                 //ustawiamy ludzia w odpowiedniej lokalizacji
                People1.Height    = 30;                                    //nadajemy mu wysokośc
                People1.Width     = 30;                                    //i szerokość
                People1.BackColor = Color.Green;                           //oraz kolor
                action            = () => { this.Controls.Add(People1); }; //dodajemy go do formatki za pomocą delegata
                this.Invoke(action);

                IsPeopleIs = true;

                if (Losowanie == 1)                                                       //jeżeli ludź idzie z lewej - przesuwamy go w prawo
                {
                    Point  Punkt1 = People1.Location;                                     //tworzymy nowy punkt
                    Action action1;                                                       //i delegata
                    while (Punkt1.X < 1200)                                               // dopóki ludź nie zejdzie z pasów, żeby go przypadkiem coś nie rozjechało na miazgę
                    {
                        Punkt1.X += 3;                                                    //przesuwamy go w każdym kroku o 3pks w prawo

                        action1 = () => { People1.Location = Punkt1; People1.Update(); }; //i updatujemy jego położenie na formatce
                        this.Invoke(action1);

                        Thread.Sleep(80);                                                   //usypiamy wątek by dać szanse innym na dostęp do procesora
                    }
                    IsPeopleIs = false;                                                     // jeżeli doszedł do końca pasów - ustawiamy flagę na brak ludzia (heheszki)
                }
                else if (Losowanie == 0)                                                    //jeżeli z prawej - w lewo
                {
                    Point  Punkt1 = People1.Location;                                       //tworzymy nowy punkt
                    Action action1;                                                         //i delegata
                    while (Punkt1.X > 600)                                                  // dopóki ludź nie zejdzie z pasów
                    {
                        Punkt1.X -= 3;                                                      //przesuwamy go w każdym kroku o 3pks w lewo
                        action1   = () => { People1.Location = Punkt1; People1.Update(); }; //i updatujemy jego położenie na formatce
                        this.Invoke(action1);
                        this.Invoke(action1);

                        Thread.Sleep(80); //usypiamy wątek by dać szanse innym na dostęp do procesora
                    }
                    IsPeopleIs = false;   // jeżeli doszedł do końca pasów ustawiamy flagę na brak ludzia
                }

                for (int i = 600; i < 1200; i++) //mapę sceny w miejscu gdzie przebiegała trasa ludzia wypełniamy zerami
                {
                    for (int j = 670; j < 800; j++)
                    {
                        lock (Ekran)
                        { Ekran[i, j] = 0; }
                    }
                }

                if (IsPeopleIs == false)                               // jeżeli pociąg dojechał do końca mapy - usuwamy go z formatki
                {
                    action = () => { this.Controls.Remove(People1); }; //naprawic
                    this.Invoke(action);
                }
            }
        }