Exemple #1
0
        private void Timer_Tick(object sender, EventArgs e) //vsetko co sa udeje pocas jedneho ticku timeru
        {
            int pacManX, pacManY;                           //premenne ktore hovoria na ktorom indexe na mape map pacman stoji

            pacManX = pacman.PM_X / 40;                     //preratavanie suradnice X
            pacManY = pacman.PM_Y / 40;                     //preratavanie suradnice Y

            if (TestCollision() == true)
            {
                goToMenu(); //ak nastala kolizia ukonci hru
                return;
            }

            //skontroluj ci nezjedol mincu a vymaz ju
            if (map[pacManX, pacManY] == 2)
            {
                map[pacManX, pacManY] = 0;
                zostavajuciPocetPenazi--;
                userScore++;
            }

            //posun pacmana
            if ((pacman.PM_direction == 0) && (map[pacManX, pacManY - 1] != 1))
            {
                pacman.PM_Y = pacman.PM_Y - 40;
            }
            if ((pacman.PM_direction == 1) && (map[pacManX - 1, pacManY] != 1))
            {
                pacman.PM_X = pacman.PM_X - 40;
            }
            if ((pacman.PM_direction == 2) && (map[pacManX, pacManY + 1] != 1))
            {
                pacman.PM_Y = pacman.PM_Y + 40;
            }
            if ((pacman.PM_direction == 3) && (map[pacManX + 1, pacManY] != 1))
            {
                pacman.PM_X = pacman.PM_X + 40;
            }

            //skontroluj koliziu ducha a pacmana
            if (TestCollision() == true)
            {
                goToMenu(); //ak nastala kolizia ukonci hru
                return;
            }

            //pohyb duchov, cerveny duch chodi dokola po krajoch, zlty a ruzovy sa pohybuju nahodne
            //funkcia OneStep() vrati true ak sa pohli
            Random rnd = new Random(); //pre zlteho a ruzoveho ducha

            //cerveny duch
            if (Red.OneStep() == false) //ak sa cerveny neposunul, otoci sa dolava a posunie sa
            {
                if (Red.direction == 0)
                {
                    Red.direction = 1;
                }
                else if (Red.direction == 1)
                {
                    Red.direction = 2;
                }
                else if (Red.direction == 2)
                {
                    Red.direction = 3;
                }
                else if (Red.direction == 3)
                {
                    Red.direction = 0;
                }
                Red.OneStep();
            }

            //zlty duch
            if (Yellow.OneStep() == false)        //ak sa zlty neposunul, otoci sa nahodne a pokracuje
            {
                while (Yellow.OneStep() == false) //kym sa nemoze posunut, toci sa
                {
                    Yellow.direction = rnd.Next(0, 4);
                }
            }
            else //nahodne sa moze otocit aj ked nenarazi na stenu, je tu 30 percentna sanca, inak by sa po case jeho trasa zmenila na trasu cerveneho
            {
                int zmena = rnd.Next(0, 10);
                if (zmena < 3)
                {
                    Yellow.direction = rnd.Next(0, 4);
                }
            }

            //ruzovy duch, robi to iste co zlty
            if (Pink.OneStep() == false)        //ak sa ruzovy neposunul, otoci sa nahodne a pokracuje
            {
                while (Pink.OneStep() == false) //kym sa nemoze posunut, toci sa
                {
                    Pink.direction = rnd.Next(0, 4);
                }
            }
            else //nahodne sa moze otocit aj ked nenarazi na stenu, je tu 30 percentna sanca, inak by sa po case jeho trasa zmenila na trasu cerveneho
            {
                int zmena = rnd.Next(0, 10);
                if (zmena < 3)
                {
                    Pink.direction = rnd.Next(0, 4);
                }
            }

            //skontroluj ci hrac nepresiel level
            if (zostavajuciPocetPenazi == 0)
            {
                if (momentalnyLevel == 3) //vyhral hru
                {
                    //vypyta si username a ulozi ho do tabulky (cize do textfile Score.txt v priecinku Debug) na prve miesto
                    timer.Stop();
                    string username = Microsoft.VisualBasic.Interaction.InputBox("Zadaj svoje meno:", "Gratulujem! Vyhral si hru so skore 300!", "unknown", -1, -1);
                    UpdateScore(300, username); //300 je high score (maximalne 50+100+150 penazi moze pozbierat)
                    goToMenu();                 //vrati sa do menu
                }
                else //nastavi ho o level vyssie
                {
                    timer.Stop();
                    MessageBox.Show("Gratulujem! Postupujes do dalsieho levelu!");
                    timer.Start();
                    momentalnyLevel++;
                    zostavajuciPocetPenazi = momentalnyLevel * 50;
                    RozmiestniPeniaze(zostavajuciPocetPenazi); //rozmiestni mince nahodne
                    timer.Interval = timer.Interval - 100;     //nastavi hru rychlejsie
                }
            }
            Invalidate(); //updatnutie celej mapy
        }