示例#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 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();
            }
        }
示例#3
0
 public void PresunNahoru(int puvY, int puvX)
 {
     CoTamBylo(puvY - 1, puvX);
     Mapa.PresunPriserku(this, puvY, puvX, puvY - 1, puvX);
     y--;
 }
示例#4
0
 public void PresunDolu(int puvY, int puvX)
 {
     CoTamBylo(puvY + 1, puvX);
     Mapa.PresunPriserku(this, puvY, puvX, puvY + 1, puvX);
     y++;
 }
示例#5
0
 public void PresunDoprava(int puvY, int puvX)
 {
     CoTamBylo(puvY, puvX + 1);
     Mapa.PresunPriserku(this, puvY, puvX, puvY, puvX + 1);
     x++;
 }
示例#6
0
 public void PresunDoleva(int puvY, int puvX)
 {
     CoTamBylo(puvY, puvX - 1);
     Mapa.PresunPriserku(this, puvY, puvX, puvY, puvX - 1);
     x--;
 }