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 Ozivni() { zivy = true; honim = true; znakDucha = znakDuchaDefault; Mapa.VratDuchaNaStart(this); }
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; } }
/*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(); } }
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; }
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(); } }
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); } }
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; }
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; } }
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--; } } }
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(); } } }
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--; } } }
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--; }