Witamy na forum PC Format Zapraszamy do REJESTRACJI


Użytkownicy przeglądający ten wątek: 1 gości

Moja Gra "Kółko i krzyżyk"

#1
Moja Gra "Kółko i krzyżyk"
Witam. Zrobiłem se taką prymitywną gierke (na poziomie pierwszego semestru nauki C++)
Kod:
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
class osoba
{
    public:
    string imie;
};
void logo()                //funkcja wyswietlajaca logo
{
    cout << "------------------------------\n";
    cout << "   ######       ###    ###\n";
    cout << "  ########  ###  ###  ### \n";
    cout << " ###    ### ###   ######  \n";
    cout << " ###    ###        ####   2012\n";
    cout << " ###    ### ###   ######  \n";
    cout << "  ########  ###  ###  ### \n";
    cout << "   ######   ### ###    ###\tby oczy kobry\n";
    cout << "------------------------------\n";
}
void info()
{
    cout << "OiX by oczy kobry v0.4\n\nSkompilowano: 29 Stycznia 2012r.\nAutor: oczykobry94\ne-mail: oczykobry94@gmail.com\n\n";
    cout << "Nacisnij dowolny klawisz aby powrocic do menu. . .\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 - Info\n0 - 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();
        info();
        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;
}
Mam tylko małe pytanko: Czy da sie jakoś upchać te if'y (wygrana X i wygrana O) w pętle?
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#2
RE: Moja Gra "Kółko i krzyżyk"
Witam,
Kod:
#include<stdio.h>

#define w 3
#define k 3
int main()
{
    int i, j, n;
    char map[w][k]={{'X','O','X'},{'O','X','O'},{'O','X','X'}};
    char szukany='X';
    for(i=0;i<w;i++)    //iteracja po wierszach
    {
        n=0;
        for(j=0;j<k;j++)
        {
            if(map[i][j]==szukany)
                n++;
            else
                n=0;
            if(n==3)
                break;
        }
        if(n==3)
        {
            printf("Wygrana %c",szukany);
            return 0;
        }
    }
    for(i=0;i<k;i++)    //iteracja po kolumnach
    {
        n=0;
        for(j=0;j<w;j++)
        {
            if(map[j][i]==szukany)
                n++;
            else
                n=0;
            if(n==3)
                break;
        }
        if(n==3)
        {
            printf("Wygrana %c",szukany);
            return 0;
        }
    }
    for(i=0;i<w-2;i++)    //iteracja po skosie w prawo
    {
        n=0;
        for(j=0;j<k;j++)
        {
            if(map[i+j][j]==szukany)
                n++;
            else
                n=0;
            if(n==3)
                break;
        }
        if(n==3)
        {
            printf("Wygrana %c",szukany);
            return 0;
        }
    }
    for(i=0;i<w-2;i++)    //iteracja po skosie w lewo
    {
        n=0;
        for(j=k-1;j>=0;j--)
        {
            if(map[j-i][j]==szukany)
                n++;
            else
                n=0;
            if(n==3)
                break;
        }
        if(n==3)
        {
            printf("Wygrana %c",szukany);
            return 0;
        }
    }
    return 0;
}
Nie chciało mi się tego pisać w C++.
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#3
RE: Moja Gra "Kółko i krzyżyk"
thx. czy mógłbyś mi jeszcze wytłumaczyć co znaczy #define ? czy można zamiast #define wprowadzić zmienne (lub stałe) w i k o wartości 3?
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#4
RE: Moja Gra "Kółko i krzyżyk"
Koledzy - nie zwróciliście uwagi na najciekawszy problem z tą grą (Oczywiście Szachista odpowiedział na pytanie zadane w poście inicjującym).
A tym problemem jest : jaki ruch ma wykonać "bot" ? Warto poczytać o algorytmie MINIMAX.
Jak już ktoś żyje tyle wiosen co ja to widział kiedyś taki film "WAR GAMES" gdzie "położono" zbuntowany superkomputer zlecając mu próbę wygrania tej gry - jak wiemy - jeśli zachować "żelazną" logikę nie da się tej gry przegrać - tymczasem program oczykobry94 nie zapewnia tego warunku. Wygrałem z kompem za pierwszym podejściem (ale ze mnie geniusz :-) ).
Warto (dla zabawy) poprawić tak program, żeby komp NIE pozwolił wygrać
Piszę poprawnie po polsku
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
Programy: Polecane / Nowe / Inne



Użytkownicy forum szukali:
kółko krzyżyk c++ kodgra kółko i krzyżyk c++kolko krzyzk c++ forumkolko i krzyzyk w ckod kolko i krzyzykkod gry kółko i jrzyżykkod c kółko i krzyżk z komputeremjezyk c++ klko krzezyk kodjak zrobić kółko i krzyżyk w c++ gra w kółko i krzyżyk dla dwóch graczy cpp

Podobne wątki (Moja Gra "Kółko i krzyżyk")
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  AI do gry "Kółko i krzyżyk". Dreamer1x6xX 1 9428 22.05.2015, 08:34
Ostatni post: Szachista
  Kółko i krzyżyk w VBA malinka6656 6 5718 21.01.2014, 18:26
Ostatni post: malinka6656
  [C++]Kółko i krzyżyk, gracz kontra komputer Dregorio 8 7211 18.09.2013, 20:03
Ostatni post: Dregorio

Skocz do: