static bool bombaMozgat(Bomba b, Jatekos_Uzi_Tipusok irany) { uint uj_x = b.x; uint uj_y = b.y; switch (irany) { case Jatekos_Uzi_Tipusok.Lep_Jobbra: uj_x++; break; case Jatekos_Uzi_Tipusok.Lep_Le: uj_y++; break; case Jatekos_Uzi_Tipusok.Lep_Balra: uj_x--; break; case Jatekos_Uzi_Tipusok.Lep_Fel: uj_y--; break; } if ( uj_y < 0 || uj_x < 0 || uj_y >= palya.Magassag || uj_x >= palya.Szelesseg ) { return(false); } switch (palya.Cellak[uj_x, uj_y].Tipus) { case CellaTipus.Lang: palya.cellaTorol(b.x, b.y); b.x = uj_x; b.y = uj_y; palya.bombaTelepit(b); bomba_robban(b); return(true); case CellaTipus.Ures: palya.cellaTorol(b.x, b.y); b.x = uj_x; b.y = uj_y; palya.bombaTelepit(b); return(true); default: return(false); } }
static void jatekos_lep(Jatekos j, Jatekos_Uzi_Tipusok irany) { uint uj_x = j.x; uint uj_y = j.y; switch (irany) { case Jatekos_Uzi_Tipusok.Lep_Jobbra: uj_x++; if (uj_x >= palya.Szelesseg) { uj_x = 0; } break; case Jatekos_Uzi_Tipusok.Lep_Le: uj_y++; if (uj_y >= palya.Magassag) { uj_y = 0; } break; case Jatekos_Uzi_Tipusok.Lep_Balra: if (uj_x == 0) { uj_x = palya.Szelesseg - 1; } else { uj_x--; } break; case Jatekos_Uzi_Tipusok.Lep_Fel: if (uj_y == 0) { uj_y = palya.Magassag - 1; } else { uj_y--; } break; } lock (palya) { switch (palya.Cellak[uj_x, uj_y].Tipus) { case CellaTipus.Ures: break; case CellaTipus.Fal: return; case CellaTipus.Robbanthato_Fal: return; case CellaTipus.Bomba: if (j.Lab == 0) { return; } Bomba b; if (!Bombak.TryGetValue(palya.Cellak[uj_x, uj_y].Bomba_ID, out b)) { return; } if (!bombaMozgat(b, irany)) { return; } j.x = uj_x; j.y = uj_y; for (int i = (int)j.Lab - 1; i > 0; i--) { if (!bombaMozgat(b, irany)) { return; } } break; case CellaTipus.Lang: UInt32 langid = palya.Cellak[uj_x, uj_y].Lang_ID; Lang l; if (Langok.TryGetValue(langid, out l)) { jatekosMeghal(j, l.Jatekos_ID); } else { jatekosMeghal(j, 0); } break; case CellaTipus.Bomba_Kartya: j.Maxbombaszam += 1; palya.cellaTorol(uj_x, uj_y); break; case CellaTipus.Lang_Kartya: j.Rendzs += 1; palya.cellaTorol(uj_x, uj_y); break; case CellaTipus.Halalfej_Kartya: break; case CellaTipus.Sebesseg_Kartya: break; case CellaTipus.Lab_Kartya: j.Lab += 1; palya.cellaTorol(uj_x, uj_y); break; case CellaTipus.Kesztyu_Kartya: break; } } j.x = uj_x; j.y = uj_y; }