Esempio n. 1
0
        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
                    };
                }
            }
        }
Esempio n. 2
0
        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);
        }