C Dreidimensionale Arrays - TicTacToe

cousi

Newbie
Registriert
Mai 2023
Beiträge
2
Hey Liebes Computer-Base Forum,
ich bin ein relativer C-Anfänger und habe TicTacToe mit Dreidimensionalen Arrays geschrieben.
Ich wollte fragen ob es möglich wäre dass wenn ich meinen Code hier reinposte, jemand ihn evtl.
zusammenfässt in irgendeiner Art und Weise weil ich habe 700 Zeilen Code und es fühlt sich nicht richtig an...


C:
#include <stdio.h>
#include "windows.h"

int main() {
    int i, j, counter = 1, gewonnen = 0, setze, a = 1;
    char feld1[7][7], feld2[7][7][2];
    char repeat;
    feld1[0][0] = '\xC9';
    feld1[0][1] = '\xCD';
    feld1[0][2] = '\xCB';
    feld1[0][3] = '\xCD';
    feld1[0][4] = '\xCB';
    feld1[0][5] = '\xCD';
    feld1[0][6] = '\xBB';
    feld1[1][0] = '\xBA';
    feld1[1][1] = '1';
    feld1[1][2] = '\xBA';
    feld1[1][3] = '2';
    feld1[1][4] = '\xBA';
    feld1[1][5] = '3';
    feld1[1][6] = '\xBA';
    feld1[2][0] = '\xCC';
    feld1[2][1] = '\xCD';
    feld1[2][2] = '\xCE';
    feld1[2][3] = '\xCD';
    feld1[2][4] = '\xCE';
    feld1[2][5] = '\xCD';
    feld1[2][6] = '\xB9';
    feld1[3][0] = '\xBA';
    feld1[3][1] = '4';
    feld1[3][2] = '\xBA';
    feld1[3][3] = '5';
    feld1[3][4] = '\xBA';
    feld1[3][5] = '6';
    feld1[3][6] = '\xBA';
    feld1[4][0] = '\xCC';
    feld1[4][1] = '\xCD';
    feld1[4][2] = '\xCE';
    feld1[4][3] = '\xCD';
    feld1[4][4] = '\xCE';
    feld1[4][5] = '\xCD';
    feld1[4][6] = '\xB9';
    feld1[5][0] = '\xBA';
    feld1[5][1] = '7';
    feld1[5][2] = '\xBA';
    feld1[5][3] = '8';
    feld1[5][4] = '\xBA';
    feld1[5][5] = '9';
    feld1[5][6] = '\xBA';
    feld1[6][0] = '\xC8';
    feld1[6][1] = '\xCD';
    feld1[6][2] = '\xCA';
    feld1[6][3] = '\xCD';
    feld1[6][4] = '\xCA';
    feld1[6][5] = '\xCD';
    feld1[6][6] = '\xBC';
    feld2[0][0][0] = '\xC9';//Spielfeld für Zeichen
    feld2[0][1][0] = '\xCD';
    feld2[0][2][0] = '\xCB';
    feld2[0][3][0] = '\xCD';
    feld2[0][4][0] = '\xCB';
    feld2[0][5][0] = '\xCD';
    feld2[0][6][0] = '\xBB';
    feld2[1][0][0] = '\xBA';
    feld2[1][1][0] = ' ';
    feld2[1][2][0] = '\xBA';
    feld2[1][3][0] = ' ';
    feld2[1][4][0] = '\xBA';
    feld2[1][5][0] = ' ';
    feld2[1][6][0] = '\xBA';
    feld2[2][0][0] = '\xCC';
    feld2[2][1][0] = '\xCD';
    feld2[2][2][0] = '\xCE';
    feld2[2][3][0] = '\xCD';
    feld2[2][4][0] = '\xCE';
    feld2[2][5][0] = '\xCD';
    feld2[2][6][0] = '\xB9';
    feld2[3][0][0] = '\xBA';
    feld2[3][1][0] = ' ';
    feld2[3][2][0] = '\xBA';
    feld2[3][3][0] = ' ';
    feld2[3][4][0] = '\xBA';
    feld2[3][5][0] = ' ';
    feld2[3][6][0] = '\xBA';
    feld2[4][0][0] = '\xCC';
    feld2[4][1][0] = '\xCD';
    feld2[4][2][0] = '\xCE';
    feld2[4][3][0] = '\xCD';
    feld2[4][4][0] = '\xCE';
    feld2[4][5][0] = '\xCD';
    feld2[4][6][0] = '\xB9';
    feld2[5][0][0] = '\xBA';
    feld2[5][1][0] = ' ';
    feld2[5][2][0] = '\xBA';
    feld2[5][3][0] = ' ';
    feld2[5][4][0] = '\xBA';
    feld2[5][5][0] = ' ';
    feld2[5][6][0] = '\xBA';
    feld2[6][0][0] = '\xC8';
    feld2[6][1][0] = '\xCD';
    feld2[6][2][0] = '\xCA';
    feld2[6][3][0] = '\xCD';
    feld2[6][4][0] = '\xCA';
    feld2[6][5][0] = '\xCD';
    feld2[6][6][0] = '\xBC';
    feld2[0][0][1] = '\xC9';
    feld2[0][1][1] = '\xCD';
    feld2[0][2][1] = '\xCB';
    feld2[0][3][1] = '\xCD';
    feld2[0][4][1] = '\xCB';
    feld2[0][5][1] = '\xCD';
    feld2[0][6][1] = '\xBB';
    feld2[1][0][1] = '\xBA';//Spielfeld ohne Zeichen
    feld2[1][1][1] = '0';
    feld2[1][2][1] = '\xBA';
    feld2[1][3][1] = '0';
    feld2[1][4][1] = '\xBA';
    feld2[1][5][1] = '0';
    feld2[1][6][1] = '\xBA';
    feld2[2][0][1] = '\xCC';
    feld2[2][1][1] = '\xCD';
    feld2[2][2][1] = '\xCE';
    feld2[2][3][1] = '\xCD';
    feld2[2][4][1] = '\xCE';
    feld2[2][5][1] = '\xCD';
    feld2[2][6][1] = '\xB9';
    feld2[3][0][1] = '\xBA';
    feld2[3][1][1] = '0';
    feld2[3][2][1] = '\xBA';
    feld2[3][3][1] = '0';
    feld2[3][4][1] = '\xBA';
    feld2[3][5][1] = '0';
    feld2[3][6][1] = '\xBA';
    feld2[4][0][1] = '\xCC';
    feld2[4][1][1] = '\xCD';
    feld2[4][2][1] = '\xCE';
    feld2[4][3][1] = '\xCD';
    feld2[4][4][1] = '\xCE';
    feld2[4][5][1] = '\xCD';
    feld2[4][6][1] = '\xB9';
    feld2[5][0][1] = '\xBA';
    feld2[5][1][1] = '0';
    feld2[5][2][1] = '\xBA';
    feld2[5][3][1] = '0';
    feld2[5][4][1] = '\xBA';
    feld2[5][5][1] = '0';
    feld2[5][6][1] = '\xBA';
    feld2[6][0][1] = '\xC8';
    feld2[6][1][1] = '\xCD';
    feld2[6][2][1] = '\xCA';
    feld2[6][3][1] = '\xCD';
    feld2[6][4][1] = '\xCA';
    feld2[6][5][1] = '\xCD';
    feld2[6][6][1] = '\xBC';
    for (i = 0; i <= 6; i++)
    {
        for (j = 0; j <= 6; j++)
        {
            printf("%c", feld1[i][j]);
        }
        printf("\n");
    }
    do {
        do {
            if (counter % 2 != 0) {
                printf("Zur Info, du bist in der Runde : %i\n\n", counter);
                printf("Herzlich Willkommen Spieler 1!\n\nGebe deine Eingabe ein:\t");
                scanf_s("%i", &setze);
                if (setze == 1 && feld2[1][1][1] == '1') {
                    do {
                        printf("Feld Nummer %i besitzt schon ein Zeichen, Bitte W\x84hle ein anderes aus:\t", setze);
                        scanf_s("%i", &setze);
                    } while (setze == 1);
                }
                if (setze == 2 && feld2[1][3][1] == '1') {
                    do {
                        printf("Feld Nummer %i besitzt schon ein Zeichen, Bitte W\x84hle ein anderes aus:\t", setze);
                        scanf_s("%i", &setze);
                    } while (setze == 2);
                }
                if (setze == 3 && feld2[1][5][1] == '1') {
                    do {
                        printf("Feld Nummer %i besitzt schon ein Zeichen, Bitte W\x84hle ein anderes aus:\t", setze);
                        scanf_s("%i", &setze);
                    } while (setze == 3);
                }
                if (setze == 4 && feld2[3][1][1] == '1') {
                    do {
                        printf("Feld Nummer %i besitzt schon ein Zeichen, Bitte W\x84hle ein anderes aus:\t", setze);
                        scanf_s("%i", &setze);
                    } while (setze == 4);
                }
                if (setze == 5 && feld2[3][3][1] == '1') {
                    do {
                        printf("Feld Nummer %i besitzt schon ein Zeichen, Bitte W\x84hle ein anderes aus:\t", setze);
                        scanf_s("%i", &setze);
                    } while (setze == 5);
                }
                if (setze == 6 && feld2[3][5][1] == '1') {
                    do {
                        printf("Feld Nummer %i besitzt schon ein Zeichen, Bitte W\x84hle ein anderes aus:\t", setze);
                        scanf_s("%i", &setze);
                    } while (setze == 6);
                }
                if (setze == 7 && feld2[5][1][1] == '1') {
                    do {
                        printf("Feld Nummer %i besitzt schon ein Zeichen, Bitte W\x84hle ein anderes aus:\t", setze);
                        scanf_s("%i", &setze);
                    } while (setze == 7);
                }
                if (setze == 8 && feld2[5][3][1] == '1') {
                    do {
                        printf("Feld Nummer %i besitzt schon ein Zeichen, Bitte W\x84hle ein anderes aus:\t", setze);
                        scanf_s("%i", &setze);
                    } while (setze == 8);
                }
                if (setze == 9 && feld2[5][5][1] == '1') {
                    do {
                        printf("Feld Nummer %i besitzt schon ein Zeichen, Bitte W\x84hle ein anderes aus:\t", setze);
                        scanf_s("%i", &setze);
                    } while (setze == 9);
                }
                if (setze == 1 && feld2[1][1][1] == '0') {
                    feld2[1][1][1] = '1';
                    feld1[1][1] = 'X';
                    feld2[1][1][0] = 'X';
                    system("CLS");
                    for (i = 0; i <= 6; i++)
                    {
                        for (j = 0; j <= 6; j++)
                        {
                            printf("%c", feld1[i][j]);
                        }
                        printf("\n");
                    }
                    counter++;
                }
                if (setze == 2 && feld2[1][3][1] == '0') {
                    feld2[1][3][1] = '1';
                    feld1[1][3] = 'X';
                    feld2[1][3][0] = 'X';
                    system("CLS");
                    for (i = 0; i <= 6; i++)
                    {
                        for (j = 0; j <= 6; j++)
                        {
                            printf("%c", feld1[i][j]);
                        }
                        printf("\n");
                    }
                    counter++;
                }
                if (setze == 3 && feld2[1][5][1] == '0') {
                    feld2[1][5][1] = '1';
                    feld1[1][5] = 'X';
                    feld2[1][5][0] = 'X';
                    system("CLS");
                    for (i = 0; i <= 6; i++)
                    {
                        for (j = 0; j <= 6; j++)
                        {
                            printf("%c", feld1[i][j]);
                        }
                        printf("\n");
                    }
                    counter++;
                }
                if (setze == 4 && feld2[3][1][1] == '0') {
                    feld2[3][1][1] = '1';
                    feld1[3][1] = 'X';
                    feld2[3][1][0] = 'X';
                    system("CLS");
                    for (i = 0; i <= 6; i++)
                    {
                        for (j = 0; j <= 6; j++)
                        {
                            printf("%c", feld1[i][j]);
                        }
                        printf("\n");
                    }
                    counter++;
                }
                if (setze == 5 && feld2[3][3][1] == '0') {
                    feld2[3][3][1] = '1';
                    feld1[3][3] = 'X';
                    feld2[3][3][0] = 'X';
                    system("CLS");
                    for (i = 0; i <= 6; i++)
                    {
                        for (j = 0; j <= 6; j++)
                        {
                            printf("%c", feld1[i][j]);
                        }
                        printf("\n");
                    }
                    counter++;
                }
                if (setze == 6 && feld2[3][5][1] == '0') {
                    feld2[3][5][1] = '1';
                    feld1[3][5] = 'X';
                    feld2[3][5][0] = 'X';
                    system("CLS");
                    for (i = 0; i <= 6; i++)
                    {
                        for (j = 0; j <= 6; j++)
                        {
                            printf("%c", feld1[i][j]);
                        }
                        printf("\n");
                    }
                    counter++;
                }
                if (setze == 7 && feld2[5][1][1] == '0') {
                    feld2[5][1][1] = '1';
                    feld1[5][1] = 'X';
                    feld2[5][1][0] = 'X';
                    system("CLS");
                    for (i = 0; i <= 6; i++)
                    {
                        for (j = 0; j <= 6; j++)
                        {
                            printf("%c", feld1[i][j]);
                        }
                        printf("\n");
                    }
                    counter++;
                }
                if (setze == 8 && feld2[5][3][1] == '0') {
                    feld2[5][3][1] = '1';
                    feld1[5][3] = 'X';
                    feld2[5][3][0] = 'X';
                    system("CLS");
                    for (i = 0; i <= 6; i++)
                    {
                        for (j = 0; j <= 6; j++)
                        {
                            printf("%c", feld1[i][j]);
                        }
                        printf("\n");
                    }
                    counter++;
                }
                if (setze == 9 && feld2[5][5][1] == '0') {
                    feld2[5][5][1] = '1';
                    feld1[5][5] = 'X';
                    feld2[5][5][0] = 'X';
                    system("CLS");
                    for (i = 0; i <= 6; i++)
                    {
                        for (j = 0; j <= 6; j++)
                        {
                            printf("%c", feld1[i][j]);
                        }
                        printf("\n");
                    }
                    counter++;
                }
                if (setze < 1 || setze > 9) {
                    do {
                        printf("Feld Nummer %i Existiert nicht, Bitte W\x84hle ein anderes aus:\t", setze);
                        scanf_s("%i", &setze);
                    } while (setze < 1 || setze > 9);
                }
                if (feld2[1][1][0] == 'X' && feld2[1][3][0] == 'X' && feld2[1][5][0] == 'X' || feld2[3][1][0] == 'X' && feld2[3][3][0] == 'X' && feld2[3][5][0] == 'X' || feld2[5][1][0] == 'X' && feld2[5][3][0] == 'X' && feld2[5][5][0] == 'X' || feld2[1][1][0] == 'X' && feld2[3][1][0] == 'X' && feld2[5][1][0] == 'X' || feld2[1][3][0] == 'X' && feld2[3][3][0] == 'X' && feld2[5][3][0] == 'X' || feld2[1][5][0] == 'X' && feld2[3][5][0] == 'X' && feld2[5][5][0] == 'X' || feld2[1][1][0] == 'X' && feld2[3][3][0] == 'X' && feld2[5][5][0] == 'X' || feld2[1][5][0] == 'X' && feld2[3][3][0] == 'X' && feld2[5][1][0] == 'X')
                {
                    printf("\n");
                    printf("Spieler 1, Sie haben Gewonnen.\n");
                    printf("Wollen Sie beide nochmal Spielen?\n");
                    printf("J/j f\x81r Ja\n");
                    printf("N/n f\x81r Nein\n");
                    printf("Ihre Wahl lautet: ");
                    repeat = getchar();
                    repeat = getchar();
                    gewonnen++;
                    counter = 1;
                    a--;
                    system("CLS");
                }
                if (counter == 10) {
                    printf("Das Spiel ist zuende!");
                    printf("\n");
                    printf("Wollen Sie beide nochmal Spielen?\n");
                    printf("J/j f\x81r Ja\n");
                    printf("N/n f\x81r Nein\n");
                    printf("Ihre Wahl lautet: ");
                    repeat = getchar();
                    repeat = getchar();
                    if (repeat == 'J' || repeat == 'j') {
                        counter = 1;
                        a--;
                        system("CLS");
                    }

                }
            }
            if (counter % 2 != 1) {
                printf("Zur Info, du bist in der Runde : %i\n\n", counter);
                printf("Herzlich Willkommen Spieler 2!\n\nGebe deine Eingabe ein:\t");
                scanf_s("%i", &setze);
                if (setze == 1 && feld2[1][1][1] == '1') {
                    do {
                        printf("Feld Nummer %i besitzt schon ein Zeichen, Bitte W\x84hle ein anderes aus:\t", setze);
                        scanf_s("%i", &setze);
                    } while (setze == 1);
                }
                if (setze == 2 && feld2[1][3][1] == '1') {
                    do {
                        printf("Feld Nummer %i besitzt schon ein Zeichen, Bitte W\x84hle ein anderes aus:\t", setze);
                        scanf_s("%i", &setze);
                    } while (setze == 2);
                }
                if (setze == 3 && feld2[1][5][1] == '1') {
                    do {
                        printf("Feld Nummer %i besitzt schon ein Zeichen, Bitte W\x84hle ein anderes aus:\t", setze);
                        scanf_s("%i", &setze);
                    } while (setze == 3);
                }
                if (setze == 4 && feld2[3][1][1] == '1') {
                    do {
                        printf("Feld Nummer %i besitzt schon ein Zeichen, Bitte W\x84hle ein anderes aus:\t", setze);
                        scanf_s("%i", &setze);
                    } while (setze == 4);
                }
                if (setze == 5 && feld2[3][3][1] == '1') {
                    do {
                        printf("Feld Nummer %i besitzt schon ein Zeichen, Bitte W\x84hle ein anderes aus:\t", setze);
                        scanf_s("%i", &setze);
                    } while (setze == 5);
                }
                if (setze == 6 && feld2[3][5][1] == '1') {
                    do {
                        printf("Feld Nummer %i besitzt schon ein Zeichen, Bitte W\x84hle ein anderes aus:\t", setze);
                        scanf_s("%i", &setze);
                    } while (setze == 6);
                }
                if (setze == 7 && feld2[5][1][1] == '1') {
                    do {
                        printf("Feld Nummer %i besitzt schon ein Zeichen, Bitte W\x84hle ein anderes aus:\t", setze);
                        scanf_s("%i", &setze);
                    } while (setze == 7);
                }
                if (setze == 8 && feld2[5][3][1] == '1') {
                    do {
                        printf("Feld Nummer %i besitzt schon ein Zeichen, Bitte W\x84hle ein anderes aus:\t", setze);
                        scanf_s("%i", &setze);
                    } while (setze == 8);
                }
                if (setze == 9 && feld2[5][5][1] == '1') {
                    do {
                        printf("Feld Nummer %i besitzt schon ein Zeichen, Bitte W\x84hle ein anderes aus:\t", setze);
                        scanf_s("%i", &setze);
                    } while (setze == 9);
                }
                if (setze == 1 && feld2[1][1][1] == '0') {
                    feld2[1][1][1] = '1';
                    feld1[1][1] = 'O';
                    feld2[1][1][0] = 'O';
                    system("CLS");
                    for (i = 0; i <= 6; i++)
                    {
                        for (j = 0; j <= 6; j++)
                        {
                            printf("%c", feld1[i][j]);
                        }
                        printf("\n");
                    }
                    counter++;
                }
                if (setze == 2 && feld2[1][3][1] == '0') {
                    feld2[1][3][1] = '1';
                    feld1[1][3] = 'O';
                    feld2[1][3][0] = 'O';
                    system("CLS");
                    for (i = 0; i <= 6; i++)
                    {
                        for (j = 0; j <= 6; j++)
                        {
                            printf("%c", feld1[i][j]);
                        }
                        printf("\n");
                    }
                    counter++;
                }
                if (setze == 3 && feld2[3][1][1] == '0') {
                    feld2[1][5][1] = '1';
                    feld1[1][5] = 'O';
                    feld2[1][5][0] = 'O';
                    system("CLS");
                    for (i = 0; i <= 6; i++)
                    {
                        for (j = 0; j <= 6; j++)
                        {
                            printf("%c", feld1[i][j]);
                        }
                        printf("\n");
                    }
                    counter++;
                }
                if (setze == 4 && feld2[3][1][1] == '0') {
                    feld2[3][1][1] = '1';
                    feld1[3][1] = 'O';
                    feld2[3][1][0] = 'O';
                    system("CLS");
                    for (i = 0; i <= 6; i++)
                    {
                        for (j = 0; j <= 6; j++)
                        {
                            printf("%c", feld1[i][j]);
                        }
                        printf("\n");
                    }
                    counter++;
                }
                if (setze == 5 && feld2[3][3][1] == '0') {
                    feld2[3][3][1] = '1';
                    feld1[3][3] = 'O';
                    feld2[3][3][0] = 'O';
                    system("CLS");
                    for (i = 0; i <= 6; i++)
                    {
                        for (j = 0; j <= 6; j++)
                        {
                            printf("%c", feld1[i][j]);
                        }
                        printf("\n");
                    }
                    counter++;
                }
                if (setze == 6 && feld2[3][5][1] == '0') {
                    feld2[3][5][1] = '1';
                    feld1[3][5] = 'O';
                    feld2[3][5][0] = 'O';
                    system("CLS");
                    for (i = 0; i <= 6; i++)
                    {
                        for (j = 0; j <= 6; j++)
                        {
                            printf("%c", feld1[i][j]);
                        }
                        printf("\n");
                    }
                    counter++;
                }
                if (setze == 7 && feld2[5][1][1] == '0') {
                    feld2[5][1][1] = '1';
                    feld1[5][1] = 'O';
                    feld2[5][1][0] = 'O';
                    system("CLS");
                    for (i = 0; i <= 6; i++)
                    {
                        for (j = 0; j <= 6; j++)
                        {
                            printf("%c", feld1[i][j]);
                        }
                        printf("\n");
                    }
                    counter++;
                }
                if (setze == 8 && feld2[5][3][1] == '0') {
                    feld2[5][3][1] = '1';
                    feld1[5][3] = 'O';
                    feld2[5][3][0] = 'O';
                    system("CLS");
                    for (i = 0; i <= 6; i++)
                    {
                        for (j = 0; j <= 6; j++)
                        {
                            printf("%c", feld1[i][j]);
                        }
                        printf("\n");
                    }
                    counter++;
                }
                if (setze == 9 && feld2[5][5][1] == '0') {
                    feld2[5][5][1] = '1';
                    feld1[5][5] = 'O';
                    feld2[5][5][0] = 'O';
                    system("CLS");
                    for (i = 0; i <= 6; i++)
                    {
                        for (j = 0; j <= 6; j++)
                        {
                            printf("%c", feld1[i][j]);
                        }
                        printf("\n");
                    }
                    counter++;
                }
                if (setze < 1 || setze > 9) {
                    do {
                        printf("Feld Nummer %i Existiert nicht, Bitte W\x84hle ein anderes aus:\t", setze);
                        scanf_s("%i", &setze);
                    } while (setze < 1 || setze > 9);
                }
                if (feld2[1][1][0] == 'O' && feld2[1][3][0] == 'O' && feld2[1][5][0] == 'O' || feld2[3][1][0] == 'O' && feld2[3][3][0] == 'O' && feld2[3][5][0] == 'O' || feld2[5][1][0] == 'O' && feld2[5][3][0] == 'O' && feld2[5][5][0] == 'O' || feld2[1][1][0] == 'O' && feld2[3][1][0] == 'O' && feld2[5][1][0] == 'O' || feld2[1][3][0] == 'O' && feld2[3][3][0] == 'O' && feld2[5][3][0] == 'O' || feld2[1][5][0] == 'O' && feld2[3][5][0] == 'O' && feld2[5][5][0] == 'O' || feld2[1][1][0] == 'O' && feld2[3][3][0] == 'O' && feld2[5][5][0] == 'O' || feld2[1][5][0] == 'O' && feld2[3][3][0] == 'O' && feld2[5][1][0] == 'O')
                {
                    printf("\n");
                    printf("Spieler 2, Sie haben Gewonnen.\n");
                    printf("Wollen Sie beide nochmal Spielen?\n");
                    printf("J/j f\x81r Ja\n");
                    printf("N/n f\x81r Nein\n");
                    printf("Ihre Wahl lautet: ");
                    repeat = getchar();
                    repeat = getchar();
                    gewonnen++;
                    counter = 1;
                    a--;
                    system("CLS");

                }
                if (counter == 10) {
                    printf("Das Spiel ist zuende!");
                    printf("\n");
                    printf("Wollen Sie beide nochmal Spielen?\n");
                    printf("J/j f\x81r Ja\n");
                    printf("N/n f\x81r Nein\n");
                    printf("Ihre Wahl lautet: ");
                    repeat = getchar();
                    repeat = getchar();
                    if (repeat == 'J' || repeat == 'j') {
                        counter = 1;
                        a--;
                        system("CLS");
                    }
                }
            }

        } while (counter <= 10 && gewonnen == 0);
        if (a == 0) {
            feld1[1][1] = '1';
            feld1[1][3] = '2';
            feld1[1][5] = '3';
            feld1[3][1] = '4';
            feld1[3][3] = '5';
            feld1[3][5] = '6';
            feld1[5][1] = '7';
            feld1[5][3] = '8';
            feld1[5][5] = '9';
            feld2[1][1][0] = ' ';
            feld2[1][3][0] = ' ';
            feld2[1][5][0] = ' ';
            feld2[3][1][0] = ' ';
            feld2[3][3][0] = ' ';
            feld2[3][5][0] = ' ';
            feld2[5][1][0] = ' ';
            feld2[5][3][0] = ' ';
            feld2[5][5][0] = ' ';
            feld2[1][1][1] = '0';
            feld2[1][3][1] = '0';
            feld2[1][5][1] = '0';
            feld2[3][1][1] = '0';
            feld2[3][3][1] = '0';
            feld2[3][5][1] = '0';
            feld2[5][1][1] = '0';
            feld2[5][3][1] = '0';
            feld2[5][5][1] = '0';
            a++;
            for (i = 0; i <= 6; i++)
            {
                for (j = 0; j <= 6; j++)
                {
                    printf("%c", feld1[i][j]);
                }
                printf("\n");
            }
        }
    } while (repeat == 'J' || repeat == 'j');
    return 0;
}

