コード例 #1
0
 public override void UdelejKrok()
 {
     if (honim && zivy)
     {
         Policko novyKrok = Mapa.VratNejPolickoSmeremKPacmanovi(y, x);
         if (novyKrok != null)
         {
             CoTamBylo(novyKrok.y, novyKrok.x);
             Mapa.PresunPriserku(this, y, x, novyKrok.y, novyKrok.x);
             y = novyKrok.y;
             x = novyKrok.x;
             //AktualizujCoJePodDuchem();
         }
     }
     else if (zivy)
     {
         Utec();
     }
     else
     {
         if (oziveniTimer == 0)
         {
             Ozivni();
         }
         else
         {
             oziveniTimer--;
         }
     }
 }
コード例 #2
0
 public void Ozivni()
 {
     zivy      = true;
     honim     = true;
     znakDucha = znakDuchaDefault;
     Mapa.VratDuchaNaStart(this);
 }
コード例 #3
0
        private void timer1_Tick(object sender, EventArgs e)
        {
            switch (Mapa.stav)
            {
            case Stav.hrajese:
                Mapa.PohniVsemiPrvky();
                Mapa.VykresliMapu();
                Refresh();
                break;

            case Stav.vyhra:
                timer1.Enabled = false;
                MessageBox.Show("You win!");
                BackToMenu();
                break;

            case Stav.prohra:
                timer1.Enabled = false;
                MessageBox.Show("Game over");
                BackToMenu();
                break;

            default:
                break;
            }
        }
コード例 #4
0
        /*public void AktualizujCoJePodDuchem()
         * {
         *
         *  char co = this.podDuchem;
         *
         *  if (co == 'J' || co == 'B' || co == 'V' || co == 'G') Mapa.coByloPodDuchemModrym = co;
         *  else
         *  {
         *      while (co != 'J' && co != 'B' && co != 'V' && co != 'G')
         *      {
         *          switch (co)
         *          {
         *              case '1':
         *                  co = Mapa.coByloPodDuchemOranzovym;
         *                  break;
         *              case '2':
         *                  co = Mapa.coByloPodDuchemCervenym;
         *                  break;
         *              case '3':
         *                  co = Mapa.coByloPodDuchemRuzovym;
         *                  break;
         *              case '4':
         *                  co = Mapa.coByloPodDuchemModrym;
         *                  break;
         *              default:
         *                  break;
         *          }
         *
         *      }
         *      Mapa.coByloPodDuchemModrym = co;
         *  }
         * }*/

        public void Utec()
        {
            if (!Mapa.JePacman(y, x))
            {
                if (paritaKroku % 2 == 0)
                {
                    List <Policko> mozneTahy = new List <Policko>();
                    Policko        novyTah   = new Policko(0, 0);

                    if (!Mapa.JeStena(y - 1, x))
                    {
                        mozneTahy.Add(new Policko(y - 1, x));
                    }
                    if (!Mapa.JeStena(y + 1, x))
                    {
                        mozneTahy.Add(new Policko(y + 1, x));
                    }
                    if (!Mapa.JeStena(y, x - 1))
                    {
                        mozneTahy.Add(new Policko(y, x - 1));
                    }
                    if (!Mapa.JeStena(y, x + 1))
                    {
                        mozneTahy.Add(new Policko(y, x + 1));
                    }

                    if (mozneTahy.Count > 1)
                    {
                        Policko pom = Mapa.VratNejPolickoSmeremKPacmanovi(y, x);
                        if (pom != null)
                        {
                            Policko spatnePole = mozneTahy.First(p => p.x == pom.x && p.y == pom.y);
                            mozneTahy.Remove(spatnePole);
                        }
                        Random generator    = new Random();
                        int    nahodneCislo = generator.Next(mozneTahy.Count);
                        novyTah = mozneTahy[nahodneCislo];
                    }
                    else
                    {
                        novyTah = mozneTahy.First();
                    }
                    Mapa.PresunPriserku(this, y, x, novyTah.y, novyTah.x);
                    x = novyTah.x;
                    y = novyTah.y;
                    paritaKroku++;
                }
                else
                {
                    paritaKroku++;
                }
            }
            else
            {
                Zmiz();
            }
        }
