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--; } } }
/*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(); } }
public void PresunNahoru(int puvY, int puvX) { CoTamBylo(puvY - 1, puvX); Mapa.PresunPriserku(this, puvY, puvX, puvY - 1, puvX); y--; }
public void PresunDolu(int puvY, int puvX) { CoTamBylo(puvY + 1, puvX); Mapa.PresunPriserku(this, puvY, puvX, puvY + 1, puvX); y++; }
public void PresunDoprava(int puvY, int puvX) { CoTamBylo(puvY, puvX + 1); Mapa.PresunPriserku(this, puvY, puvX, puvY, puvX + 1); x++; }
public void PresunDoleva(int puvY, int puvX) { CoTamBylo(puvY, puvX - 1); Mapa.PresunPriserku(this, puvY, puvX, puvY, puvX - 1); x--; }