Ich bedanke mich wirklich herzlich im Vorraus.
Schönen Mittag noch.
 
Du kannst Teile des Codes, die immer gleich sind, wie folgender Code:
C:
system("CLS");
for (i = 0; i <= 6; i++)
{
    for (j = 0; j <= 6; j++)
    {
        printf("%c", feld1[i][j]);
    }
    printf("\n");
}

oder Code, der mehrmals vorkommt, aber sich nur in den konkreten Werten unterscheidet, wie z.B.:

C:
if (setze == 8 && feld2[5][3][1] == '1') {
    do {
        printf("Feld Nummer %i besitzt schon ein Zeichen, Bitte W\x84hle ein anderes aus:\t", setze);
        scanf_s("%i", &setze);
    } while (setze == 8);
}
if (setze == 9 && feld2[5][5][1] == '1') {
    do {
        printf("Feld Nummer %i besitzt schon ein Zeichen, Bitte W\x84hle ein anderes aus:\t", setze);
        scanf_s("%i", &setze);
    } while (setze == 9);
}

in Funktionen auslagern.
Wie das funktioniert, kannst du hier nachlesen: https://de.wikibooks.org/wiki/C-Programmierung:_Funktionen
 
  • Gefällt mir
Reaktionen: cousi
hast du den Code selbst erstellt oder hat dir das ein Tool generiert?

