#include using std::cout; using std::cin; int main() { bool BSpielfeld[3][3]; //zur Überprüfung, ob ein Feld belegt ist char CSpielfeld[3][3]; CSpielfeld[0][0] = '1'; CSpielfeld[0][1] = '2'; CSpielfeld[0][2] = '3'; CSpielfeld[1][0] = '4'; CSpielfeld[1][1] = '5'; CSpielfeld[1][2] = '6'; CSpielfeld[2][0] = '7'; CSpielfeld[2][1] = '8'; CSpielfeld[2][2] = '9'; //Dient als Spielfeld und zur Anzeige der bereits gesetzten x und o bool KIZug; //Sorgt dafür, dass KI nur einmal ziehen darf bool control = false; // damit die erste if anweisung nur einmal ausgeführt wird bool loop = false; //solange wird die Schleife ausgeführt while(loop == false) { KIZug = false; cout << " | |\n"; cout << " " << CSpielfeld[0][0] << " | " << CSpielfeld[0][1] << " | " << CSpielfeld[0][2] << "\n"; cout << "------------\n"; cout << " | |\n"; cout << " " << CSpielfeld[1][0] << " | " << CSpielfeld[1][1] << " | " << CSpielfeld[1][2] << "\n"; cout << "------------\n"; cout << " | |\n"; cout << " " << CSpielfeld[2][0] << " | " << CSpielfeld[2][1] << " | " << CSpielfeld[2][2] << "\n"; cout << "Wo wollen Sie setzen? [1-9]: "; int input[2]; cin >> input[0]; if(input[0] == 1 && BSpielfeld[0][0] != true) { CSpielfeld[0][0] = 'x'; BSpielfeld[0][0] = true; } else if(input[0] == 2 && BSpielfeld[0][1] != true) { CSpielfeld[0][1] = 'x'; BSpielfeld[0][1] = true; } else if(input[0] == 3 && BSpielfeld[0][2] != true) { CSpielfeld[0][2] = 'x'; BSpielfeld[0][2] = true; } else if(input[0] == 4 && BSpielfeld[1][0] != true) { CSpielfeld[1][0] = 'x'; BSpielfeld[1][0] = true; } else if(input[0] == 5 && BSpielfeld[1][1] != true) { CSpielfeld[1][1] = 'x'; BSpielfeld[1][1] = true; } else if(input[0] == 6 && BSpielfeld[1][2] != true) { CSpielfeld[1][2] = 'x'; BSpielfeld[1][2] = true; } else if(input[0] == 7 && BSpielfeld[2][0] != true) { CSpielfeld[2][0] = 'x'; BSpielfeld[2][0] = true; } else if(input[0] == 8 && BSpielfeld[2][1] != true) { CSpielfeld[2][1] = 'x'; BSpielfeld[2][1] = true; } else if(input[0] == 9 && BSpielfeld[2][2] != true) { CSpielfeld[2][2] = 'x'; BSpielfeld[2][2] = true; } else { cout << "Sie haben eine falsche Eingabe gemacht, moegliche Fehler:\n"; cout << "1. Sie haben keine Zahl zwischen 1-9 eingegeben, oder:\n"; cout << "2. Sie haben versucht auf ein belegtes Feld zu setzen.\n"; return 1; } if(control == false) //Start der KI, um den besten Startpunkt zu bekommen { if(CSpielfeld[0][0] == 'x') { CSpielfeld[1][1] = 'o'; BSpielfeld[1][1] = true; KIZug = true; } if(CSpielfeld[0][1] == 'x') { CSpielfeld[1][1] = 'o'; BSpielfeld[1][1] = true; KIZug = true; } if(CSpielfeld[0][2] == 'x') { CSpielfeld[1][1] = 'o'; BSpielfeld[1][1] = true; KIZug = true; } if(CSpielfeld[1][0] == 'x') { CSpielfeld[1][1] = 'o'; BSpielfeld[1][1] = true; KIZug = true; } if(CSpielfeld[1][1] == 'x') { CSpielfeld[0][0] = 'o'; BSpielfeld[0][0] = true; KIZug = true; } if(CSpielfeld[1][2] == 'x') { CSpielfeld[1][1] = 'o'; BSpielfeld[1][1] = true; KIZug = true; } if(CSpielfeld[2][0] == 'x') { CSpielfeld[1][1] = 'o'; BSpielfeld[1][1] = true; KIZug = true; } if(CSpielfeld[2][1] == 'x') { CSpielfeld[1][1] = 'o'; BSpielfeld[1][1] = true; KIZug = true; } if(CSpielfeld[2][2] == 'x') { CSpielfeld[1][1] = 'o'; BSpielfeld[1][1] = true; KIZug = true; } control = true; // damits nur einmal ausgeführt wird } // ab hier geht die KI alle möglichkeiten durch, also die brutale Methode if(CSpielfeld[0][2] && CSpielfeld[1][1] == 'o' && KIZug == false) //Wenn 5 und 3 belege 7 { if(BSpielfeld[2][0] != true) { CSpielfeld[2][0] = 'o'; BSpielfeld[2][0] = true; KIZug = true; } } if(CSpielfeld[0][0] && CSpielfeld[0][1] == 'o' && KIZug == false) //Wenn 1 und 2 belege 3 { if(BSpielfeld[0][2] != true) { CSpielfeld[0][2] = 'o'; BSpielfeld[0][2] = true; KIZug = true; } } if(CSpielfeld[2][0] && CSpielfeld[1][1] == 'o' && KIZug == false) //Wenn 7 und 5 belege 3 { if(BSpielfeld[0][2] != true) { CSpielfeld[0][2] = 'o'; BSpielfeld[0][2] = true; KIZug = true; } } if(CSpielfeld[0][0] && CSpielfeld[1][0] == 'o' && KIZug == false) //Wenn 1 und 4 belege 7 { if(BSpielfeld[2][0] != true) { CSpielfeld[2][0] = 'o'; BSpielfeld[2][0] = true; KIZug = true; } } if(CSpielfeld[2][0] && CSpielfeld[1][0] == 'o' && KIZug == false) //Wenn 7 und 4 belege 1 { if(BSpielfeld[2][2] != true) { CSpielfeld[2][2] = 'o'; BSpielfeld[2][2] = true; KIZug = true; } } if(CSpielfeld[1][1] && CSpielfeld[0][1] == 'o' && KIZug == false) //Wenn 2 und 5 belege 8 { if(BSpielfeld[2][1] != true) { CSpielfeld[2][1] = 'o'; BSpielfeld[2][1] = true; KIZug = true; } } if(CSpielfeld[2][2] && CSpielfeld[1][1] == 'o' && KIZug == false) //Wenn 9 und 5 belege 1 { if(BSpielfeld[0][0] != true) { CSpielfeld[0][0] = 'o'; BSpielfeld[0][0] = true; KIZug = true; } } if(CSpielfeld[0][0] && CSpielfeld[2][0] == 'o' && KIZug == false) //Wenn 1 und 7 belege 4 { if(BSpielfeld[1][0] != true) { CSpielfeld[1][0] = 'o'; BSpielfeld[1][0] = true; KIZug = true; } } if(CSpielfeld[2][0] && CSpielfeld[2][2] == 'o' && KIZug == false) // wenn 7 und 9 belege 8 { if(BSpielfeld[2][1] != true) { CSpielfeld[2][1] = 'o'; BSpielfeld[2][1] = true; KIZug = true; } } if(CSpielfeld[2][0] && CSpielfeld[2][1] == 'o' && KIZug == false) // wenn 7 und 8 belege 9 { if(BSpielfeld[2][2] != true) { CSpielfeld[2][2] = 'o'; BSpielfeld[2][2] = true; KIZug = true; } } if(CSpielfeld[2][2] && CSpielfeld[2][1] == 'o' && KIZug == false) // Wenn 9 und 8 belege 7 { if(BSpielfeld[2][0] != true) { CSpielfeld[2][0] = 'o'; BSpielfeld[2][0] = true; KIZug = true; } } if(CSpielfeld[0][2] && CSpielfeld[2][2] == 'o' && KIZug == false) // Wenn 9 und 3 belege 6 { if(BSpielfeld[1][2] != true) { CSpielfeld[1][2] = 'o'; BSpielfeld[1][2] = true; KIZug = true; } } if(CSpielfeld[0][2] && CSpielfeld[0][1] == 'o' && KIZug == false) //Wenn 3 und 2 belege 1 { if(BSpielfeld[0][0] != true) { CSpielfeld[0][0] = 'o'; BSpielfeld[0][0] = true; KIZug = true; } } if(CSpielfeld[0][2] && CSpielfeld[1][1] == 'o' && KIZug == false) //Wenn 5 und 3 belege 7 { if(BSpielfeld[2][0] != true) { CSpielfeld[2][0] = 'o'; BSpielfeld[2][0] = true; KIZug = true; } } if(CSpielfeld[0][0] && CSpielfeld[0][1] == 'x' && KIZug == false) //Wenn 1 und 2 belege 3 { if(BSpielfeld[0][2] != true) { CSpielfeld[0][2] = 'o'; BSpielfeld[0][2] = true; KIZug = true; } } if(CSpielfeld[2][0] && CSpielfeld[1][1] == 'x' && KIZug == false) //Wenn 7 und 5 belege 3 { if(BSpielfeld[0][2] != true) { CSpielfeld[0][2] = 'o'; BSpielfeld[0][2] = true; KIZug = true; } } if(CSpielfeld[0][0] && CSpielfeld[1][0] == 'x' && KIZug == false) //Wenn 1 und 4 belege 7 { if(BSpielfeld[2][0] != true) { CSpielfeld[2][0] = 'o'; BSpielfeld[2][0] = true; KIZug = true; } } if(CSpielfeld[2][0] && CSpielfeld[1][0] == 'x' && KIZug == false) //Wenn 7 und 4 belege 1 { if(BSpielfeld[2][2] != true) { CSpielfeld[2][2] = 'o'; BSpielfeld[2][2] = true; KIZug = true; } } if(CSpielfeld[1][1] && CSpielfeld[0][1] == 'x' && KIZug == false) //Wenn 2 und 5 belege 8 { if(BSpielfeld[2][1] != true) { CSpielfeld[2][1] = 'o'; BSpielfeld[2][1] = true; KIZug = true; } } if(CSpielfeld[2][2] && CSpielfeld[1][1] == 'x' && KIZug == false) //Wenn 9 und 5 belege 1 { if(BSpielfeld[0][0] != true) { CSpielfeld[0][0] = 'o'; BSpielfeld[0][0] = true; KIZug = true; } } if(CSpielfeld[0][0] && CSpielfeld[2][0] == 'x' && KIZug == false) //Wenn 1 und 7 belege 4 { if(BSpielfeld[1][0] != true) { CSpielfeld[1][0] = 'o'; BSpielfeld[1][0] = true; KIZug = true; } } if(CSpielfeld[2][0] && CSpielfeld[2][2] == 'x' && KIZug == false) // wenn 7 und 9 belege 8 { if(BSpielfeld[2][1] != true) { CSpielfeld[2][1] = 'o'; BSpielfeld[2][1] = true; KIZug = true; } } if(CSpielfeld[2][0] && CSpielfeld[2][1] == 'x' && KIZug == false) // wenn 7 und 8 belege 9 { if(BSpielfeld[2][2] != true) { CSpielfeld[2][2] = 'o'; BSpielfeld[2][2] = true; KIZug = true; } } if(CSpielfeld[2][2] && CSpielfeld[2][1] == 'x' && KIZug == false) // Wenn 9 und 8 belege 7 { if(BSpielfeld[2][0] != true) { CSpielfeld[2][0] = 'o'; BSpielfeld[2][0] = true; KIZug = true; } } if(CSpielfeld[0][2] && CSpielfeld[2][2] == 'x' && KIZug == false) // Wenn 9 und 3 belege 6 { if(BSpielfeld[1][2] != true) { CSpielfeld[1][2] = 'o'; BSpielfeld[1][2] = true; KIZug = true; } } if(CSpielfeld[0][2] && CSpielfeld[0][1] == 'x' && KIZug == false) //Wenn 3 und 2 belege 1 { if(BSpielfeld[0][0] != true) { CSpielfeld[0][0] = 'o'; BSpielfeld[0][0] = true; KIZug = true; } } if(CSpielfeld[0][0] && CSpielfeld[0][2] == 'x' && KIZug == false) //Wenn 1 und 3 belege 2 { if(BSpielfeld[0][1] != true) { CSpielfeld[0][1] = 'o'; BSpielfeld[0][1] = true; KIZug = true; } } /* Hier kämen die anderen Abfragen rein, alle vorherigen in eine if Abfrage des levels gepackt, aber da es noch nicht klappt, hab ich die fürs erste wegelassen. */ // ab hier der Test, ob man vielleicht bereits gewonnen hat if((CSpielfeld[0][0] == 'x' && CSpielfeld[0][1] == 'x' && CSpielfeld[0][2] == 'x') || (CSpielfeld[1][0] == 'x' && CSpielfeld[1][1] == 'x' && CSpielfeld[1][2] == 'x') || (CSpielfeld[2][0] == 'x' && CSpielfeld[2][1] == 'x' && CSpielfeld[2][2] == 'x') || (CSpielfeld[0][0] == 'x' && CSpielfeld[1][0] == 'x' && CSpielfeld[2][0] == 'x') || (CSpielfeld[0][1] == 'x' && CSpielfeld[1][1] == 'x' && CSpielfeld[2][1] == 'x') || (CSpielfeld[0][2] == 'x' && CSpielfeld[1][2] == 'x' && CSpielfeld[2][2] == 'x') || (CSpielfeld[0][0] == 'x' && CSpielfeld[1][1] == 'x' && CSpielfeld[2][2] == 'x') || (CSpielfeld[2][0] == 'x' && CSpielfeld[1][1] == 'x' && CSpielfeld[0][2] == 'x')) { cout << " | |\n"; cout << " " << CSpielfeld[0][0] << " | " << CSpielfeld[0][1] << " | " << CSpielfeld[0][2] << "\n"; cout << "------------\n"; cout << " | |\n"; cout << " " << CSpielfeld[1][0] << " | " << CSpielfeld[1][1] << " | " << CSpielfeld[1][2] << "\n"; cout << "------------\n"; cout << " | |\n"; cout << " " << CSpielfeld[2][0] << " | " << CSpielfeld[2][1] << " | " << CSpielfeld[2][2] << "\n"; cout << "Sie haben gewonnen, neues Spiel? (1 fuer Ja oder 0 fuer Nein): "; bool neuesSpiel; cin >> neuesSpiel; if(neuesSpiel == true) { CSpielfeld[0][0] = '1'; CSpielfeld[0][1] = '2'; CSpielfeld[0][2] = '3'; CSpielfeld[1][0] = '4'; CSpielfeld[1][1] = '5'; CSpielfeld[1][2] = '6'; CSpielfeld[2][0] = '7'; CSpielfeld[2][1] = '8'; CSpielfeld[2][2] = '9'; BSpielfeld[0][0] = false; BSpielfeld[0][1] = false; BSpielfeld[0][2] = false; BSpielfeld[1][0] = false; BSpielfeld[1][1] = false; BSpielfeld[1][2] = false; BSpielfeld[2][0] = false; BSpielfeld[2][1] = false; BSpielfeld[2][2] = false; KIZug = false; cout << "\n"; } else { cout << "Bis bald!\n"; loop = true; } } if((CSpielfeld[0][0] == 'o' && CSpielfeld[0][1] == 'o' && CSpielfeld[0][2] == 'o') || (CSpielfeld[1][0] == 'o' && CSpielfeld[1][1] == 'o' && CSpielfeld[1][2] == 'o') || (CSpielfeld[2][0] == 'o' && CSpielfeld[2][1] == 'o' && CSpielfeld[2][2] == 'o') || (CSpielfeld[0][0] == 'o' && CSpielfeld[1][0] == 'o' && CSpielfeld[2][0] == 'o') || (CSpielfeld[0][1] == 'o' && CSpielfeld[1][1] == 'o' && CSpielfeld[2][1] == 'o') || (CSpielfeld[0][2] == 'o' && CSpielfeld[1][2] == 'o' && CSpielfeld[2][2] == 'o') || (CSpielfeld[0][0] == 'o' && CSpielfeld[1][1] == 'o' && CSpielfeld[2][2] == 'o') || (CSpielfeld[2][0] == 'o' && CSpielfeld[1][1] == 'o' && CSpielfeld[0][2] == 'o')) { cout << " | |\n"; cout << " " << CSpielfeld[0][0] << " | " << CSpielfeld[0][1] << " | " << CSpielfeld[0][2] << "\n"; cout << "------------\n"; cout << " | |\n"; cout << " " << CSpielfeld[1][0] << " | " << CSpielfeld[1][1] << " | " << CSpielfeld[1][2] << "\n"; cout << "------------\n"; cout << " | |\n"; cout << " " << CSpielfeld[2][0] << " | " << CSpielfeld[2][1] << " | " << CSpielfeld[2][2] << "\n"; cout << "Sie haben verloren, neues Spiel? (1 fuer Ja oder 0 fuer Nein): "; bool neuesSpiel; cin >> neuesSpiel; if(neuesSpiel == true) { CSpielfeld[0][0] = '1'; CSpielfeld[0][1] = '2'; CSpielfeld[0][2] = '3'; CSpielfeld[1][0] = '4'; CSpielfeld[1][1] = '5'; CSpielfeld[1][2] = '6'; CSpielfeld[2][0] = '7'; CSpielfeld[2][1] = '8'; CSpielfeld[2][2] = '9'; BSpielfeld[0][0] = false; BSpielfeld[0][1] = false; BSpielfeld[0][2] = false; BSpielfeld[1][0] = false; BSpielfeld[1][1] = false; BSpielfeld[1][2] = false; BSpielfeld[2][0] = false; BSpielfeld[2][1] = false; BSpielfeld[2][2] = false; KIZug = false; cout << "\n"; } else { cout << "Bis bald!\n"; loop = true; } } } }