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() { 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(); } } }