Kółko i krzyżyk.

0
#include <iostream>
#include <windows.h>
using namespace std;
enum StatusPola {SP_PUSTE = '-', SP_KOLO = 'o', SP_KRZYZ = 'x'};  // 0 : 1 : 2
int main()
{
    StatusPola sp1 = SP_PUSTE;
    StatusPola sp2 = SP_PUSTE;
    StatusPola sp3 = SP_PUSTE;
    StatusPola sp4 = SP_PUSTE;
    StatusPola sp5 = SP_PUSTE;
    StatusPola sp6 = SP_PUSTE;
    StatusPola sp7 = SP_PUSTE;
    StatusPola sp8 = SP_PUSTE;
    StatusPola sp9 = SP_PUSTE;
    int kolejka = 0;
    int pole_kr;
    int pole_ko;
    while(true){
        system("cls");
        cout << (char)sp1 << " " << (char)sp2 << " " << (char)sp3 << "\n";
        cout << (char)sp4 << " " << (char)sp5 << " " << (char)sp6 << "\n";
        cout << (char)sp7 << " " << (char)sp8 << " " << (char)sp9 << "\n";
        if(kolejka == 0){
        cin >> pole_ko;
            switch(pole_ko){
        case 1:
            if (sp1 != SP_KRZYZ){
                sp1 = SP_KOLO;
                kolejka = 1;
            } else {
                kolejka = 0;
            }
            break;
        case 2:
            if (sp2 != SP_KRZYZ){
            sp2 = SP_KOLO;
            kolejka = 1;
            } else {
                kolejka = 0;
            }
            break;
        case 3:
            if (sp3 != SP_KRZYZ){
            sp3 = SP_KOLO;
            kolejka = 1;
            } else {
                kolejka = 0;
            }
            break;
        case 4:
            if (sp4 != SP_KRZYZ){
            sp4 = SP_KOLO;
            kolejka = 1;
            } else {
                kolejka = 0;
            }
            break;
        case 5:
            if (sp5 != SP_KRZYZ){
            sp5 = SP_KOLO;
            kolejka = 1;
            } else {
                kolejka = 0;
            }
            break;
        case 6:
            if (sp6 != SP_KRZYZ){
            sp6 = SP_KOLO;
            kolejka = 1;
            } else {
                kolejka = 0;
            }
            break;
        case 7:
            if (sp7 != SP_KRZYZ){
            sp7 = SP_KOLO;
            kolejka = 1;
            } else {
                kolejka = 0;
            }
            break;
        case 8:
            if (sp8 != SP_KRZYZ){
            sp8 = SP_KOLO;
            kolejka = 1;
            } else {
                kolejka = 0;
            }
            break;
        case 9:
            if (sp9 != SP_KRZYZ){
            sp9 = SP_KOLO;
            kolejka = 1;
            } else {
                kolejka = 0;
            }
            break;
        }
        if((sp1 == SP_KOLO && sp2 == SP_KOLO && sp3 == SP_KOLO) || (sp1 == SP_KOLO && sp5 == SP_KOLO && sp9 == SP_KOLO) || (sp1 == SP_KOLO && sp4 == SP_KOLO && sp7 == SP_KOLO) || (sp2 == SP_KOLO && sp5 == SP_KOLO && sp8 == SP_KOLO) || (sp3 == SP_KOLO && sp5 == SP_KOLO && sp7 == SP_KOLO) || (sp3 == SP_KOLO && sp6 == SP_KOLO && sp9 == SP_KOLO)|| (sp4 == SP_KOLO && sp5 == SP_KOLO && sp6 == SP_KOLO) || (sp7 == SP_KOLO && sp8 == SP_KOLO && sp9 == SP_KOLO)) {
            cout << "KOLO WYGRAL !" <<endl;
            return 0;
            }
        } else if (kolejka == 1){
        cin >> pole_kr;
            switch(pole_kr){
        case 1:
            if (sp1 != SP_KOLO){
            sp1 = SP_KRZYZ;
            kolejka = 0;
            } else {
                kolejka = 1;
            }
            break;
        case 2:
            if (sp2 != SP_KOLO){
            sp2 = SP_KRZYZ;
            kolejka = 0;
            } else {
                kolejka = 1;
            }
            break;
        case 3:
            if (sp3 != SP_KOLO){
            sp3 = SP_KRZYZ;
            kolejka = 0;
            } else {
                kolejka = 1;
            }
            break;
        case 4:
            if (sp4 != SP_KOLO){
            sp4 = SP_KRZYZ;
            kolejka = 0;
            } else {
                kolejka = 1;
            }
            break;
        case 5:
            if (sp5 != SP_KOLO){
            sp5 = SP_KRZYZ;
            kolejka = 0;
            } else {
                kolejka = 1;
            }
            break;
        case 6:
            if (sp6 != SP_KOLO){
            sp6 = SP_KRZYZ;
            kolejka = 0;
            } else {
                kolejka = 1;
            }
            break;
        case 7:
            if (sp7 != SP_KOLO){
            sp7 = SP_KRZYZ;
            kolejka = 0;
            } else {
                kolejka = 1;
            }
            break;
        case 8:
            if (sp8 != SP_KOLO){
            sp8 = SP_KRZYZ;
            kolejka = 0;
            } else {
                kolejka = 1;
            }
            break;
        case 9:
            if (sp9 != SP_KOLO){
            sp9 = SP_KRZYZ;
            kolejka = 0;
            } else {
                kolejka = 1;
            }
            break;
        }
        if((sp1 == SP_KRZYZ && sp2 == SP_KRZYZ && sp3 == SP_KRZYZ) || (sp1 == SP_KRZYZ && sp5 == SP_KRZYZ && sp9 == SP_KRZYZ) || (sp1 == SP_KRZYZ && sp4 == SP_KRZYZ && sp7 == SP_KRZYZ) || (sp2 == SP_KRZYZ && sp5 == SP_KRZYZ && sp8 == SP_KRZYZ) || (sp3 == SP_KRZYZ && sp5 == SP_KRZYZ && sp7 == SP_KRZYZ) || (sp3 == SP_KRZYZ && sp6 == SP_KRZYZ && sp9 == SP_KRZYZ)|| (sp4 == SP_KRZYZ && sp5 == SP_KRZYZ && sp6 == SP_KRZYZ) || (sp7 == SP_KRZYZ && sp8 == SP_KRZYZ && sp9 == SP_KRZYZ)) {
            cout << "KRZYZ WYGRAL !" <<endl;
            return 0;
            }
        }
    }
    return 0;
}

Po przerobieniu podstawowych pojęć (zmienne, podst. funkcji, podst. pętle, trochę konwersji, if-else, typy wyliczeń) z c++ zrobiłem ten oto program (,który działa lecz jest trochę chaotyczny). Co mógłbym poprawić, ewentualnie douczyć się - aby wykonać do czytelniej i "lepiej" ?

3

Teraz zdecydowanie czas poznać tablice.

2

Niech Twoja gra pozwala mi na początku wpisać rozmiar planszy oraz maksymalną liczbę znaków (kółko / krzyżyk), które muszę ułożyć, aby wygrać - powinienem być w stanie utworzyć np. planszę 7x7 z czterema kółkami / krzyżykami w rzędzie do wygrania; spójrz w jaki sposób wpłynie to na projekt Twojej aplikacji :-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1