Advertisement
MeehoweCK

Untitled

Apr 25th, 2021
820
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.71 KB | None | 0 0
  1. #include <iostream>
  2. #include <conio.h>
  3.  
  4. using namespace std;
  5.  
  6. short plansza[3][3];
  7.  
  8. void wyzeruj_plansze()
  9. {
  10.     for(short i = 0; i < 3; ++i)
  11.         for(short j = 0; j < 3; ++j)
  12.             plansza[i][j] = 0;
  13. }
  14.  
  15. void wypisz_plansze()
  16. {
  17.     // 0 - pole puste, 1 - X, -1 - O
  18.     for(short i = 1; i <= 3; ++i)
  19.     {
  20.         cout << '\t' << i << '.';
  21.     }
  22.     cout << endl;
  23.     for(short i = 0; i < 3; ++i)
  24.     {
  25.         cout << i + 1 << ".\t";
  26.         for(short j = 0; j < 3; ++j)
  27.         {
  28.             switch(plansza[i][j])
  29.             {
  30.             case 1:
  31.                 cout << "X\t";
  32.                 break;
  33.             case -1:
  34.                 cout << "O\t";
  35.                 break;
  36.             default:
  37.                 cout << " \t";
  38.             }
  39.         }
  40.         cout << endl;
  41.     }
  42. }
  43.  
  44. short gra_koniec()
  45. {
  46.     // 1 - wygrana gracza 1.
  47.     // -1 - wygrana gracza 2.
  48.     // 0 - gra kontynuowana
  49.     // 2 - remis
  50.     short suma;
  51.  
  52.     // sprawdzanie wierszy:
  53.     for(short i = 0; i < 3; ++i)
  54.     {
  55.         suma = 0;
  56.         for(short j = 0; j < 3; ++j)
  57.             suma += plansza[i][j];
  58.         if(suma == 3)
  59.             return 1;       // wygrana gracza 1.
  60.         if(suma == -3)
  61.             return -1;      // wygrana gracza 2.
  62.     }
  63.  
  64.     // sprawdzanie kolumn:
  65.     for(short i = 0; i < 3; ++i)
  66.     {
  67.         suma = 0;
  68.         for(short j = 0; j < 3; ++j)
  69.             suma += plansza[j][i];
  70.         if(suma == 3)
  71.             return 1;       // wygrana gracza 1.
  72.         if(suma == -3)
  73.             return -1;      // wygrana gracza 2.
  74.     }
  75.  
  76.     // sprawdzanie przekątnej głównej:
  77.     suma = 0;
  78.     for(short i = 0; i < 3; ++i)
  79.         suma += plansza[i][i];
  80.     if(suma == 3)
  81.         return 1;       // wygrana gracza 1.
  82.     if(suma == -3)
  83.         return -1;      // wygrana gracza 2.
  84.  
  85.     // sprawdzenie drugiej przekątnej:
  86.     suma = 0;
  87.     for(short i = 0; i < 3; ++i)
  88.         suma += plansza[i][2-i];
  89.     if(suma == 3)
  90.         return 1;       // wygrana gracza 1.
  91.     if(suma == -3)
  92.         return -1;      // wygrana gracza 2.
  93.  
  94.     for(short i = 0; i < 3; ++i)
  95.         for(short j = 0; j < 3; ++j)
  96.             if(plansza[i][j] == 0)
  97.                 return 0;   // gra kontynuowana
  98.     return 2;       // remis
  99. }
  100.  
  101. void gra(string g1, string g2)
  102. {
  103.     short x, y;
  104.     bool flaga;
  105.     while(gra_koniec() == 0)
  106.     {
  107.         // ruch gracza 1:
  108.         cout << "Teraz jest ruch gracza " << g1 << ", podaj wspolrzedne, gdzie chcesz postawic X: ";
  109.         flaga = false;
  110.         while(!flaga)
  111.         {
  112.             flaga = true;
  113.             cin >> x >> y;
  114.             while(x < 1 || x > 3 || y < 1 || y > 3)
  115.             {
  116.                 cout << "Wpisales niepoprawne wspolrzedne, wpisz jeszcze raz: ";
  117.                 cin >> x;
  118.                 cin >> y;
  119.             }
  120.             while(plansza[x-1][y-1] != 0)
  121.             {
  122.                 flaga = false;
  123.                 cout << "To pole jest juz zajete, wpisz jeszcze raz: ";
  124.             }
  125.         }
  126.         plansza[x - 1][y - 1] = 1;
  127.  
  128.         if(gra_koniec() != 0)
  129.             break;
  130.  
  131.         system("cls");
  132.         wypisz_plansze();
  133.  
  134.  
  135.         // ruch gracza 2:
  136.         cout << "Teraz jest ruch gracza " << g2 << ", podaj wspolrzedne, gdzie chcesz postawic O: ";
  137.         flaga = false;
  138.         while(!flaga)
  139.         {
  140.             flaga = true;
  141.             cin >> x >> y;
  142.             while(x < 1 || x > 3 || y < 1 || y > 3)
  143.             {
  144.                 cout << "Wpisales niepoprawne wspolrzedne, wpisz jeszcze raz: ";
  145.                 cin >> x;
  146.                 cin >> y;
  147.             }
  148.             while(plansza[x-1][y-1] != 0)
  149.             {
  150.                 flaga = false;
  151.                 cout << "To pole jest juz zajete, wpisz jeszcze raz: ";
  152.             }
  153.         }
  154.         plansza[x - 1][y - 1] = -1;
  155.         system("cls");
  156.         wypisz_plansze();
  157.     }
  158.  
  159.     short wynik = gra_koniec();
  160.     system("cls");
  161.     wypisz_plansze();
  162.     cout << endl;
  163.  
  164.     switch(wynik)
  165.     {
  166.     case 1:
  167.         cout << "Wygrana gracza " << g1 << " (X)!\n";
  168.         break;
  169.     case -1:
  170.         cout << "Wygrana gracza " << g2 << " (O)!\n";
  171.         break;
  172.     case 2:
  173.         cout << "Gra zakonczyla sie remisem\n";
  174.     }
  175. }
  176.  
  177. int main()
  178. {
  179.     cout << "Wpisz imie gracza pierwszego: ";
  180.     string gracz1, gracz2;
  181.     cin >> gracz1;
  182.     cout << "Witaj " << gracz1 << ", masz znak X\n";
  183.     cout << "Wpisz imie gracza drugiego: ";
  184.     cin >> gracz2;
  185.     cout << "Witaj " << gracz2 << ", masz znak O\n";
  186.     wyzeruj_plansze();
  187.     cout << "\nGra za chwile sie rozpocznie, wcisnij dowolny klawisz...";
  188.     _getch();
  189.     system("cls");
  190.     wypisz_plansze();
  191.     gra(gracz1, gracz2);
  192.     return 0;
  193. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement