示例#1
0
        private Platz[][] ErzeugeSpielbrettArray()
        {
            _plaetze = new Platz[_spaltenAnzahl][];
            for (var i = 0; i < _spaltenAnzahl; i++)
            {
                _plaetze[i] = new Platz[_reihenAnzahl];
                for (var j = 0; j < _reihenAnzahl; j++)
                {
                    _plaetze[i][j] = new Platz(i, j);
                }
            }

            return(_plaetze);
        }
示例#2
0
        public Spielbrett Erstelle(int reihenAnzahl, int spaltenAnzahl)
        {
            if (spaltenAnzahl < 2)
            {
                throw new ArgumentOutOfRangeException("spaltenAnzahl", "Die Spaltenanzahl darf nicht kleiner 2 sein");
            }
            if (reihenAnzahl < 2)
            {
                throw new ArgumentOutOfRangeException("reihenAnzahl", "Sie Reihenanzahl darf nicht kleiner 2 sein");
            }


            //-2-dimensionaler Array erzeugen-------
            // Erstelle ein Array mit einer Dimension der Anzahl "spaltenAnzahl". Das Array kann in jedem Arrayfeld ein weiteres Array aufnehmen.
            // Erstelle für jedes einzelne Feld "spaltenAnzahl" ein weiteres Array welches die Anzahl "reihenAnzahl" Felder enthält.
            // Füge in jedes der Felder "reihenAnzahl" ein objekt des Typs "Platz" ein.
            //--------------------------------------

            var plätze = new Platz[spaltenAnzahl][]; // Ein Array welcher mehre andere Arrays enthalten kann

            for (var i = 0; i < spaltenAnzahl; i++)
            {
                plätze[i] = new Platz[reihenAnzahl]; // an Array Position "i" erstelle Array mit "reihenAnzahl"

                for (var j = 0; j < reihenAnzahl; j++)
                {
                    plätze[i][j] = new Platz(); // Erzeuge tatsächliches Platz Objekt an für jedes Feld im Array
                }
            }


            //-Spalten -----------------------------
            // Erstelle für die Anzahl "spaltenAnzahl" Spalten des Typs Liste. Erstelle für die Anzahl "reihenAnzahl"
            // Spaltenplätze und füge die Plätze des 2D-Arrays in jedes einzelne Feld in "spaltenplätze"
            //--------------------------------------

            var spalten = new List <Spalte>(); // Erstelle Liste mit Typ "Spalte"

            for (var i = 0; i < spaltenAnzahl; i++)
            {
                var spaltenPlätze = new List <Platz>(); // Erstelle Liste mit Typ "Platz"

                for (var j = 0; j < reihenAnzahl; j++)
                {
                    spaltenPlätze.Add(plätze[i][j]); // Füge der Liste des Typs "Platz" die zuvor generierten Objekte des Typs "Platz" ein
                }

                spalten.Add(new Spalte(spaltenPlätze)); // Füge der Spaltenliste eine neue Spalte ein, die Spalte beinhaltet die Liste des Typs "Platz" welche breits mit Objekten des Typs "Platz befüllt wurde"
            }


            //-Reihen ------------------------------
            // Erstelle für die Anzahl "reihenAnzahl" Reihen des Typs Liste. Erstelle für die Anzahl "spaltenAnzahl"
            // Reihenplätze und füge die Plätze des 2D-Arrays in jedes einzelne Feld in "reihenPlätze"
            //--------------------------------------

            var reihen = new List <Reihe>(); // Erstelle Liste mit Typ "Reihe"

            for (var i = 0; i < reihenAnzahl; i++)
            {
                var reihenPlätze = new List <Platz>(); // Erstelle Liste mit Typ "Platz"

                for (var j = 0; j < spaltenAnzahl; j++)
                {
                    reihenPlätze.Add(plätze[i][j]); // Füge der Liste des Typs "Platz" die zuvor generierten Objekte des Typs "Platz" ein
                }

                reihen.Add(new Reihe(reihenPlätze)); // Füge der Reihenliste eine neue Reihe ein, die Reihe beinhaltet die Liste des Typs "Platz" welche breits mit Objekten des Typs "Platz befüllt wurde"
            }


            //-Diagonalen --------------------------
            // Erstelle Diagonalen des Typs Liste. Erstelle für die mögliche Anzahl "diagonalenPlätze"
            // und füge die Plätze des 2D-Arrays in jedes einzelne Feld in "diagonalenPlätze"
            //--------------------------------------

            var diagonalen = new List <Diagonale>(); // Erstelle Liste mit Typ "Diagonale"


            // Diagonalen von Links oben nach Rechts unten

            for (var i = 0; i < spaltenAnzahl; i++)
            {
                var spaltenIndex = i;
                var reihenIndex  = 0;

                var diagonalenPlätze = new List <Platz>(); // Erstelle Liste mit Typ "Platz"

                while (spaltenIndex < spaltenAnzahl && reihenIndex < reihenAnzahl)
                {
                    diagonalenPlätze.Add(plätze[spaltenIndex][reihenIndex]); // Füge der Liste des Typs "Platz" die zuvor generierten Objekte des Typs "Platz" ein

                    spaltenIndex++;
                    reihenIndex++;
                }

                if (diagonalenPlätze.Count >= 4)
                {
                    diagonalen.Add(new Diagonale(diagonalenPlätze)); // Wenn aktuelle diagonalenPlätze mehr als 4 plätze enthält füge der Diagonalenliste eine neue Diagonale ein,
                    // die Diagonale beinhaltet die Liste des Typs "Platz" welche breits mit Objekten des Typs "Platz befüllt wurde"
                }
            }

            for (var j = 1; j < reihenAnzahl; j++)
            {
                var reihenIndex  = j;
                var spaltenIndex = 0;

                var diagonalenPlätze = new List <Platz>(); // Erstelle Liste mit Typ "Platz"

                while (spaltenIndex < spaltenAnzahl && reihenIndex < reihenAnzahl)
                {
                    diagonalenPlätze.Add(plätze[spaltenIndex][reihenIndex]); // Füge der Liste des Typs "Platz" die zuvor generierten Objekte des Typs "Platz" ein

                    spaltenIndex++;
                    reihenIndex++;
                }

                if (diagonalenPlätze.Count >= 4)
                {
                    diagonalen.Add(new Diagonale(diagonalenPlätze)); // Wenn aktuelle diagonalenPlätze mehr als 4 plätze enthält füge der Diagonalenliste eine neue Diagonale ein,
                    // die Diagonale beinhaltet die Liste des Typs "Platz" welche breits mit Objekten des Typs "Platz befüllt wurde"
                }
            }


            // Diagonalen von Rechts oben nach links unten

            for (var i = spaltenAnzahl; i > 0; i--)
            {
                var spaltenIndex = i;
                var reihenIndex  = 0;

                var diagonalenPlätze = new List <Platz>(); // Erstelle Liste mit Typ "Platz"

                while (spaltenIndex >= 0 && reihenIndex < reihenAnzahl)
                {
                    diagonalenPlätze.Add(plätze[spaltenIndex][reihenIndex]); // Füge der Liste des Typs "Platz" die zuvor generierten Objekte des Typs "Platz" ein

                    spaltenIndex--;
                    reihenIndex++;
                }

                if (diagonalenPlätze.Count >= 4)
                {
                    diagonalen.Add(new Diagonale(diagonalenPlätze)); // Wenn aktuelle diagonalenPlätze mehr als 4 plätze enthält füge der Diagonalenliste eine neue Diagonale ein,
                    // die Diagonale beinhaltet die Liste des Typs "Platz" welche breits mit Objekten des Typs "Platz befüllt wurde"
                }
            }

            for (var j = 1; j < reihenAnzahl; j++)
            {
                var reihenIndex  = j;
                var spaltenIndex = 0;

                var diagonalenPlätze = new List <Platz>(); // Erstelle Liste mit Typ "Platz"

                while (spaltenIndex >= 0 && reihenIndex < reihenAnzahl)
                {
                    diagonalenPlätze.Add(plätze[spaltenIndex][reihenIndex]); // Füge der Liste des Typs "Platz" die zuvor generierten Objekte des Typs "Platz" ein

                    spaltenIndex--;
                    reihenIndex++;
                }

                if (diagonalenPlätze.Count >= 4)
                {
                    diagonalen.Add(new Diagonale(diagonalenPlätze)); // Wenn aktuelle diagonalenPlätze mehr als 4 plätze enthält füge der Diagonalenliste eine neue Diagonale ein,
                    // die Diagonale beinhaltet die Liste des Typs "Platz" welche breits mit Objekten des Typs "Platz befüllt wurde"
                }
            }



            // Initialisierung Spielbrett

            return(new Spielbrett(plätze, reihen, spalten, diagonalen));
        }
