Alweys

Connect 4

Jan 22nd, 2021 (edited)
108
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <bits/stdc++.h>
  2. #include <windows.h>
  3.  
  4. using namespace std;
  5.  
  6. void ispisiPolje(char* p){
  7.     for(int i = 0; i < 6; i++)
  8.     {
  9.         for(int j = 0; j < 7; j++)
  10.             cout<<*(p+(i*7)+j)<<" ";
  11.         cout<<endl;
  12.     }
  13. }
  14.  
  15. int unosBroja()
  16. {
  17.     int unos;
  18.     do
  19.     {
  20.         cin>>unos;
  21.  
  22.     } while(!(unos >= 0 && unos <= 6));
  23.  
  24.     return unos;
  25. }
  26.  
  27. void ispustiZeton(int igrac, int unos, char *p)
  28. {
  29.     system("CLS");
  30.     char zeton;
  31.     if(igrac == 0)
  32.         zeton = 'C';
  33.     else
  34.         zeton = 'P';
  35.  
  36.     for(int i = 6; i >= 0; i--)
  37.     {
  38.         if(*(p + unos +(i*7)) == 'x' )
  39.         {
  40.             *(p + unos +(i*7)) = zeton;
  41.             break;
  42.         }
  43.     }
  44. }
  45.  
  46. int prebrojiSlobodnaMjesta(char* p)
  47. {
  48.     int a = 0;
  49.     for(int i = 0; i<6; i++)
  50.     {
  51.         for(int j = 0; j<7; j++)
  52.         {
  53.             if(*(p+(i*7)+j)=='x')
  54.                 a++;
  55.         }
  56.     }
  57.     return a;
  58. }
  59.  
  60. int provjeraPobjede(char *p)
  61. {
  62.     for(int i = 0; i<6; i++)
  63.     {
  64.         for(int j = 0; j<7; j++)
  65.         {
  66.             //dijagonale
  67.             if(*(p+(i*7)+j)=='C' && *(p+((i+1)*7)+(j+1)) =='C' && *(p+((i+2)*7)+(j+2))=='C' && *(p+((i+3)*7)+(j+3))=='C')
  68.             {
  69.                 return 1;
  70.             }
  71.             else if(*(p+(i*7)+j)=='P' && *(p+((i+1)*7)+(j+1)) =='P' && *(p+((i+2)*7)+(j+2))=='P' && *(p+((i+3)*7)+(j+3))=='P')
  72.             {
  73.                 return 2;
  74.             }
  75.             else if(*(p+(i*7)+j)=='C' && *(p+((i-1)*7)+(j+1))=='C' && *(p+((i-2)*7)+(j+2))=='C' && *(p+((i-3)*7)+(j+3))=='C')
  76.             {
  77.                 return 1;
  78.             }
  79.             else if(*(p+(i*7)+j)=='P' && *(p+((i-1)*7)+(j+1))=='P' && *(p+((i-2)*7)+(j+2))=='P' && *(p+((i-3)*7)+(j+3))=='P')
  80.             {
  81.                 return 2;
  82.             }
  83.  
  84.             //vertikalno
  85.             else if(*(p+(i*7)+j)=='C' && *(p+((i+1)*7)+j)=='C' && *(p+((i+2)*7)+j)=='C' && *(p+((i+3)*7)+j)=='C')
  86.             {
  87.                 return 1;
  88.             }
  89.             else if(*(p+(i*7)+j)=='P' && *(p+((i+1)*7)+j)=='P' && *(p+((i+2)*7)+j)=='P' && *(p+((i+3)*7)+j)=='P')
  90.             {
  91.                 return 2;
  92.             }
  93.  
  94.             //horizontalno
  95.             else if(*(p+(i*7)+j)=='C' && *(p+(i*7)+(j+1))=='C' && *(p+(i*7)+(j+2))=='C' && *(p+(i*7)+(j+3))=='C')
  96.             {
  97.                 return 1;
  98.             }
  99.             else if(*(p+(i*7)+j)=='P' && *(p+(i*7)+(j+1))=='P' && *(p+(i*7)+(j+2))=='P' && *(p+(i*7)+(j+3))=='P')
  100.             {
  101.                 return 2;
  102.             }
  103.  
  104.             else if(prebrojiSlobodnaMjesta(p) == 0)
  105.             {
  106.                 return -1;
  107.             }
  108.         }
  109.     }
  110. }
  111.  
  112. void provjera(char *p, bool* pKraj)
  113. {
  114.     int a = provjeraPobjede(p);
  115.  
  116.     if(a == 1)
  117.     {
  118.         cout<<"Crveni pobjeduje"<<endl;
  119.         *pKraj = true;
  120.     }
  121.     else if(a == 2)
  122.     {
  123.         cout<<"Plavi pobjeduje"<<endl;
  124.         *pKraj = true;
  125.     }
  126.     else if(a == -1)
  127.     {
  128.         cout<<"Tabla je puna, nema pobjednika"<<endl;
  129.         *pKraj = true;
  130.     }
  131. }
  132.  
  133. int main()
  134. {
  135.     char polje[6][7];
  136.     int kojiIgrac = 0;
  137.     bool kraj = false;
  138.     bool *pKraj = &kraj;
  139.  
  140.     for(int i=0;i<6;i++)
  141.     {
  142.         for(int j=0;j<7;j++)
  143.         {
  144.             polje[i][j] = 'x';
  145.         }
  146.     }
  147.  
  148.     while(!kraj)
  149.     {
  150.         ispisiPolje(&polje[0][0]);
  151.         kojiIgrac = kojiIgrac % 2;
  152.         if(kojiIgrac == 0)
  153.         {
  154.             cout<<"CRVENI"<<endl;
  155.         }
  156.         else
  157.         {
  158.             cout<<"PLAVI"<<endl;
  159.         }
  160.         ispustiZeton(kojiIgrac, unosBroja(), &polje[0][0]);
  161.         provjera(&polje[0][0], pKraj);
  162.         kojiIgrac++;
  163.     }
  164.     ispisiPolje(&polje[0][0]);
  165.  
  166.     return 0;
  167. }
  168.  
RAW Paste Data