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

#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.
2 Spieler spielen gegeneinander, ohne Computergegner (ohne künstliche Intelligenz), spielen können.
Optional mit Computergegner, aber bitte in der Beschreibung dann angeben.
#4

von Abedull (40 Punkte)
- 27.09.2016 um 15:15 Uhr

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
Seite 1 von 0
1