示例#3
0
        public Spielbrett Erstelle(int reihenAnzahl, int spaltenAnzahl)
        {
            if (spaltenAnzahl < 2)
            {
                throw new ArgumentOutOfRangeException(nameof(spaltenAnzahl), "Die Anzahl der Spalten darf nicht kleiner 2 sein.");
            }
            if (reihenAnzahl < 2)
            {
                throw new ArgumentOutOfRangeException(nameof(reihenAnzahl), "Die Anzahl der Reihen darf nicht kleiner 2 sein.");
            }

            // 2-dimensionlen Array aus Plätzen erzeugen
            var plätze = new Platz[spaltenAnzahl][];

            for (int i = 0; i < spaltenAnzahl; i++)
            {
                plätze[i] = new Platz[reihenAnzahl];

                for (var j = 0; j < reihenAnzahl; j++)
                {
                    plätze[i][j] = new Platz(i, j);
                }
            }

            // Spalten
            var spalten = new List <Spalte>();

            for (int i = 0; i < spaltenAnzahl; i++)
            {
                var spaltenPlätze = new List <Platz>();

                for (int j = 0; j < reihenAnzahl; j++)
                {
                    spaltenPlätze.Add(plätze[i][j]);
                }

                spalten.Add(new Spalte(spaltenPlätze));
            }

            // Reihen
            var reihen = new List <Reihe>();

            for (int j = 0; j < reihenAnzahl; j++)
            {
                var reihenPlätze = new List <Platz>();

                for (int i = 0; i < spaltenAnzahl; i++)
                {
                    reihenPlätze.Add(plätze[i][j]);
                }
                reihen.Add(new Reihe(reihenPlätze));
            }

            // Diagonalen
            var diagonalen         = new List <Diagonale>();
            var diagonalenrichtung = Diagonalenrichtung.RechtsUnten;

            // Diagonalen von links oben nach rechts unten
            for (int i = 0; i < spaltenAnzahl; i++)
            {
                int spaltenIndex = i;
                int reihenIndex  = 0;

                var diagonalenPlätze = new List <Platz>();

                while (spaltenIndex < spaltenAnzahl && reihenIndex < reihenAnzahl)
                {
                    diagonalenPlätze.Add(plätze[spaltenIndex][reihenIndex]);
                    spaltenIndex++;
                    reihenIndex++;
                }

                if (diagonalenPlätze.Count >= 4)
                {
                    diagonalen.Add(new Diagonale(i, 0, diagonalenrichtung, diagonalenPlätze));
                }
            }

            for (int j = 1; j < reihenAnzahl; j++)
            {
                int spaltenIndex = 0;
                int reihenIndex  = j;

                var diagonalenPlätze = new List <Platz>();

                while (spaltenIndex < spaltenAnzahl && reihenIndex < reihenAnzahl)
                {
                    diagonalenPlätze.Add(plätze[spaltenIndex][reihenIndex]);
                    spaltenIndex++;
                    reihenIndex++;
                }

                if (diagonalenPlätze.Count >= 4)
                {
                    diagonalen.Add(new Diagonale(0, j, diagonalenrichtung, diagonalenPlätze));
                }
            }

            // Diagnalen von rechts oben nach links unten
            diagonalenrichtung = Diagonalenrichtung.LinksUnten;

            for (int i = 0; i < spaltenAnzahl; i++)
            {
                int spaltenIndex = i;
                int reihenIndex  = 0;

                var diagonalenPlätze = new List <Platz>();

                while (spaltenIndex >= 0 && reihenIndex < reihenAnzahl)
                {
                    diagonalenPlätze.Add(plätze[spaltenIndex][reihenIndex]);
                    spaltenIndex--;
                    reihenIndex++;
                }

                if (diagonalenPlätze.Count >= 4)
                {
                    diagonalen.Add(new Diagonale(i, 0, diagonalenrichtung, diagonalenPlätze));
                }
            }

            for (int j = 1; j < reihenAnzahl; j++)
            {
                int spaltenIndex = spaltenAnzahl - 1;
                int reihenIndex  = j;

                var diagonalenPlätze = new List <Platz>();

                while (spaltenIndex >= 0 && reihenIndex < reihenAnzahl)
                {
                    diagonalenPlätze.Add(plätze[spaltenIndex][reihenIndex]);
                    spaltenIndex--;
                    reihenIndex++;
                }

                if (diagonalenPlätze.Count >= 4)
                {
                    diagonalen.Add(new Diagonale(spaltenAnzahl - 1, j, diagonalenrichtung, diagonalenPlätze));
                }
            }

            // Spielbrett initialisieren
            return(new Spielbrett(plätze, reihen, spalten, diagonalen));
        }