コード例 #5
0
 private void BackToMenu()
 {
     Mapa.VymazVse();
     label1.Hide();
     label2.Hide();
     label1.Text         = "High Score: 0";
     label2.Text         = "Lives: 3";
     button1.Visible     = true;
     button2.Visible     = true;
     pictureBox1.Visible = true;
 }
コード例 #6
0
 public void Zemri()
 {
     //Mapa.OdstranPohyblivyPrvek(this); //na souradnicich pacmana je nekdo jiny => je zabit
     pocetZivotu--;
     Mapa.lives.Text = "Lives: " + pocetZivotu.ToString();
     if (pocetZivotu == 0)
     {
         Mapa.stav = Stav.prohra;
         Mapa.OdstranPohyblivyPrvek(this); //na souradnicich pacmana je nekdo jiny => je zabit
     }
     else
     {
         Mapa.Zpet();
     }
 }
コード例 #7
0
 public void CoTamBylo(int y, int x)
 {
     if (Mapa.JeJidlo(y, x))
     {
         podDuchem = 'J';
     }
     else if (Mapa.JeBonus(y, x))
     {
         podDuchem = 'B';
     }
     else
     {
         podDuchem = Mapa.JestliJeDuchTakJaky(y, x);
     }
 }
コード例 #8
0
 private void button1_Click(object sender, EventArgs e) //new game
 {
     button1.Hide();
     button2.Hide();
     pictureBox1.Hide();
     Mapa.stav = Stav.hrajese;
     Mapa.NactiMapu();
     Mapa.NactiIkonky();
     Mapa.VykresliMapu();
     timer1.Enabled   = true;
     Mapa.skore       = label1;
     Mapa.lives       = label2;
     Mapa.timer       = timer1;
     Mapa.pacmanTimer = timer2;
     Mapa.lbl         = label3;
     label1.Visible   = true;
     label2.Visible   = true;
 }
コード例 #9
0
 private void Form1_KeyDown(object sender, KeyEventArgs e)
 {
     if (e.KeyData == Keys.Space)
     {
         e.Handled = true;
     }
     if (e.KeyData == Keys.Up && Mapa.JeVolnoNeboDuch(Mapa.souradnicePacmana.y - 1, Mapa.souradnicePacmana.x))
     {
         stisknutaSipka = StisknutaSipka.nahoru;
     }
     if (e.KeyData == Keys.Down && Mapa.JeVolnoNeboDuch(Mapa.souradnicePacmana.y + 1, Mapa.souradnicePacmana.x))
     {
         stisknutaSipka = StisknutaSipka.dolu;
     }
     if (e.KeyData == Keys.Left && Mapa.JeVolnoNeboDuch(Mapa.souradnicePacmana.y, Mapa.souradnicePacmana.x - 1))
     {
         stisknutaSipka = StisknutaSipka.doleva;
     }
     if (e.KeyData == Keys.Right && Mapa.JeVolnoNeboDuch(Mapa.souradnicePacmana.y, Mapa.souradnicePacmana.x + 1))
     {
         stisknutaSipka = StisknutaSipka.doprava;
     }
 }
