Zapis do pliku
Ostatnio zmodyfikowano 2018-01-06 23:51
kosciuszko Temat założony przez niniejszego użytkownika |
Zapis do pliku » 2018-01-06 19:22:57 Witam. Co i w jakim miejscu muszę dopisać do tego kodu, żeby po ukończeniu gry(wygranej), do pliku .txt została wyświetlana nazwa gracza i jego wynik (ilość ruchów)? #include <iostream> #include <conio.h> #include <stdlib.h> #include <time.h> using namespace std; class osoba { public: string imie; }; void logo() { cout << "------------------------------\n"; cout << "Projekt 3. Kolko i krzyzyk\n"; cout << "Aleksander Kosciuszko\n"; cout << "------------------------------\n"; } void linia() { cout << "------------------------------\n"; } void niepuste() { cout << "Pole nie jest puste! Wybierz wlasciwe pole!\n"; }
int main() { L1: srand( time( NULL ) ); osoba os1; osoba os2; osoba bot; int remis = 0, a, b; char tab[ 3 ][ 3 ]; bool kolej = false, win = false, botek = false; for( int w = 0; w < 3; w++ ) { for( int k = 0; k < 3; k++ ) { tab[ w ][ k ] = ' '; } } system( "cls" ); logo(); int wyb; cout << "************ MENU ************\n"; cout << "1 - Rozpocznij gre\n2 - Wyjscie\n ->"; cin >> wyb; switch( wyb ) { case 1: system( "cls" ); logo(); cout << "1 - Gracz vs Gracz\n2 - Gracz vs Bot\n ->"; cin >> wyb; switch( wyb ) { case 1: system( "cls" ); logo(); cout << "Podaj imie pierwszego gracza: "; cin >> os1.imie; cout << "Podaj imie drugiej osoby: "; cin >> os2.imie; botek = false; goto L2; case 2: system( "cls" ); logo(); cout << "Podaj imie pierwszego gracza: "; cin >> os1.imie; bot.imie = "BOT"; botek = true; goto L2; default: cout << "Niema takiej opcji! Wybierz wlasciwa!\n"; getch(); goto L1; } case 2: system( "cls" ); logo(); getch(); goto L1; case 0: return 0; default: cout << "Niema takiej opcji! Wybierz wlasciwa!\n"; getch(); goto L1; } system( "cls" ); L2: while( win = true ) { system( "cls" ); logo(); cout << " <W> \n"; cout << " 1 2 3\n"; for( int w = 0; w < 3; w++ ) { if( w == 1 ) cout << " S> " << w + 1 << "|"; else cout << " " << w + 1 << "|"; for( int k = 0; k < 3; k++ ) { cout << tab[ w ][ k ] << "|"; } cout << endl; } if( remis == 9 ) { cout << "Remis!\n\n"; break; } if(( tab[ 0 ][ 0 ] == 'X' ) &&( tab[ 0 ][ 1 ] == 'X' ) &&( tab[ 0 ][ 2 ] == 'X' ) ) { cout << "Wygral X !!!\n\n"; break; } if(( tab[ 1 ][ 0 ] == 'X' ) &&( tab[ 1 ][ 1 ] == 'X' ) &&( tab[ 1 ][ 2 ] == 'X' ) ) { cout << "Wygral X !!!\n\n"; break; } if(( tab[ 2 ][ 0 ] == 'X' ) &&( tab[ 2 ][ 1 ] == 'X' ) &&( tab[ 2 ][ 2 ] == 'X' ) ) { cout << "Wygral X !!!\n\n"; break; } if(( tab[ 0 ][ 0 ] == 'X' ) &&( tab[ 1 ][ 0 ] == 'X' ) &&( tab[ 2 ][ 0 ] == 'X' ) ) { cout << "Wygral X !!!\n\n"; break; } if(( tab[ 0 ][ 1 ] == 'X' ) &&( tab[ 1 ][ 1 ] == 'X' ) &&( tab[ 2 ][ 1 ] == 'X' ) ) { cout << "Wygral X !!!\n\n"; break; } if(( tab[ 0 ][ 2 ] == 'X' ) &&( tab[ 1 ][ 2 ] == 'X' ) &&( tab[ 2 ][ 2 ] == 'X' ) ) { cout << "Wygral X !!!\n\n"; break; } if(( tab[ 0 ][ 2 ] == 'X' ) &&( tab[ 1 ][ 1 ] == 'X' ) &&( tab[ 2 ][ 0 ] == 'X' ) ) { cout << "Wygral X !!!\n\n"; break; } if(( tab[ 0 ][ 0 ] == 'X' ) &&( tab[ 1 ][ 1 ] == 'X' ) &&( tab[ 2 ][ 2 ] == 'X' ) ) { cout << "Wygral X !!!\n\n"; break; } if(( tab[ 0 ][ 0 ] == 'O' ) &&( tab[ 0 ][ 1 ] == 'O' ) &&( tab[ 0 ][ 2 ] == 'O' ) ) { cout << "Wygral O !!!\n\n"; break; } if(( tab[ 1 ][ 0 ] == 'O' ) &&( tab[ 1 ][ 1 ] == 'O' ) &&( tab[ 1 ][ 2 ] == 'O' ) ) { cout << "Wygral O !!!\n\n"; break; } if(( tab[ 2 ][ 0 ] == 'O' ) &&( tab[ 2 ][ 1 ] == 'O' ) &&( tab[ 2 ][ 2 ] == 'O' ) ) { cout << "Wygral O !!!\n\n"; break; } if(( tab[ 0 ][ 0 ] == 'O' ) &&( tab[ 1 ][ 0 ] == 'O' ) &&( tab[ 2 ][ 0 ] == 'O' ) ) { cout << "Wygral O !!!\n\n"; break; } if(( tab[ 0 ][ 1 ] == 'O' ) &&( tab[ 1 ][ 1 ] == 'O' ) &&( tab[ 2 ][ 1 ] == 'O' ) ) { cout << "Wygral O !!!\n\n"; break; } if(( tab[ 0 ][ 2 ] == 'O' ) &&( tab[ 1 ][ 2 ] == 'O' ) &&( tab[ 2 ][ 2 ] == 'O' ) ) { cout << "Wygral O !!!\n\n"; break; } if(( tab[ 0 ][ 2 ] == 'O' ) &&( tab[ 1 ][ 1 ] == 'O' ) &&( tab[ 2 ][ 0 ] == 'O' ) ) { cout << "Wygral O !!!\n\n"; break; } if(( tab[ 0 ][ 0 ] == 'O' ) &&( tab[ 1 ][ 1 ] == 'O' ) &&( tab[ 2 ][ 2 ] == 'O' ) ) { cout << "Wygral O !!!\n\n"; break; } if( botek == false ) { if( kolej == false ) { linia(); cout << os1.imie << " (X):" << endl;; cout << "\tS> "; cin >> a; cout << "\tW> "; cin >> b; a--; b--; if( tab[ a ][ b ] == ' ' ) { tab[ a ][ b ] = 'X'; remis++; } else { niepuste(); getch(); goto L2; } kolej = true; continue; } if( kolej == true ) { linia(); cout << os2.imie << " (O):" << endl; cout << "\tS> "; cin >> a; cout << "\tW> "; cin >> b; a--; b--; if( tab[ a ][ b ] == ' ' ) { tab[ a ][ b ] = 'O'; remis++; } else { niepuste(); getch(); goto L2; } kolej = false; continue; } } else { if( kolej == false ) { linia(); cout << os1.imie << " (X):" << endl;; cout << "\tS> "; cin >> a; cout << "\tW> "; cin >> b; a--; b--; if( tab[ a ][ b ] == ' ' ) { tab[ a ][ b ] = 'X'; remis++; } else { niepuste(); getch(); goto L2; } kolej = true; continue; } if( kolej == true ) { linia(); cout << bot.imie << " (O):" << endl; a = rand() % 3; b = rand() % 3; if( tab[ a ][ b ] == ' ' ) { tab[ a ][ b ] = 'O'; remis++; } else { goto L2; } kolej = false; continue; } } } cout << "Nacisnij dowolny klawisz aby powrocic do menu . . .\n"; getch(); goto L1; return 0; } |
|
YooSy |
» 2018-01-06 20:36:25 Ten program działa w ogóle tak jak chcesz? Najczęściej spotykane bugiO pętlach słyszałeś, bo używasz, więc dla czego używasz goto (łatwo strzelić sobie w kolano)? Użyj debuggera krok po kroku i sprawdź, w którym miejscu należy dopisać kod odpowiedzialny za zapisanie wyniku. Podziel ten spaghetti kod na mniejsze czytelne funkcje. Piszesz w C++, używaj C++ ( <ctime>, <cstdlib>). Używając klasy std::string należy włączyć plik nagłówkowy <string> do projektu. Przez goto ciężko połapać się jak ten kod przebiega. Zapis do pliku: Dołącz plik nagłówkowy <fstream>. Otwórz plik do zapisu . Zapisz dane do pliku. Poziom 4 |
|
kosciuszko Temat założony przez niniejszego użytkownika |
przerobka » 2018-01-06 22:09:16 Mógłbyś mi pomóc w przerobieniu tego kodu, żeby nie było goto? |
|
YooSy |
» 2018-01-06 23:51:46 Nie rozumiem co dzieje się w kodzie. Pisanie od nowa "za ciebie" nie wchodzi w grę.
Spróbuj coś samemu napisać. Opisz na kartce, na jakie kawałki podzieliłbyś kod. Opisz dokładnie, co dana funkcja będzie robić. Możesz spróbować opisać działanie obecnego kodu, a zrozumiesz dlaczego kod trzeba dzielić na małe zrozumiałe fragmenty. |
|
« 1 » |