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

Kółko i krzyżyk- program przestał działać / sprawdzanie remisu

Ostatnio zmodyfikowano 2013-11-26 17:35
Autor Wiadomość
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 :)
P-97500
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.
P-97508
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
P-97518
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 ?
P-97577
leon_w
» 2013-11-26 16:55:50
W sumie masz racje. Pewnie sprawdzałem jak dla getch().
P-97594
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.)
C/C++
#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;
}
P-97597
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()
P-97600
1 « 2 »
Poprzednia strona Strona 2 z 2