コード例 #10
0
        public override void UdelejKrok()  //chodi podel leve steny
        {
            if (honim && zivy)
            {
                int nove_x = x;
                int nove_y = y;

                switch (this.smer) //otacim se proti smeru hodinovych rucicek
                {
                case Smer.left:
                    if (Mapa.JeStena(nove_y + 1, nove_x) && !Mapa.JeStena(nove_y, nove_x - 1))
                    {
                        PresunDoleva(nove_y, nove_x);
                    }
                    else if (Mapa.JeStena(nove_y, nove_x - 1) && Mapa.JeStena(nove_y + 1, nove_x))
                    {
                        smer = Smer.up;
                        if (!Mapa.JeStena(nove_y - 1, nove_x))
                        {
                            PresunNahoru(nove_y, nove_x);
                        }
                        else
                        {
                            UdelejKrok();
                        }
                    }
                    else
                    {
                        smer = Smer.down;
                        if (!Mapa.JeStena(nove_y + 1, nove_x) && Mapa.JeStena(nove_y + 1, nove_x + 1))
                        {
                            PresunDolu(nove_y, nove_x);
                        }
                        else
                        {
                            UdelejKrok();
                        }
                    }
                    break;

                case Smer.right:
                    if (Mapa.JeStena(nove_y - 1, nove_x) && !Mapa.JeStena(nove_y, nove_x + 1))
                    {
                        PresunDoprava(nove_y, nove_x);
                    }
                    else if (Mapa.JeStena(nove_y, nove_x + 1) && Mapa.JeStena(nove_y - 1, nove_x))     //tam kam chci je zrovna stena a po me pravici je take stena
                    {
                        smer = Smer.down;
                        if (!Mapa.JeStena(nove_y + 1, nove_x))
                        {
                            PresunDolu(nove_y, nove_x);
                        }
                        else
                        {
                            UdelejKrok();
                        }
                    }
                    else
                    {
                        smer = Smer.up;
                        if (!Mapa.JeStena(nove_y - 1, nove_x) && Mapa.JeStena(nove_y - 1, nove_x - 1))
                        {
                            PresunNahoru(nove_y, nove_x);
                        }
                        else
                        {
                            UdelejKrok();
                        }
                    }
                    break;

                case Smer.up:
                    if (Mapa.JeStena(nove_y, nove_x - 1) && !Mapa.JeStena(nove_y - 1, nove_x))
                    {
                        PresunNahoru(nove_y, nove_x);
                    }
                    else if (Mapa.JeStena(nove_y - 1, nove_x) && Mapa.JeStena(nove_y, nove_x - 1))
                    {
                        smer = Smer.right;
                        if (!Mapa.JeStena(nove_y, nove_x + 1))
                        {
                            PresunDoprava(nove_y, nove_x);
                        }
                        else
                        {
                            UdelejKrok();
                        }
                    }
                    else
                    {
                        smer = Smer.left;
                        if (!Mapa.JeStena(nove_y, nove_x - 1) && Mapa.JeStena(nove_y + 1, nove_x - 1))
                        {
                            PresunDoleva(nove_y, nove_x);
                        }
                        else
                        {
                            UdelejKrok();
                        }
                    }
                    break;

                case Smer.down:
                    if (Mapa.JeStena(nove_y, nove_x + 1) && !Mapa.JeStena(nove_y + 1, nove_x))
                    {
                        PresunDolu(nove_y, nove_x);
                    }
                    else if (Mapa.JeStena(nove_y + 1, nove_x) && Mapa.JeStena(nove_y, nove_x + 1))
                    {
                        smer = Smer.left;
                        if (!Mapa.JeStena(nove_y, nove_x - 1))
                        {
                            PresunDoleva(nove_y, nove_x);
                        }
                        else
                        {
                            UdelejKrok();
                        }
                    }
                    else
                    {
                        smer = Smer.right;
                        if (!Mapa.JeStena(nove_y, nove_x + 1) && Mapa.JeStena(nove_y - 1, nove_x + 1))
                        {
                            PresunDoprava(nove_y, nove_x);
                        }
                        else
                        {
                            UdelejKrok();
                        }
                    }
                    break;

                default:
                    break;
                }
            }
            else if (zivy)
            {
                Utec();
            }
            else
            {
                if (oziveniTimer == 0)
                {
                    Ozivni();
                }
                else
                {
                    oziveniTimer--;
                }
            }
        }
