Kółko i krzyżyk- program przestał działać / sprawdzanie remisu
Ostatnio zmodyfikowano 2013-11-26 17:35
matiko101 Temat założony przez niniejszego użytkownika |
» 2013-11-25 21:26:31 Wiem już gdzie jest problem z tym kółkiem.Zamiast przypisać porównałem wartość, ale jak już pisałem jestem na telefonie i nie mogę tego sprawdzić tzn. Zamiast = dałem == . Zaraz edytuje ten post i napiszę o tej tablicy bo pisząc nie widzę całej twojej wiadomości Kiedy program się nie wyłącza? Z tą tablica to dobry pomysł ale tylko wizualnie ja zrobić czy gdy postawimy znak na 1 to jeden ma zniknąć z prawej tablicy? Chyba wiesz o co chodzi :) |
|
leon_w |
» 2013-11-25 22:00:51 Nie koniecznie musi znikać. Samo wstawienie np po planszy : cout << endl << " 1 | 2 | 3 \n---+---+---\n 4 | 5 | 6 \n---+--+---\n 7 | 8 | 9 \n" << endl; Już dużo daje. A co do zamykania programu, to po while( wybor2 == 't' ); zamiast break daj return 0 i powinno być ok. Jeżeli chcesz to mogę wstawić kod gry z moimi poprawkami. |
|
matiko101 Temat założony przez niniejszego użytkownika |
» 2013-11-25 22:43:13 Jutro od 14 będę mieć czas i spróbuje to zrobić i jak mi nie wyjdzie to ci napiszę i mnie wspomożesz swoim kodem |
|
matiko101 Temat założony przez niniejszego użytkownika |
» 2013-11-26 15:40:27 Zmieniając z break na return 0 nie zobaczyłem różnicy. Co to właściwie dało ? |
|
leon_w |
» 2013-11-26 16:55:50 W sumie masz racje. Pewnie sprawdzałem jak dla getch(). |
|
matiko101 Temat założony przez niniejszego użytkownika |
» 2013-11-26 17:05:51 Stwierdziłem, że pętla, która zrobiłem jest nieskończona (nie wiem czemu) więc wywaliłem wszystkie returny i chce zobaczyć czy warunek się spełnia, ale nie wiem jak to zrobić żeby po ostatnim ruchu kończyła się pętla. Co mam źle ? (najpierw tym się zajmę o potem tą tablicą itd.) #include<iostream> #include<windows.h> #include<cstdio> #include<conio.h> #include<cstdlib> using namespace std; void intro() { cout << " * WITAJ *\n "; Sleep( 500 ); cout << " ** W **\n "; Sleep( 500 ); cout << " *** GRZE ***\n"; Sleep( 500 ); cout << " **** KOLKO ****\n "; Sleep( 500 ); cout << " ***** i **** \n"; Sleep( 500 ); cout << " ****** KRZYZYK ******"; Sleep( 500 ); Sleep( 800 ); system( "cls" ); }
int zasady() { char wybor3; cout << "Pola zaznaczasz za pomoca cyfr od 1 do 9 :\n"; cout << "[1][2][3]\n[4][5][6]\n[7][8][9]\n"; cout << "Dwoch graczy gra na zmiane i ten ktory jako pierwsz umiesci swoje 3 znaki obok siebie poziomo/pionowo/na ukos ten wygrywa ! ;"; cout << "\n\n\n\n\n Jesli chcesz powrocic do menu kliknij [t] a jesli nie dowolny przycisk\n"; wybor3 = getch(); if( wybor3 == 't' ) return 0; else exit( 0 ); } int w( char tab[] ) { int x = 0, y = ' '; while( x <= 10 ) { x++; tab[ x ] = y; } return 0; } int plansza( char tab[] ) { system( "cls" ); for( int i = 1; i <= 9; i++ ) { cout << "" << tab[ i ] << ""; if( i % 3 != 0 ) { cout << " |"; } else { if( i != 9 ) cout << "\n---+---+---\n"; else { cout << endl; } } } cout << endl; return 0; }
bool wygrana( char tab[], char znak ) { if(( tab[ 1 ] == znak ) &&( tab[ 2 ] == znak ) &&( tab[ 3 ] == znak ) ||( tab[ 4 ] == znak ) &&( tab[ 5 ] == znak ) &&( tab[ 6 ] == znak ) ||( tab[ 7 ] == znak ) &&( tab[ 8 ] == znak ) &&( tab[ 9 ] == znak ) ||( tab[ 1 ] == znak ) &&( tab[ 4 ] == znak ) &&( tab[ 7 ] == znak ) ||( tab[ 2 ] == znak ) &&( tab[ 5 ] == znak ) &&( tab[ 8 ] == znak ) ||( tab[ 3 ] == znak ) &&( tab[ 6 ] == znak ) &&( tab[ 9 ] == znak ) ||( tab[ 1 ] == znak ) &&( tab[ 5 ] == znak ) &&( tab[ 9 ] == znak ) ||( tab[ 3 ] == znak ) &&( tab[ 5 ] == znak ) &&( tab[ 7 ] == znak ) ) { cout << " ________________________________________\n"; cout << " | Wygral " << znak << " GRATULACJE !!! |\n"; cout << " ========================================\n"; return true; } else { return false; } }
int ruch( char tab[], string gracz1, string gracz2 ) { int x = 0; char znak; int cyfra = 1; int remis = 1; w( tab ); plansza( tab ); while( x != 8 ) { x++; cout << "Ruch gracza " << gracz1 << ": "; cin >> cyfra; if( tab[ cyfra ] == ' ' ) { tab[ cyfra ] = 'X'; znak = 'X'; plansza( tab ); if( wygrana( tab, znak ) == true ) { cout << "\n\n \n Koniec gry !\n\n\n"; } else if( x == 9 ) { cout << "\n\nREMIS !\n\n"; } } else if(( tab[ cyfra ] == 'X' ) ||( tab[ cyfra ] == 'O' ) ) { cout << "\n Nie oszukuj chciales postawic znak na zajete pole ! \n\n"; } else if(( cyfra > 9 ) ||( cyfra < 1 ) ) cout << "Nie oszukuj chciales postawic na pole ktorego nie ma\n\n"; x++; cout << "Ruch gracza " << gracz2 << ": "; cin >> cyfra; if(( tab[ cyfra ] == ' ' ) ) { tab[ cyfra ] = 'O'; znak = 'O'; plansza( tab ); if( wygrana( tab, znak ) == true ) { cout << "\n\n \n Koniec gry !\n\n\n"; } } else if(( tab[ cyfra ] == 'X' ) ||( tab[ cyfra ] == 'O' ) ) { cout << "\n Nie oszukuj chciales postawic znak na zajete pole ! \n\n"; } else if(( cyfra > 9 ) ||( cyfra < 1 ) ) cout << "Nie oszukuj chciales postawic na pole ktorego nie ma\n\n"; } cout << "Dziala warunek\n"; return 0; }
int main() { string imie1, imie2; int wybor = 0; char wybor2 = 't'; char tab[ 10 ]; do { system( "cls" ); cout << "\n *********************************** "; cout << "\n ****** [Enter] START ******"; cout << "\n **** [Spacja] ZASADY ****"; cout << "\n *** [Esc] KONIEC ***"; cout << "\n ** ** "; cout << "\n ************************ \n\n\n"; wybor = getch(); switch( wybor ) { case 13: system( "cls" ); { cout << "Podaj imie gracza X\n"; cin >> imie1; system( "cls" ); cout << "Podaj imie gracza O\n"; cin >> imie2; ruch( tab, imie1, imie2 ); do { cout << "Jesli chcesz zagrac jeszcze raz napisz [t] a jesli nie dowolny przycisk\n"; cin >> wybor2; } while( wybor2 == 't' ); return 0; break; } case 32: system( "cls" ); zasady(); break; case 27: system( "cls" ); return 0; break; } } while( wybor != 13 ); return 0; }
|
|
leon_w |
» 2013-11-26 17:35:12 while( x != 8 ) Jak byś chciał wykonać następną pętle, to x nadal ma wartość 8, więc pętla się nie wykonuje. Trzeba by np po wciśnięciu t, wartość x wyzerować. Aczkolwiek przedtem też było ok. Przy remisie, return 0; wracało do maina, gdzie pytało czy chcesz zagrać jeszcze raz. Jeśli tak, wracało do ruch() |
|
1 « 2 » |