public void PlatziereSchiff(int schiffGroesse, Schiffsausrichtung ausrichtung, int reihenIndex, int spaltenIndex) { var koordinaten = BerechneSchiffskoordinaten(schiffGroesse, ausrichtung, reihenIndex, spaltenIndex); if (IsKoordinatenAußerhalbDesSpielfelds(koordinaten)) { throw new Exception("Die Koordinaten liegen außerhalb des Spielfelds."); } else if (IsSchiffBereitsVorhanden(koordinaten)) { throw new Exception("Auf den gewählten Koordinaten ist bereits ein Schiff vorhanden."); } else { foreach (var koordinate in koordinaten) { int reihenKoordinate = koordinate.ZeilenKoordinate; int spaltenKoordinate = koordinate.SpaltenKoordinate; _felder[reihenKoordinate, spaltenKoordinate] = new Feld() { IsGesetzt = true }; } } }
private Feldkoordinate[] BerechneSchiffskoordinaten(int schiffGroesse, Schiffsausrichtung ausrichtung, int reihenIndex, int spaltenIndex) { var alleSchiffskoordinaten = new Feldkoordinate[schiffGroesse]; //Instanziere ein neues Array, vom Datentyp Feldkoordinate mit schiffsGroesse Anzahl an Elementen for (int i = 0; i < schiffGroesse; i++) { if (ausrichtung == Schiffsausrichtung.Oben) { alleSchiffskoordinaten[i] = new Feldkoordinate() { ZeilenKoordinate = reihenIndex - i, SpaltenKoordinate = spaltenIndex }; //An der Stelle i wird jeweils eine neue Feldkoordinate instanziert und mit den jeweiligen Werten gefüllt } else if (ausrichtung == Schiffsausrichtung.Rechts) { alleSchiffskoordinaten[i] = new Feldkoordinate() { ZeilenKoordinate = reihenIndex, SpaltenKoordinate = spaltenIndex + i }; } else if (ausrichtung == Schiffsausrichtung.Unten) { alleSchiffskoordinaten[i] = new Feldkoordinate() { ZeilenKoordinate = reihenIndex + i, SpaltenKoordinate = spaltenIndex }; } else //Ausrichtung Links { alleSchiffskoordinaten[i] = new Feldkoordinate() { ZeilenKoordinate = reihenIndex, SpaltenKoordinate = spaltenIndex - i }; } } return(alleSchiffskoordinaten); }