Allein schon solche 4 Zeilen wie

C:
 do {
   printf("Feld Nummer %i besitzt schon ein Zeichen, Bitte W\x84hle ein anderes aus:\t", setze);
   scanf_s("%i", &setze);
} while (setze == 5);

koenntest du in einer Funktion auslagern, wahlweise inklusive der Abfrage.

Die knapp 130 Zeilen um das Feld zu generieren sieht auch grenzwertig aus

Dass dir hier niemand die 700 Zeilen "zusammenfassen wird, sollte klar sein, oder?

Machst du das ganze zum Ueben so fuer dich?
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: AwesomSTUFF
Ich habe den Code vor paar Tagen erstellt und habe um die 8 Stunden dafür gebraucht.
Mir ist und war klar dass mir niemand 700 Zeilen zusammenfassen wird jedoch hab ich versucht eine Antwort wie vom lieben KitKat zu bekommen, der mir schließlich auch weitergeholfen hat.
Genauso möchte ich mich bei BagBag bedanken.
 
  • Gefällt mir
Reaktionen: AwesomSTUFF
Ich verstehe die Herangehensweise nicht so ganz.

Ich meine, du hast 9 Felder, die du über 'setze' ja eh von 1-9 durchindizierst.

Das heißt, zur Speicherung des Spielzustands würde ein ganz schnödes Array
Code:
char feld[9];
ausreichen.

