public void PlatziereSchiff_SchiffeKorrektGesetzt_IsTrue()
        {
            var spielfeld = new Spielfeld(6, 6);

            spielfeld.PlatziereSchiff(2, Schiffsausrichtung.Rechts, 0, 0); //Ich setzte das Schiff nach rechts auf Feld 0,0
            var felder = spielfeld.GetFelder();                            //Ich speichere mir alle Felder in der Variablen felder

            Assert.IsTrue(felder[0, 0].IsGesetzt);                         //Ich behaupte, dass das Schiff auf Feld 0,0 gesetzt ist
            Assert.IsTrue(felder[0, 1].IsGesetzt);                         //Ich behaupte, dass das Schiff auf Feld 0,1 gesetzt ist

            for (int i = 0; i < felder.GetLength(0); i++)
            {
                for (int u = 0; u < felder.GetLength(1); u++)
                {
                    if (u != 0 && u != 1 && i == 0)
                    {
                        //Ich behaupte, dass auf allen Feldern, außer 0,1 und 0,0 das Schiff nicht gesetzt wurde
                        Assert.IsTrue(!felder[i, u].IsGesetzt);
                    }
                }
            }

            //1. Schritt: Vorbedingung z.B. IsKoordinatenAußerhalbDesSpielfelds() --> Innerhalb der Methode selbst abtesten vor der Ausführung
            //2. Schritt: Unit Tests --> z.B. für Core Komponenten ein paar Fälle ausdenken und testen (Test härter gestalten, weil FUnktion oft im Code gebraucht wird)
            //Wenn Tests sich zu oft ändern würde, ist KEIN Test besser!
            //Test sinnvoll: Funktioniert Methode im Standardfall? Gut wenn Methode selbst ihre Vorbed. absichert.
            //Abwägungssache bei Unit tests

            //Ein weiteres Schiff wird auf das gleiche Spielfeld gesetzt
            spielfeld.PlatziereSchiff(4, Schiffsausrichtung.Links, 5, 5);
            Assert.IsTrue(felder[5, 5].IsGesetzt);
            Assert.IsTrue(felder[5, 4].IsGesetzt);
            Assert.IsTrue(felder[5, 3].IsGesetzt);
            Assert.IsTrue(felder[5, 2].IsGesetzt);
        }
        public void PlatziereSchiffeZufaellig_AnzahlGesetzterSchiffe_IsEqual()
        {
            var spielfeld = new Spielfeld(6, 6);

            var alleSchiffsGroessen = new int[] { 2, 3, 4 };
            var summeSchiffe        = 0;

            foreach (var schiff in alleSchiffsGroessen)
            {
                summeSchiffe += schiff;
            }

            spielfeld.PlatziereSchiffeZufaellig(alleSchiffsGroessen);

            int alleGesetztenSchiffe = 0;
            //Teste: Sind wirklich alle Schiffe gesetzt worden ODER sind 9 Schiffe auf dem Feld

            //------------------------------------------------------FRAGE: WARUM GEHT FOLGENDES NICHT:
            //foreach (var feld in spielfeld)
            //{
            //    feld.IsGesetzt;
            //}

            var felder = spielfeld.GetFelder(); //FRAGE: ------------------------------------------------------WARUM MUSS ICH HIER GETFELDER AUFRUFEN?

            foreach (var feld in felder)
            {
                if (feld.IsGesetzt)
                {
                    alleGesetztenSchiffe += 1;
                }
            }

            Assert.AreEqual(summeSchiffe, alleGesetztenSchiffe);
        }
        public void SetzeSchuss_IsGetroffen_IsTrue()
        {
            var spielfeld = new Spielfeld(6, 6);

            spielfeld.PlatziereSchiff(2, Schiffsausrichtung.Unten, 0, 0);
            spielfeld.SetzeSchuss(0, 0);


            Assert.IsTrue(spielfeld.GetFelder()[0, 0].IsGetroffen);
        }