Zum Inhalt springen

Prple

Mitglieder
  • Gesamte Inhalte

    17
  • Benutzer seit

  • Letzter Besuch

Beiträge von Prple

  1. Ja da muss ich Sascha zustimmen. Hier einfach einen Quellcode zu posten und dann zu erwarten, dass sich jemand die Arbeit macht ihn zu modifizieren, ist eine Frechheit....Ich verstehe solche Menschen manchmal nicht...Könnte der Admin bitte closen?!

  2. //So wir haben es jetzt mit 3 Feldern probiert, bekommen es aber nicht variabel hin....dass man zwischen 3 und 5 Feldern wählen kann....

    #include <cstdlib>

    #include <iostream>

    #include <time.h>

    #include <stdio.h>

    using namespace std;

    /** Hier wird geprüft ob einer der Spieler gewonnen hat wenn der Spieler

    gewonnen hat dann wird 1 zurückgeliefert hat der Computer gewonnen 2

    bei unentschieden 0.

    */

    int gewonnen(char tictactoe[3][3]){

    int sieg = 0;

    // Spieler

    // horizontal

    if(tictactoe[0][0] == 'X' && tictactoe[0][1] == 'X' && tictactoe[0][2] == 'X')sieg = 1;

    if(tictactoe[1][0] == 'X' && tictactoe[1][1] == 'X' && tictactoe[1][2] == 'X')sieg = 1;

    if(tictactoe[2][0] == 'X' && tictactoe[2][1] == 'X' && tictactoe[2][2] == 'X')sieg = 1;

    // vertikal

    if(tictactoe[0][0] == 'X' && tictactoe[1][0] == 'X' && tictactoe[2][0] == 'X')sieg = 1;

    if(tictactoe[0][1] == 'X' && tictactoe[1][1] == 'X' && tictactoe[2][1] == 'X')sieg = 1;

    if(tictactoe[0][2] == 'X' && tictactoe[1][2]== 'X' && tictactoe[2][2] == 'X')sieg = 1;

    // diagonal

    if(tictactoe[0][0] == 'X' && tictactoe[1][1] == 'X' && tictactoe[2][2] == 'X')sieg = 1;

    if(tictactoe[0][2] == 'X' && tictactoe[1][1] == 'X' && tictactoe[2][0] == 'X')sieg = 1;

    // Computer

    // horizontal

    if(tictactoe[0][0] == 'O' && tictactoe[0][1] == 'O' && tictactoe[0][2] == 'O')sieg = 2;

    if(tictactoe[1][0] == 'O' && tictactoe[1][1] == 'O' && tictactoe[1][2] == 'O')sieg = 2;

    if(tictactoe[2][0] == 'O' && tictactoe[2][1] == 'O' && tictactoe[2][2] == 'O')sieg = 2;

    // vertikal

    if(tictactoe[0][0] == 'O' && tictactoe[1][0] == 'O' && tictactoe[2][0] == 'O')sieg = 2;

    if(tictactoe[1][0] == 'O' && tictactoe[1][1] == 'O' && tictactoe[1][1] == 'O')sieg = 2;

    if(tictactoe[0][2] == 'O' && tictactoe[1][2] == 'O' && tictactoe[2][2] == 'O')sieg = 2;

    // diagonal

    if(tictactoe[0][0] == 'O' && tictactoe[1][1] == 'O' && tictactoe[2][2] == 'O')sieg = 2;

    if(tictactoe[0][2] == 'O' && tictactoe[1][1] == 'O' && tictactoe[2][0] == 'O')sieg = 2;

    return sieg;

    }

    /** Es wird geprüft ob das Feld auf den das Zeichen gesetzt werden soll bereits

    belegt ist wenn belegt dann Fehlermeldung ausgeben und zur erneuten Eingabe

    auffordern wenn nicht dann Zeichen setzen

    */

    int feldFrei(int x,int y, char tictactoe[3][3]){

    // Existiert das gewählte Feld? Wenn nicht Abbruch

    if(x < 0 && x < 3 && y<0 && y<3)

    return 0;

    // Wenn Feld belegt

    if(tictactoe[x][y] == 'O' || tictactoe[x][y] == 'X'){

    // return 1 um zu zeigen das das Feld bereits belegt ist

    return 1;

    // Feld ist Frei und kann belegt werden

    }else{

    return 2;

    }

    }

    /** Check ob alle Felder voll wenn dem so ist dann prüfen ob das Spiel unentschieden

    endet oder ob jemand gewonnen hat

    */

    int unentschieden(char tictactoe[3][3]){

    // Alle Felder überprüfen ob noch frei

    for(int i = 0; i < 3; i++){

    for(int j = 0; j < 3; j++){

    if(tictactoe[j] == ' '){

    // Wenn ein Feld Frei ist dann return 9 weil noch nicht unentschieden

    return 4;

    }

    }

    }

    // Sollte die Schleife hier ankommen sind alle Felder belegt

    // prüfen ob jemand gewonnen hat oder ob es wirklich untenschieden ist

    switch(gewonnen(tictactoe)){

    case 1:

    // Der Spieler hat gewonnen

    return 1;

    case 2:

    // Der Computer hat gewonnen

    return 2;

    case 0:

    // wirklich unentschieden

    return 3;

    }

    }

    /** Spiel wird von dem Spieler begonnenn das bedeutet das dieser den 1. Zug

    macht. Danach folgt der PC solange bis einer gewonnen hat oder es im

    unentschieden endet (nachdem alle Felder belegt sind).

    */

    int playerStart(){

    char tictactoe[3][3];

    int beginner,x,y;

    int counter = 0;

    //Zufallsgenerator mit Zeit initialisieren

    srand(time(NULL));

    // Array initialisieren

    for (int i = 0; i < 3; i++)

    for (int j = 0; j < 3; j++)

    tictactoe[j] = ' ';

    do{

    label1:cout << "Bitte setzen Sie Ihr Zeichen.\n\n";

    cout<<"Zeile:";cin>>x;

    cout<<"\n";

    cout<<"Spalte:";cin>>y;

    cout<<"\n";

    // wenn return 2 dann kann das Feld gesetzt werden

    switch(feldFrei(x,y, tictactoe)){

    case 1:

    cout<<"Feld belegt wiederholen sie die Eingabe!\n";

    goto label1;

    break;

    case 2:

    // Feld wird gesetzt

    tictactoe[x][y] = 'X';

    counter++;

    break;

    case 0:

    cout<<"Falsche Eingabe wiederholen sie die Eingabe!\n";

    goto label1;

    break;

    }

    // Ausgabe aktuelles Spielfeld mit Belegung

    for (int i = 0; i < 3; i++){

    cout << " ";

    for (int j = 0; j < 3; j++){

    cout << "|";

    cout << tictactoe[j];

    }

    cout << "|\n";

    }

    cout<<"\n";

    // Check ob gewonnen oder Unentschieden wenn alle Felder voll

    if(unentschieden(tictactoe) == 1){

    cout<<"Sie haben gewonnen!\n";

    // Spielende

    return 1;

    }

    if(unentschieden(tictactoe) == 3){

    cout<<"Unentschieden!\n";

    // Spielende

    return 1;

    }

    // Check ob gewonnen nach jedem Zug es müssen ja nicht alle Felder

    // belegt sein wenn man gewinnt

    if(gewonnen(tictactoe) == 1){

    // Der Spieler hat gewonnen

    cout<<"Sie haben gewonnen!\n";

    // Spiel Ende

    return 1;

    }

    // Zug des Computers

    // Freies Feld finden Abbruch wenn freies Feld gefunden

    do{

    x = rand()%3;

    y = rand()%3;

    }while (tictactoe[x][y] == 'X' || tictactoe[x][y] == 'O');

    // Zeichen des Computers setzen

    tictactoe[x][y] = 'O';

    // Ausgabe aktuelles Spielfeld mit Belegung

    for (int i = 0; i < 3; i++){

    cout << " ";

    for (int j = 0; j < 3; j++){

    cout << "|";

    cout << tictactoe[j];

    }

    cout << "|\n";

    }

    cout<<"\n";

    // Check ob gewonnen oder Unentschieden wenn alle Felder voll

    if(unentschieden(tictactoe) == 2){

    cout<<"Der Computer hat gewonnen!\n";

    // Spielende

    return 1;

    }

    if(unentschieden(tictactoe) == 3){

    cout<<"Unentschieden!\n";

    // Spielende

    return 1;

    }

    // Check ob gewonnen nach jedem Zug es müssen ja nicht alle Felder

    // belegt sein wenn man gewinnt

    if(gewonnen(tictactoe) == 1){

    // Der Computer hat gewonnen

    cout<<"Der Computer hat gewonnen!\n";

    // Spiel Ende

    return 1;

    }

    }while(counter < 10);

    cout<< "Fehler\n";

    }

    /** Spiel wird von dem Computer begonnen. Danach folgt Spieler solange bis einer gewonnen hat oder es im

    unentschieden endet

    */

    int pcStart(){

    char tictactoe[3][3];

    int beginner,x,y;

    int counter = 0;

    //Zufallsgenerator mit Zeit initialisieren

    srand(time(NULL));

    // Array initialisieren

    for (int i = 0; i < 3; i++)

    for (int j = 0; j < 3; j++)

    tictactoe[j] = ' ';

    do{

    // Zug des Computers

    // Freies Feld finden Abbruch wenn freies Feld gefunden

    do{

    x = rand()%3;

    y = rand()%3;

    }while (tictactoe[x][y] == 'X' || tictactoe[x][y] == 'O');

    // Zeichen des Computers setzen

    tictactoe[x][y] = 'O';

    // Ausgabe aktuelles Spielfeld mit Belegung

    for (int i = 0; i < 3; i++){

    cout << " ";

    for (int j = 0; j < 3; j++){

    cout << "|";

    cout << tictactoe[j];

    }

    cout << "|\n";

    }

    cout<<"\n";

    // Check ob gewonnen oder Unentschieden wenn alle Felder voll

    if(unentschieden(tictactoe) == 2){

    cout<<"Der Computer hat gewonnen!\n";

    // Spielende

    return 1;

    }

    if(unentschieden(tictactoe) == 3){

    cout<<"Unentschieden!\n";

    // Spielende

    return 1;

    }

    // Check ob gewonnen nach jedem Zug es müssen ja nicht alle Felder

    // belegt sein wenn man gewinnt

    if(gewonnen(tictactoe) == 2){

    // Der Computer hat gewonnen

    cout<<"Der Coputer hat gewonnen!\n";

    // Spiel Ende

    return 1;

    }

    // Zug des Spielers

    label1:cout << "Bitte setzen Sie Ihr Zeichen.\n\n";

    cout<<"Zeile:";cin>>x;

    cout<<"\n";

    cout<<"Spalte:";cin>>y;

    cout<<"\n";

    // wenn return 2 dann kann das Feld gesetzt werden

    switch(feldFrei(x,y, tictactoe)){

    case 1:

    cout<<"Das Feld ist bereits belegt. Bitte wiederholen sie die Eingabe!\n";

    goto label1;

    break;

    case 2:

    // Feld wird gesetzt

    tictactoe[x][y] = 'X';

    counter++;

    break;

    case 0:

    cout<<"Falsche Eingabe. Bitte wiederholen sie die Eingabe!\n";

    goto label1;

    break;

    }

    // Ausgabe aktuelles Spielfeld mit Belegung

    for (int i = 0; i < 3; i++){

    cout << " ";

    for (int j = 0; j < 3; j++){

    cout << "|";

    cout << tictactoe[j];

    }

    cout << "|\n";

    }

    cout<<"\n";

    // Check ob gewonnen oder Unentschieden wenn alle Felder voll

    if(unentschieden(tictactoe) == 1){

    cout<<"Sie haben gewonnen!\n";

    // Spielende

    return 1;

    }

    if(unentschieden(tictactoe) == 3){

    cout<<"Unentschieden!\n";

    // Spielende

    return 1;

    }

    // Check ob gewonnen nach jedem Zug es müssen ja nicht alle Felder

    // belegt sein wenn man gewinnt

    if(gewonnen(tictactoe) == 1){

    // Der Computer hat gewonnen

    cout<<"Sie haben gewonnen!\n";

    // Spiel Ende

    return 1;

    }

    }while(counter < 10);

    cout<< "Fehler";

    }

    /** Start */

    int main(int argc, char *argv[])

    {

    int beginner, sieger;

    char wdh;

    label1:

    cout<<"Tic Tac Toe - Das Spielfeld\n\n";

    cout<< "0 |x|x|x|x|x|\n";

    cout<< "1 |x|x|x|x|x|\n";

    cout<< "2 |x|x|x|x|x|\n";

    cout<<"\n";

    cout<< " 0 1 2\n\n";

    cout<<"Waehlen Sie aus, wer das Spiel beginnt:\n\n";

    cout<<"1->Spieler\n\n2->Computer\n\n";

    cin>>beginner;

    switch (beginner){

    case 1:

    playerStart();

    break;

    case 2:

    pcStart();

    break;

    default:

    cout << "Falsche Eingabe.\n\n";

    goto label1;

    }

    cout << "Neues Spiel? (j/n):";

    cin >> wdh;

    if(wdh == 'j' || wdh == 'J')

    goto label1;

    system("PAUSE");

    return 0;

    }

  3. Hi,

    hat jemand eine zufällig eine Musterlösung für folgendes Problem:

    Auf einem quadratischen Spielfeld mit n x n Feldern setzen 2 Spieler abwechselnd je einen Stein ihrer Farbe (x oder o). Wer zuerst 3 Steine in einer Reihe, Spalte oder Diagonale setzen kann, gewinnt das Spiel. Erstellen Sie ein C-Programm tictac.c, das dieses Spiel simuliert und schließlich den Gewinner ausgibt.

    Am besten wäre eine einfach Lösung, da wir hier wie die Sau ins Uhrwerk kucken und der Lehrer allzu professionelle Lösungen bemerken würde :)

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...