Dann könntest du das Setzen auch in einer einzigen, simplen if-Anweisung prüfen, z.B:
Code:
if(feld[setze]>0) ...

Spielzustand und grafische/textliche Ausgabe sollten immer zwei Paar Schuhe sein, das vereinfacht alles enorm.
 
  • Gefällt mir
Reaktionen: cousi und mibbio
Mal ne blöde Frage:

Tic Tac Toe besteht effektiv aus einer banalen Tabelle mit 3 Zeilen und 3 Spalten. Das sind 2 Dimensionen. Wo kommt denn die 3. Dimension her? 3D Tic Tac Toe wäre ja ein Würfel mit 3x3x3 :confused_alt:

Wie @paulinus schon geschrieben hat, kann man natürlich auch eindimensional mit einem simplen Array mit 9 Elementen arbeiten. Sicher, für die Zuordnung Zeile/Spalte muss man dann ein wenig rumrechnen, aber selbst wenn man unbedingt ein mehrdimensionales Array verwenden möchte, käme ich dennoch nur auf ein 2-dimensionales Array, eine Dimension für besagte Zeilen und die zweite Dimension für die Spalten.
 
  • Gefällt mir
Reaktionen: DefconDev, Madman1209, andy_m4 und eine weitere Person
Raijin schrieb:
c Tac Toe besteht effektiv aus einer banalen Tabelle mit 3 Zeilen und 3 Spalten. Das sind 2 Dimensionen. Wo kommt denn die 3. Dimension her? 3D Tic Tac Toe wäre ja ein Würfel mit 3x3x3 :confused_alt:
Wenn man pro Feld mehr als eine Info abspeichern möchte, und keine structs nutzt/kennt, kommt man recht einfach auf 3 Dimensionen.
 
Die Info, was in dem Feld steht, ist doch im Array-Element enthalten.

Feld-Array [ ] [ ]:

[0][0] - [0][1] - [0][2]
[1][0] - [1][1] - [1][2]
[2][0] - [2][1] - [2][2]

In den Elementen steht dann zB 0 für leer, 1 für x und 2 für o, wenn man ein int-Array nimmt, bei String kann man direkt "", "x" und "o" nehmen.
 
  • Gefällt mir
Reaktionen: Racrine
Zurück
Oben