Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Zapis do pliku

Ostatnio zmodyfikowano 2018-01-06 23:51
Autor Wiadomość
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)?


C/C++
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
class osoba
{
public:
    string imie;
};
void logo() //Nazwa projektu i autor
{
    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";
}
//----------------------------Poczatek--------------------------------
int main()
{
    //--------Zerowanie tablicy---------
    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 ] = ' ';
        }
    }
   
    //-------------menu-----------------
    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" );
   
    //--------wyswietlanie tablicy---------Niema takiej opcji! Wybierz wlasciwa!\n
    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;
        }
        //---------REMIS-----------
        if( remis == 9 )
        {
            cout << "Remis!\n\n";
            break;
        }
        //---------wygrana X-----------
        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;
        }
        //-----------wygrana O------------
       
        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;
        }
        //----------wprowadzanie wspolrzednych-----------
        if( botek == false ) //Gracz vs Gracz
        {
            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 //Gracz vs Bot
        {
            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;
            }
        }
    }
    //------------------------------Koniec-----------------------------------
    cout << "Nacisnij dowolny klawisz aby powrocic do menu . . .\n";
    getch();
    goto L1;
    return 0;
}
P-168437
YooSy
» 2018-01-06 20:36:25
Ten program działa w ogóle tak jak chcesz?
while( win = true )
» Kurs C++ / FAQNajczęściej spotykane bugi często zadawane pytania

O 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.
» Kurs C++Poziom 4 dział kursu
P-168442
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?
P-168443
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.
P-168445
« 1 »
  Strona 1 z 1