projekt kartkowych piłkarzyków na surowo

0

Hej, stworzyłem sobie taki prosty programik i mam problem z zaimplementowaniem swojego pomysłu do rzeczywistośći. Chciałbym, żebyście mi doradzili jeśli możecie co robie źle w moim projekcie, może musze go całkowicie przebudować bardzo mi sie przyda pomoc, bo bardzo bym chciał zagrać sobie w gre piłkarzyki na kartce tylko, że w odsłonie tekstowej z reprezentacją przez same liczby. Komputer nie jest dla mnie wyzwaniem, znalazłem mase profesjonalnych programów napisanych pod tą gre, ale rozwalam każdy nawet na poziomie hardkore, dlatego chce sam ze sobą grać na wersji bardzo surowej i może spróbować przez ten program szukać nowych świetnych ruchów. Już w innym wątku już głowiliśmy sie nad tym problemem ale bardzo niezrozumiale przedstawiłem swój pomysł, dlatego mam tutaj kilka skrinów mojego projektu oraz kod:

#include <iostream>
using namespace std;

int main()
{
    int dir = 0;
    int x=6, y=4, z=0; // wartosci ustawione na srodek planszy, kierunek(Z) domyslnie na 1(polnocny-wschod)


    //tam gdzie sa 1 tam sa zablokowane pola i niedozwolone ruchy //////////////////////// kazde pole ma swoje wspolrzedne X, Y a Os Z to kierunki wychodzace z kazdego punktu
    //plansza jest ulozona od gory do dolu tak jak sie na nia patrzy na kurniku, wymiary 13x9, bramki sa u samej gory skladaja sie z 3-ech punktow trafienie w nie oznacza koniec gry
    //wszystko reprezentuja liczby, nie ma tu grafiki
    int Board[13][9][8] = {

        {{1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1},{1,1,0,1,1,1,1,1},{0,0,0,0,0,0,0,0},{1,1,1,1,0,1,1,1},{1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1}},
        {{1,1,0,1,1,1,1,1},{1,1,0,0,0,1,1,1},{1,1,0,0,0,1,1,1},{0,0,0,0,0,1,1,1},{0,0,0,0,0,0,0,0},{1,1,0,0,0,0,0,1},{1,1,0,0,0,1,1,1},{1,1,0,0,0,1,1,1},{1,1,1,1,0,1,1,1}},
        {{0,0,0,1,1,1,1,1},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{1,1,1,1,0,0,0,1},{1,1,1,1,0,0,0,1}},
        {{0,0,0,1,1,1,1,1},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{1,1,1,1,0,0,0,1},{1,1,1,1,0,0,0,1}},
        {{0,0,0,1,1,1,1,1},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{1,1,1,1,0,0,0,1},{1,1,1,1,0,0,0,1}},
        {{0,0,0,1,1,1,1,1},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{1,1,1,1,0,0,0,1},{1,1,1,1,0,0,0,1}},
        {{0,0,0,1,1,1,1,1},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{1,1,1,1,0,0,0,1},{1,1,1,1,0,0,0,1}},
        {{0,0,0,1,1,1,1,1},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{1,1,1,1,0,0,0,1},{1,1,1,1,0,0,0,1}},
        {{0,0,0,1,1,1,1,1},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{1,1,1,1,0,0,0,1},{1,1,1,1,0,0,0,1}},
        {{0,0,0,1,1,1,1,1},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{1,1,1,1,0,0,0,1},{1,1,1,1,0,0,0,1}},
        {{0,0,0,1,1,1,1,1},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{1,1,1,1,0,0,0,1},{1,1,1,1,0,0,0,1}},
        {{0,1,1,1,1,1,1,1},{0,1,1,1,1,1,0,0},{0,1,1,1,1,1,0,0},{0,0,0,1,1,1,0,0},{0,0,0,0,0,0,0,0},{0,0,0,1,1,1,0,0},{0,1,1,1,1,1,0,0},{0,1,1,1,1,1,0,0},{1,1,1,1,1,1,0,1}},
        {{1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1},{0,1,1,1,1,1,1,1},{0,0,0,0,0,0,0,0},{1,1,1,1,1,1,0,1},{1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1},{1,1,1,1,1,1,1,1}}

    };


    //                      //Wypisanie ////////////////////////////// tablicy tak dla sprawdzenia

    start://goto jest uzyta tylko do zapetlenia rozgrywki czyli do startu i do przerywania, zakonczenia, bo nie wymysilem lepszego sposobu

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

        for(int j=0; j<9; j++)
        {
            for(int k=0; k<8; k++)
            {
                cout << Board[i][j][k] << " ";
            }
            cout << " ";

        }
        cout << "\n";
    }
    //*/



    //mechanika, inne dzialanie dla kazdego kierunku LOGIKA ////////////////////////////////////////
    if(Board[x][y][z] == 1) goto the_end;



    z = z*0; //wyzerowanie Z dla nowego kierunku

    //pobranie kierunku ruchu od 1-8
    cin >> dir;



    //kierunek polnocny-wschod oznaczony numerem 1
    if(dir == 1)
    {
        //tutaj nie wpisuje Z bo domyslnie jest na 0

        Board[x][y][z] += 1;
        //od razu po wpisaniu w komorke oddanego ruchu, wspolrzedne zmieniaja sie zgodnie z kierunkiem
        //polnocno-wschodnim
        x--;
        y++;
        //ruch w poludniowy zachod nie moze byc wykonany w sasiedniej komorce dlatego od razu jest tutaj oznaczany jako 1 czyli niedozwolony po wykonaniu ruchu polnoc-wschod
        //przy probie powrotu z sasiedniej komorki przez ruch 5(poludniowy-zachod) do tej w ktorej wpisalismy ruch polnoc-wschod to powinno zakonczyc program
        Board[x][y][z+4] += 1;
        goto start;
    }

    //kierunek wschod oznaczony numerem 2
    if(dir == 2)
    {
        z+=1; //mniejsza liczba o 1 od dir ze wzgledu na notacje amerykanska liczona od 0 ale to te same kierunki tak naprawde
        Board[x][y][z] += 1;
        y++;
        z=z*0;
        Board[x][y][z+5] += 1;
        goto start;
    }

    //kierunek poludniowy-wschod
    if(dir == 3)
    {
        z+=2;
        Board[x][y][z] += 1;
        x++;
        y++;
        Board[x][y][z+6] += 1;
        goto start;
    }

    //kierunek poludniowy
    if(dir == 4)
    {
        z+=3;
        Board[x][y][z] += 1;
        x++;
        Board[x][y][z+7] += 1;
        goto start;
    }

    //kierunek poludniowy
    if(dir == 5)
    {
        z+=4;
        Board[x][y][z] += 1;
        x++;
        y--;
        Board[x][y][z+0] += 1;
        goto start;
    }

    //kierunek zachodni
    if(dir == 6)
    {
        z+=5;
        Board[x][y][z] += 1;
        y--;
        z=z*0;
        Board[x][y][z+1] += 1;
        goto start;
    }

    //tutaj brakuje jeszcze dwóch kiernków 7 i 8
    //nie robilem ich bo szwankuje logika i najpierw głowie sie jak rozwiazać ten problem zanim dokoncze

    the_end:

    return 0;
}

1

Moja rada zacznij od nowa. najlepiej od podstaw, bez goto.
Naucz się używać klas.
Dziel kod na dużo małych funkcji.

Długa droga przed tobą, zanim to będzie miało ręce i nogi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1