private char PrintPozíció(int x, int y, char asztal = 'A', char fal = 'F', char kanapé = 'K', char szék = 'S', char üres = '.') { Típus t = this[x, y]; switch (t) { case Típus.Asztal: return(asztal); case Típus.Fal: return(fal); case Típus.Kanapé: return(kanapé); case Típus.Szék: return(szék); case Típus.Üres: return(üres); case Típus.Ismeretlen: throw new Exception("Nem osztályzott mező"); default: throw new Exception("Nem kezelt object típus!"); } }
private void BerendezésDekektálás() { /// <summary> /// Felcímkézi a Szék, Asztal és kanapé típusú objecteket /// </summary> // A ciklus működési elve: // mindig a bal felső sarkát találja meg az objectnek // Ha az object feltöltése már elkezdődött, akkor folytatja // Egyébként felcímkézi az alábbi szabályok alapján: // Szék, ha se jobbra, se lefelé nem folytatódik // Asztal ja jobbra, lefelé és jobbra-lefelé is folytatódik // Egyébként pedig kanapé for (int y = 1; y < Magasság - 1; y++) { for (int x = 1; x < Szélesség - 1; x++) { if (this[x, y] == Típus.Ismeretlen) { // Ha az object detektálása már elkezdődött Típus balraTípus = this[x - 1, y]; Típus felTípus = this[x, y - 1]; if (balraTípus == Típus.Asztal || balraTípus == Típus.Kanapé || balraTípus == Típus.Szék) { this[x, y] = balraTípus; continue; } if (felTípus == Típus.Asztal || felTípus == Típus.Kanapé || felTípus == Típus.Szék) { this[x, y] = felTípus; continue; } // Ha az object még ismeretlen bool jobbraIsmert = this[x + 1, y] == Típus.Ismeretlen; bool lefeléIsmert = this[x, y + 1] == Típus.Ismeretlen; bool jobbraÉsLefeléIsmert = this[x + 1, y + 1] == Típus.Ismeretlen; if (!jobbraIsmert && !lefeléIsmert) { this[x, y] = Típus.Szék; } else if (jobbraIsmert && lefeléIsmert && jobbraÉsLefeléIsmert) { this[x, y] = Típus.Asztal; } else { this[x, y] = Típus.Kanapé; } } } } }