C# :: Aufgabe #40 :: Lösung #4

4 Lösungen Lösungen öffentlich
#40

4 Gewinnt für die Konsole

Anfänger - C# von Gustl - 05.01.2013 um 16:57 Uhr
Es soll 4 Gewinnt für die Konsole programmiert werden.
2 Spieler spielen gegeneinander, ohne Computergegner (ohne künstliche Intelligenz), spielen können.

Optional mit Computergegner, aber bitte in der Beschreibung dann angeben.
#4
vote_ok
von Abedull (40 Punkte) - 27.09.2016 um 15:15 Uhr
Quellcode ausblenden C#-Code
using System;

class Spiel
{

    class Feld
    {
        public string[,] Spielfeld = new string[10, 18];

        public Feld()
        {
            for (int j = 0; j < 10; j++)
            {
                for (int i = 0; i < 18; i += 1)
                {
                    if (i % 2 == 0) Spielfeld[j, i] = "|";
                    else Spielfeld[j, i] = " ";
                }
            }

            for (int j = 0; j < 10; j++)
            {
                for (int i = 0; i < 18; i += 1)
                {
                    Console.Write(Spielfeld[j, i]);
                }
                Console.Write("\n");
			}
			Console.WriteLine(" 1 2 3 4 5 6 7 8");
        }

        public void ausgabe()
        {
            for (int j = 0; j < 10; j++)
            {
                for (int i = 0; i < 18; i += 1)
                {
                    Console.Write(Spielfeld[j, i]);
                }
                Console.Write("\n");
            }
			Console.WriteLine(" 1 2 3 4 5 6 7 8");
        }

        public bool auswerten(string[,] Spiel)
        {
            //prüfen ob 4 gleiche nebeneinander
            
			//array waagerecht
            string[] wg = new string[80];
            int k = 0;

            for (int j = 0; j < 10; j++)
            {
                for (int i = 1; i < 16; i += 2)
                {
                    wg[k] = Spiel[j, i];
                    k += 1;
                }
            }

            //array senkrecht
			string[] sk = new string[80];
            k = 0;
			
            for (int j = 1; j < 16; j+=2)
            {
                for (int i = 0; i < 10; i ++)
                {
                    sk[k] = Spiel[i, j];
                    k += 1;
                }
            }
			
			//array diagonal links nach rechts
			string [] dl = new string[160];
			k = 0;
			
			for (int h = 0; h<9; h++)
			{			
				int i = h;
				int j = 1;
				do 
				{
					dl[k] = Spiel[i, j];
					k++;
					i++;
					j+=2;
				}
				while (i<9);
				dl [k] = " ";
				k++;
			}
			
			for (int h = 3; h<=16; h+=2)
			{			
				int j = h;
				int i = 0;
				do 
				{
					dl[k] = Spiel[i, j];
					k++;
					i++;
					j+=2;
				}
				while (j<=16);
				dl [k] = " ";
				k++;
			}
			
			//rechts nach links
			for (int h = 0; h<9; h++)
			{			
				int i = h;
				int j = 17;
				do 
				{
					dl[k] = Spiel[i, j];
					k++;
					i++;
					j-=2;
				}
				while (i<9);
				dl [k] = " ";
				k++;
			}
			
			for (int h = 15; h<=16; h+=2)
			{			
				int j = h;
				int i = 0;
				do 
				{
					dl[k] = Spiel[i, j];
					k++;
					i++;
					j+=2;
				}
				while (j<=16);
				dl [k] = " ";
				k++;
			}
			
			//prüfen ob vier gleiche nebeneinander
			int Reihewaagerecht = 1;
            int Reihesenkrecht = 1;
			int Reihediagonal = 1;
			Console.WriteLine(wg.Length + " " + sk.Length + " " + dl.Length);
            int s = 0;
            while (s < wg.Length)
            {
                    if ((wg[s] == "O" || wg[s] == "X") && (wg[s] == wg[s + 1])) Reihewaagerecht += 1;
                    else Reihewaagerecht = 1;
                    if ((sk[s] == "O" || sk[s] == "X") && (sk[s] == sk[s + 1])) Reihesenkrecht += 1;
                    else enkrecht = 1;

                    if (Reihewaagerecht == 4 || Reihesenkrecht == 4 )
                    {
                        Console.WriteLine("GEWONNEN");
                        return true;
                    }
                s++;
            }
					
			s = 0;
            while (s < dl.Length)
            {
                    if (dl[s] == "O" || dl[s] == "X")  Reihediagonal += 1;
                    else Reihediagonal = 1;
                    
                    if (Reihediagonal == 4 )
                    {
                        Console.WriteLine("GEWONNEN");
                        return true;
                    }
				s++;
            }
			return false;
        }
    }

    class Spieler
    {
        string Name;
        public string Sign;

        public Spieler(string Name, string Sign)
        {
            this.Name = Name;
            this.Sign = Sign;
        }

        public int amZug()
        {
            Console.WriteLine("Spieler {0}: Spalte?", Name);
            int spal = Int32.Parse(Console.ReadLine());
            return spal;
        }
    }

    static void Main()
    {
        Spieler AA = new Spieler("A", "X");
        Spieler BB = new Spieler("B", "O");
        Feld A = new Feld();
		
		int spalte;
        bool Ende = false;
        
        while (!Ende)
        {
            spalte = AA.amZug()*2-1;

            for (int j = 9; j >= 0; j--)
            {
                if (A.Spielfeld[j, spalte] == "|")
                {
                    Console.WriteLine("ungültig");
                    break;
                }

                else if (A.Spielfeld[j, spalte] == " ")
                {
                    A.Spielfeld[j, spalte] = AA.Sign;
                    break;
                }

                else if (A.Spielfeld[j, spalte] == "X" || A.Spielfeld[j, spalte] == "O")
                {
                    continue;
                }
			}

            A.ausgabe();
            Ende = A.auswerten(A.Spielfeld);
			
			if(!Ende)
			{
				spalte = BB.amZug()*2-1;

				for (int j = 9; j >= 0; j--)
				{
					if (A.Spielfeld[j, spalte] == "|")
					{
						Console.WriteLine("ungültig");
						break;
					}

					if (A.Spielfeld[j, spalte] == " ")
					{
						A.Spielfeld[j, spalte] = BB.Sign;
						break;
					}

					else if (A.Spielfeld[j, spalte] == "X" || A.Spielfeld[j, spalte] == "O")
					{
						continue;
					}

				}
			
				A.ausgabe();
				Ende = A.auswerten(A.Spielfeld);
			}
			else break;
        }
    }
}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
2090945

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.