コード例 #11
0
        public override void UdelejKrok()
        {
            int nove_x = x;
            int nove_y = y;

            if (Mapa.PacmanUtika)
            {
                if (!Mapa.JeDuch(y, x))
                {
                    switch (Mapa.form.stisknutaSipka)
                    {
                    case StisknutaSipka.doprava:
                        if (Mapa.JeVolno(nove_y, nove_x + 1))
                        {
                            Mapa.PresunPacmana(nove_y, nove_x, nove_y, nove_x + 1);
                            x++;
                        }
                        break;

                    case StisknutaSipka.doleva:
                        if (Mapa.JeVolno(nove_y, nove_x - 1))
                        {
                            Mapa.PresunPacmana(nove_y, nove_x, nove_y, nove_x - 1);
                            x--;
                        }
                        break;

                    case StisknutaSipka.dolu:
                        if (Mapa.JeVolno(nove_y + 1, nove_x))
                        {
                            Mapa.PresunPacmana(nove_y, nove_x, nove_y + 1, nove_x);
                            y++;
                        }
                        break;

                    case StisknutaSipka.nahoru:
                        if (Mapa.JeVolno(nove_y - 1, nove_x))
                        {
                            Mapa.PresunPacmana(nove_y, nove_x, nove_y - 1, nove_x);
                            y--;
                        }
                        break;

                    case StisknutaSipka.zadna:
                        break;

                    default:
                        break;
                    }
                }
                else
                {
                    //tady jeste rozdelit pomoci 'if' na pripad, kdy je pacman nastaven na nesmrtelneho
                    Zemri();
                }
            }
            else
            {
                if (!Mapa.JeDuch(y, x))
                {
                    switch (Mapa.form.stisknutaSipka)
                    {
                    case StisknutaSipka.doprava:
                        if (Mapa.JeVolnoNeboDuch(nove_y, nove_x + 1))
                        {
                            Mapa.PresunPacmana(nove_y, nove_x, nove_y, nove_x + 1);
                            x++;
                        }
                        break;

                    case StisknutaSipka.doleva:
                        if (Mapa.JeVolnoNeboDuch(nove_y, nove_x - 1))
                        {
                            Mapa.PresunPacmana(nove_y, nove_x, nove_y, nove_x - 1);
                            x--;
                        }
                        break;

                    case StisknutaSipka.dolu:
                        if (Mapa.JeVolnoNeboDuch(nove_y + 1, nove_x))
                        {
                            Mapa.PresunPacmana(nove_y, nove_x, nove_y + 1, nove_x);
                            y++;
                        }
                        break;

                    case StisknutaSipka.nahoru:
                        if (Mapa.JeVolnoNeboDuch(nove_y - 1, nove_x))
                        {
                            Mapa.PresunPacmana(nove_y, nove_x, nove_y - 1, nove_x);
                            y--;
                        }
                        break;

                    case StisknutaSipka.zadna:
                        break;

                    default:
                        break;
                    }
                }
                else
                {
                    Zemri();
                }
            }
        }
