C++ Kółko i Krzyżyk


(system) #1

Mam Zadanie domowe z C++a , mamy zrobić kółko i krzyżyk, ale poprostu pojawiają się kłopoty

1) nie mogę stosować zmiennych tablicowych bo przy nich komp mi się zawiesza... ale ominąłem to używając zmiennych one, two three itd

Ale niestety to daje mi tyle pisania i powoduje że nie ma sensu stosować pętle

2) Program się gubi... robię sztuczną inteligencję a ona wygrywa.. ok spoko, ale wygrywa dając kułeczko DWA razy w czasie jednej kolejki..........

ktoś może pomóc?

include

include

include

using namespace std;

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

{

start:

int one=2; int two=2; int three=2; int four=2; int five=2;

int six=2; int seven=2; int eight=2; int nine=2;

int i ;

int turn=0; int move=0; int zug=0; int count;

int liczX=0; int liczO=0; int licz=0;

char* space=" ";

srand( (unsigned)time( NULL ) );

cout<

cout<<"Zaczynamy gre! Wybierz opcje gry:"<

cout<<"1) Gram Krzyzykami"<

cout<<"2) Gram Kulkami"<

cout<<"3) Wylosuj kto zaczyna"<

cin>>i;

if (i<=0||i>=4) { cout<<"Blad, zla liczba, sprubuj znowu"<

if (i==1) { cout<<"Jestes Krzyzykiem"<

if (i==2) { cout<<"Jestes Kulkiem"<

if (i==3) { i = rand() % 2;

if (i==0) { cout<<"Jestes Krzyzykiem"<

if (i==1) { cout<<"Jestes Kulkiem"<

}

pokaz:

cout<

cout<

if (one==0) cout<<"X"<

if (two==0) cout<<"X"<

if (three==0) cout<<"X"<

cout<

cout<<" ";

if (four==0) cout<<"X"<<" "; if (four==1) cout<<"O"<<" "; if (four==2) cout<<" "<<" ";

if (five==0) cout<<"X"<<" "; if (five==1) cout<<"O"<<" "; if (five==2) cout<<" "<<" ";

if (six==0) cout<<"X"<<" "; if (six==1) cout<<"O"<<" "; if (six==2) cout<<" "<<" ";

cout<

cout<<" ";

if (seven==0) cout<<"X"<<" "; if (seven==1) cout<<"O"<<" "; if (seven==2) cout<<" "<<" ";

if (eight==0) cout<<"X"<<" "; if (eight==1) cout<<"O"<<" "; if (eight==2) cout<<" "<<" ";

if (nine==0) cout<<"X"<<" "; if (nine==1) cout<<"O"<<" "; if (nine==2) cout<<" "<<" ";

cout<

cout<

if (turn==1) goto turn1;

if (turn==2) goto turn2;

if (turn==3) goto turn3;

if (turn==4) goto turn4;

check1:

cout<<"Twoja Kolej, wybierz pole od 1 do 9"<

cin>>i;

if (i<=0||i>=10) { cout<<"Blad, zla liczba, sprubuj znowu"<

if (i==1) { if (one==2) {one=1;} else { cout<<"Blad, pole zajete, wybierz inne"<

if (i==2) { if (two==2) {two=1;} else { cout<<"Blad, pole zajete, wybierz inne"<

if (i==3) { if (three==2) {three=1;} else { cout<<"Blad, pole zajete, wybierz inne"<

if (i==4) { if (four==2) {four=1;} else { cout<<"Blad, pole zajete, wybierz inne"<

if (i==5) { if (five==2) {five=1;} else { cout<<"Blad, pole zajete, wybierz inne"<

if (i==6) { if (six==2) {six=1;} else { cout<<"Blad, pole zajete, wybierz inne"<

if (i==7) { if (seven==2) {seven=1;} else { cout<<"Blad, pole zajete, wybierz inne"<

if (i==8) { if (eight==2) {eight=1;} else { cout<<"Blad, pole zajete, wybierz inne"<

if (i==9) { if (nine==2) {nine=1;} else { cout<<"Blad, pole zajete, wybierz inne"<

check2:

cout<<"Twoja Kolej, wybierz pole od 1 do 9"<

cin>>i;

if (i<=0||i>=10) { cout<<"Blad, zla liczba, sprubuj znowu"<

if (i==1) { if (one==2) {one=0;} else { cout<<"Blad, pole zajete, wybierz inne"<

if (i==2) { if (two==2) {two=0;} else { cout<<"Blad, pole zajete, wybierz inne"<

if (i==3) { if (three==2) {three=0;} else { cout<<"Blad, pole zajete, wybierz inne"<

if (i==4) { if (four==2) {four=0;} else { cout<<"Blad, pole zajete, wybierz inne"<

if (i==5) { if (five==2) {five=0;} else { cout<<"Blad, pole zajete, wybierz inne"<

if (i==6) { if (six==2) {six=0;} else { cout<<"Blad, pole zajete, wybierz inne"<

if (i==7) { if (seven==2) {seven=0;} else { cout<<"Blad, pole zajete, wybierz inne"<

if (i==8) { if (eight==2) {eight=0;} else { cout<<"Blad, pole zajete, wybierz inne"<

if (i==9) { if (nine==2) {nine=0;} else { cout<<"Blad, pole zajete, wybierz inne"<

if (zug==1) goto zug1;

if (zug==2) goto zug2;

przelicz:

//* win

liczX=0; liczO=0; licz=0;

if (one==0) liczX++; if (one==1) liczO++; if (one==2) licz++;

if (two==0) liczX++; if (two==1) liczO++; if (two==2) licz++;

if (three==0) liczX++; if (three==1) liczO++; if (three==2) licz++;

if (liczX==0||liczO==2) {if (one==2) one=1; if (two==2) two=1; if (three==2) three=1; goto count; }

liczX=0; liczO=0; licz=0;

if (four==0) liczX++; if (four==1) liczO++; if (four==2) licz++;

if (five==0) liczX++; if (five==1) liczO++; if (five==2) licz++;

if (six==0) liczX++; if (six==1) liczO++; if (six==2) licz++;

if (liczX==0||liczO==2) {if (four==2) four=1; if (five==2) five=1; if (six==2) six=1; goto count; }

liczX=0; liczO=0; licz=0;

if (seven==0) liczX++; if (seven==1) liczO++; if (seven==2) licz++;

if (eight==0) liczX++; if (eight==1) liczO++; if (eight==2) licz++;

if (nine==0) liczX++; if (nine==1) liczO++; if (nine==2) licz++;

if (liczX==0||liczO==2) {if (seven==2) seven=1; if (eight==2) eight=1; if (nine==2) nine=1; goto count; }

liczX=0; liczO=0; licz=0;

if (one==0) liczX++; if (one==1) liczO++; if (one==2) licz++;

if (four==0) liczX++; if (four==1) liczO++; if (four==2) licz++;

if (seven==0) liczX++; if (seven==1) liczO++; if (seven==2) licz++;

if (liczX==0||liczO==2) {if (one==2) one=1; if (four==2) four=1; if (seven==2) seven=1; goto count; }

liczX=0; liczO=0; licz=0;

if (two==0) liczX++; if (two==1) liczO++; if (two==2) licz++;

if (five==0) liczX++; if (five==1) liczO++; if (five==2) licz++;

if (eight==0) liczX++; if (eight==1) liczO++; if (eight==2) licz++;

if (liczX==0||liczO==2) {if (two==2) two=1; if (five==2) five=1; if (eight==2) eight=1; goto count; }

liczX=0; liczO=0; licz=0;

if (three==0) liczX++; if (three==1) liczO++; if (three==2) licz++;

if (six==0) liczX++; if (six==1) liczO++; if (six==2) licz++;

if (nine==0) liczX++; if (nine==1) liczO++; if (nine==2) licz++;

if (liczX==0||liczO==2) {if (three==2) three=1; if (six==2) six=1; if (nine==2) nine=1; goto count; }

liczX=0; liczO=0; licz=0;

if (one==0) liczX++; if (one==1) liczO++; if (one==2) licz++;

if (five==0) liczX++; if (five==1) liczO++; if (five==2) licz++;

if (nine==0) liczX++; if (nine==1) liczO++; if (nine==2) licz++;

if (liczX==0||liczO==2) {if (one==2) one=1; if (five==2) five=1; if (nine==2) nine=1; goto count; }

liczX=0; liczO=0; licz=0;

if (three==0) liczX++; if (three==1) liczO++; if (three==2) licz++;

if (five==0) liczX++; if (five==1) liczO++; if (five==2) licz++;

if (seven==0) liczX++; if (seven==1) liczO++; if (seven==2) licz++;

if (liczX==0||liczO==2) {if (three==2) three=1; if (five==2) five=1; if (seven==2) seven=1; goto count; }

//* block

liczX=0; liczO=0; licz=0;

if (one==0) liczX++; if (one==1) liczO++; if (one==2) licz++;

if (two==0) liczX++; if (two==1) liczO++; if (two==2) licz++;

if (three==0) liczX++; if (three==1) liczO++; if (three==2) licz++;

if (liczX==2||liczO==0) {if (one==2) one=1; if (two==2) two=1; if (three==2) three=1; goto count; }

liczX=0; liczO=0; licz=0;

if (four==0) liczX++; if (four==1) liczO++; if (four==2) licz++;

if (five==0) liczX++; if (five==1) liczO++; if (five==2) licz++;

if (six==0) liczX++; if (six==1) liczO++; if (six==2) licz++;

if (liczX==2||liczO==0) {if (four==2) four=1; if (five==2) five=1; if (six==2) six=1; goto count; }

liczX=0; liczO=0; licz=0;

if (seven==0) liczX++; if (seven==1) liczO++; if (seven==2) licz++;

if (eight==0) liczX++; if (eight==1) liczO++; if (eight==2) licz++;

if (nine==0) liczX++; if (nine==1) liczO++; if (nine==2) licz++;

if (liczX==2||liczO==0) {if (seven==2) seven=1; if (eight==2) eight=1; if (nine==2) nine=1; goto count; }

liczX=0; liczO=0; licz=0;

if (one==0) liczX++; if (one==1) liczO++; if (one==2) licz++;

if (four==0) liczX++; if (four==1) liczO++; if (four==2) licz++;

if (seven==0) liczX++; if (seven==1) liczO++; if (seven==2) licz++;

if (liczX==2||liczO==0) {if (one==2) one=1; if (four==2) four=1; if (seven==2) seven=1; goto count; }

liczX=0; liczO=0; licz=0;

if (two==0) liczX++; if (two==1) liczO++; if (two==2) licz++;

if (five==0) liczX++; if (five==1) liczO++; if (five==2) licz++;

if (eight==0) liczX++; if (eight==1) liczO++; if (eight==2) licz++;

if (liczX==2||liczO==0) {if (two==2) two=1; if (five==2) five=1; if (eight==2) eight=1; goto count; }

liczX=0; liczO=0; licz=0;

if (three==0) liczX++; if (three==1) liczO++; if (three==2) licz++;

if (six==0) liczX++; if (six==1) liczO++; if (six==2) licz++;

if (nine==0) liczX++; if (nine==1) liczO++; if (nine==2) licz++;

if (liczX==2||liczO==0) {if (three==2) three=1; if (six==2) six=1; if (nine==2) nine=1; goto count; }

liczX=0; liczO=0; licz=0;

if (one==0) liczX++; if (one==1) liczO++; if (one==2) licz++;

if (five==0) liczX++; if (five==1) liczO++; if (five==2) licz++;

if (nine==0) liczX++; if (nine==1) liczO++; if (nine==2) licz++;

if (liczX==2||liczO==0) {if (one==2) one=1; if (five==2) five=1; if (nine==2) nine=1; goto count; }

liczX=0; liczO=0; licz=0;

if (three==0) liczX++; if (three==1) liczO++; if (three==2) licz++;

if (five==0) liczX++; if (five==1) liczO++; if (five==2) licz++;

if (seven==0) liczX++; if (seven==1) liczO++; if (seven==2) licz++;

if (liczX==2||liczO==0) {if (three==2) three=1; if (five==2) five=1; if (seven==2) seven=1; goto count; }

//* Build

liczX=0; liczO=0; licz=0;

if (one==0) liczX++; if (one==1) liczO++; if (one==2) licz++;

if (five==0) liczX++; if (five==1) liczO++; if (five==2) licz++;

if (nine==0) liczX++; if (nine==1) liczO++; if (nine==2) licz++;

if (liczX==0) {if (one==2) one=1; if (five==2) five=1; if (nine==2) nine=1; goto count; }

liczX=0; liczO=0; licz=0;

if (three==0) liczX++; if (three==1) liczO++; if (three==2) licz++;

if (five==0) liczX++; if (five==1) liczO++; if (five==2) licz++;

if (seven==0) liczX++; if (seven==1) liczO++; if (seven==2) licz++;

if (liczX==0){if (three==2) three=1; if (five==2) five=1; if (seven==2) seven=1; goto count; }

liczX=0; liczO=0; licz=0;

if (one==0) liczX++; if (one==1) liczO++; if (one==2) licz++;

if (two==0) liczX++; if (two==1) liczO++; if (two==2) licz++;

if (three==0) liczX++; if (three==1) liczO++; if (three==2) licz++;

if (liczX==0){if (one==2) one=1; if (two==2) two=1; if (three==2) three=1; goto count; }

liczX=0; liczO=0; licz=0;

if (four==0) liczX++; if (four==1) liczO++; if (four==2) licz++;

if (five==0) liczX++; if (five==1) liczO++; if (five==2) licz++;

if (six==0) liczX++; if (six==1) liczO++; if (six==2) licz++;

if (liczX==0){if (four==2) four=1; if (five==2) five=1; if (six==2) six=1; goto count; }

liczX=0; liczO=0; licz=0;

if (seven==0) liczX++; if (seven==1) liczO++; if (seven==2) licz++;

if (eight==0) liczX++; if (eight==1) liczO++; if (eight==2) licz++;

if (nine==0) liczX++; if (nine==1) liczO++; if (nine==2) licz++;

if (liczX==0){if (seven==2) seven=1; if (eight==2) eight=1; if (nine==2) nine=1; goto count; }

liczX=0; liczO=0; licz=0;

if (one==0) liczX++; if (one==1) liczO++; if (one==2) licz++;

if (four==0) liczX++; if (four==1) liczO++; if (four==2) licz++;

if (seven==0) liczX++; if (seven==1) liczO++; if (seven==2) licz++;

if (liczX==0){if (one==2) one=1; if (four==2) four=1; if (seven==2) seven=1; goto count; }

liczX=0; liczO=0; licz=0;

if (two==0) liczX++; if (two==1) liczO++; if (two==2) licz++;

if (five==0) liczX++; if (five==1) liczO++; if (five==2) licz++;

if (eight==0) liczX++; if (eight==1) liczO++; if (eight==2) licz++;

if (liczX==0){if (two==2) two=1; if (five==2) five=1; if (eight==2) eight=1; goto count; }

liczX=0; liczO=0; licz=0;

if (three==0) liczX++; if (three==1) liczO++; if (three==2) licz++;

if (six==0) liczX++; if (six==1) liczO++; if (six==2) licz++;

if (nine==0) liczX++; if (nine==1) liczO++; if (nine==2) licz++;

if (liczX==0){if (three==2) three=1; if (six==2) six=1; if (nine==2) nine=1; goto count; }

randy:

i = rand() % 9;

if (i==0) { if (one=2) one=1; goto count; }

if (i==1) { if (two=2) two=1; goto count; }

if (i==2) { if (three=2) three=1; goto count; }

if (i==3) { if (four=2) four=1; goto count; }

if (i==4) { if (five=2) five=1; goto count; }

if (i==5) { if (six=2) six=1; goto count; }

if (i==6) { if (seven=2) seven=1; goto count; }

if (i==7) { if (eight=2) eight=1; goto count; }

if (i==8) { if (nine=2) nine=1; goto count; }

goto randy;

count:

if (count==1) goto count1;

poczatekgry1:

//* pierwszy gracz

zug=1;

goto check2;

zug1:

turn=1;

goto pokaz;

turn1:

cout<<"Dobrze, teraz kolej komputera";

cout<

system("PAUSE");

//* Drugi komp

if (i==5) { i = rand() % 4;

if (i==0) one=1;

if (i==1) three=1;

if (i==2) seven=1;

if (i==3) nine=1; }

else five=1;

turn=2;

goto pokaz;

turn2:

//* trzeci, drugi ruch gracza

zug=2;

goto check2;

zug2:

turn=3;

goto pokaz;

turn3:

cout<<"Dobrze, teraz kolej komputera";

cout<

system("PAUSE");

//* czwarty komp po raz drugi

count=1;

goto przelicz;

count1:

turn=4;

goto pokaz;

turn4:

poczatekgry2:

i = rand() % 5;

if (i==0) one=0;

if (i==1) three=0;

if (i==2) five=0;

if (i==3) seven=0;

if (i==4) nine=0;

/* turn=666;

goto pokaz;

turn666: */

system("PAUSE");

return EXIT_SUCCESS;

}

tutaj program spakowany

http://rapidshare.com/files/239147664/T ... e.rar.html


([alex]) #2

Zacznij od przerobienia na tablice enum {Pusto,Krzyzyk,Kolko} tb[3][3];

Dalej pójdzie jak po maśle.


(system) #3

tablice enum? co? nie jestem pewien co masz na myśli, sorry


(Sawyer47) #4

Po polsku typ wyliczeniowy. Tu masz więcej: http://enel.ucalgary.ca/People/Norman/e ... num_types/

Na tablicach jest o wieeele prościej niż na pojedynczych zmiennych, co chyba widzisz po swoim kodzie. Perełka, naprawdę.


(somekind) #5

Zawiesza się, bo pewno źle ich używasz. Użycie tablic tylko Ci ułatwi.

Ja umiem zagrać gamę na gitarze, ale nie nazywałbym tego solówką. Od Twojego algorytmu gry w kółko i krzyżyk do sztucznej inteligencji jest daleko :stuck_out_tongue:

Na przyszłość - kod wklejaj w znaczniki "

", a dłuższy np. tutaj: http://www.wklej.org

I nie używaj goto, tylko podziel program na funkcje.