コード例 #12
0
        public override void UdelejKrok()   //chodi podel prave steny
        {
            if (honim && zivy)
            {
                int nove_x = x;
                int nove_y = y;
                muzuJit = false;

                switch (this.smer) //otacim se podle smeru hodinovych rucicek
                {
                case Smer.left:
                    if (Mapa.JeStena(nove_y - 1, nove_x) && (!Mapa.JeStena(nove_y, nove_x - 1)))
                    {
                        PresunDoleva(nove_y, nove_x);
                    }
                    else if (Mapa.JeStena(nove_y, nove_x - 1) && Mapa.JeStena(nove_y - 1, nove_x))
                    {
                        smer = Smer.down;
                        if (!Mapa.JeStena(nove_y + 1, nove_x))
                        {
                            PresunDolu(nove_y, nove_x);
                        }
                        else
                        {
                            UdelejKrok();
                        }
                    }
                    else
                    {
                        smer = Smer.up;
                        if (!Mapa.JeStena(nove_y - 1, nove_x) && Mapa.JeStena(nove_y - 1, nove_x + 1))
                        {
                            PresunNahoru(nove_y, nove_x);
                        }
                        else
                        {
                            UdelejKrok();
                        }
                    }
                    break;

                case Smer.right:
                    if (Mapa.JeStena(nove_y + 1, nove_x) && !Mapa.JeStena(nove_y, nove_x + 1))
                    {
                        PresunDoprava(nove_y, nove_x);
                    }
                    else if (Mapa.JeStena(nove_y, nove_x + 1) && Mapa.JeStena(nove_y + 1, nove_x)) //tam kam chci je zrovna stena a po me pravici je take stena
                    {
                        smer = Smer.up;                                                            //otocim se tedy opacnym smerem (doleva)
                        if (!Mapa.JeStena(nove_y - 1, nove_x))
                        {
                            PresunNahoru(nove_y, nove_x);
                        }
                        else
                        {
                            UdelejKrok();
                        }
                    }
                    else
                    {
                        smer = Smer.down;
                        if (!Mapa.JeStena(nove_y + 1, nove_x) && Mapa.JeStena(nove_y + 1, nove_x - 1))
                        {
                            PresunDolu(nove_y, nove_x);
                        }
                        else
                        {
                            UdelejKrok();
                        }
                    }
                    break;

                case Smer.up:
                    if (Mapa.JeStena(nove_y, nove_x + 1) && !Mapa.JeStena(nove_y - 1, nove_x))
                    {
                        PresunNahoru(nove_y, nove_x);
                    }
                    else if (Mapa.JeStena(nove_y - 1, nove_x) && Mapa.JeStena(nove_y, nove_x + 1))
                    {
                        smer = Smer.left;
                        if (!Mapa.JeStena(nove_y, nove_x - 1))
                        {
                            PresunDoleva(nove_y, nove_x);
                        }
                        else
                        {
                            UdelejKrok();
                        }
                    }
                    else
                    {
                        smer = Smer.right;
                        if (!Mapa.JeStena(nove_y, nove_x + 1) && Mapa.JeStena(nove_y + 1, nove_x + 1))
                        {
                            PresunDoprava(nove_y, nove_x);
                        }
                        else
                        {
                            UdelejKrok();
                        }
                    }
                    break;

                case Smer.down:
                    if (Mapa.JeStena(nove_y, nove_x - 1) && !Mapa.JeStena(nove_y + 1, nove_x))
                    {
                        PresunDolu(nove_y, nove_x);
                    }
                    else if (Mapa.JeStena(nove_y + 1, nove_x) && Mapa.JeStena(nove_y, nove_x - 1))
                    {
                        smer = Smer.right;
                        if (!Mapa.JeStena(nove_y, nove_x + 1))
                        {
                            PresunDoprava(nove_y, nove_x);
                        }
                        else
                        {
                            UdelejKrok();
                        }
                    }
                    else
                    {
                        smer = Smer.left;
                        if (!Mapa.JeStena(nove_y, nove_x - 1) && Mapa.JeStena(nove_y - 1, nove_x - 1))
                        {
                            PresunDoleva(nove_y, nove_x);
                        }
                        else
                        {
                            UdelejKrok();
                        }
                    }
                    break;

                default:
                    break;
                }
                // AktualizujCoJePodDuchem();
            }
            else if (zivy)
            {
                Utec();
            }
            else
            {
                if (oziveniTimer == 0)
                {
                    Ozivni();
                }
                else
                {
                    oziveniTimer--;
                }
            }
        }
コード例 #13
0
 public void PresunNahoru(int puvY, int puvX)
 {
     CoTamBylo(puvY - 1, puvX);
     Mapa.PresunPriserku(this, puvY, puvX, puvY - 1, puvX);
     y--;
 }
コード例 #14
0
 public void PresunDolu(int puvY, int puvX)
 {
     CoTamBylo(puvY + 1, puvX);
     Mapa.PresunPriserku(this, puvY, puvX, puvY + 1, puvX);
     y++;
 }
コード例 #15
0
 public void PresunDoprava(int puvY, int puvX)
 {
     CoTamBylo(puvY, puvX + 1);
     Mapa.PresunPriserku(this, puvY, puvX, puvY, puvX + 1);
     x++;
 }
コード例 #16
0
 public void PresunDoleva(int puvY, int puvX)
 {
     CoTamBylo(puvY, puvX - 1);
     Mapa.PresunPriserku(this, puvY, puvX, puvY, puvX - 1);
     x--;
 }