Advertisement
Papuger95

Proste "Connect 4" w C++ #2

Apr 1st, 2018
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 15.80 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <tchar.h>
  3. #include <conio.h>
  4. #include <iostream>
  5. #include <Windows.h>
  6. #include <ctime>
  7.  
  8. using namespace std;
  9.  
  10. bool koniec = false;            // pętla główna
  11. bool w_menu = true;             // pętla menu
  12. bool w_grze = true;             // pętla gry
  13. bool gracz1_wykonal = false;
  14. bool gracz2_wykonal = false;
  15.  
  16. int plansza[6][7] =
  17. { { 0, 0, 0, 0, 0 ,0 ,0 },
  18.   { 0, 0, 0, 0, 0 ,0 ,0 },
  19.   { 0, 0, 0, 0, 0 ,0 ,0 },
  20.   { 0, 0, 0, 0, 0 ,0 ,0 },
  21.   { 0, 0, 0, 0, 0 ,0 ,0 },
  22.   { 0, 0, 0, 0, 0 ,0 ,0 } };
  23.  
  24. int postac1 = 11;
  25. int postac2 = 12;
  26. int wybor_menu = 1;
  27.  
  28. void reset()
  29. {
  30.     w_menu = true;
  31.     w_grze = true;
  32.     wybor_menu = 1;
  33.     gracz1_wykonal = false;
  34.     gracz2_wykonal = false;
  35.     for (int y = 0; y < 6; y++)
  36.     {
  37.         for (int x = 0; x < 7; x++)
  38.         {
  39.             plansza[x][y] = 0;
  40.         }
  41.         cout << endl;
  42.     }
  43. }
  44. void rysuj()
  45. {
  46.     system("cls");
  47.     cout << "  " << (char)(186) << " 1  2  3  4  5  6  7 " << (char)(186) << endl;
  48.     cout << "  " << (char)(204) << (char)(205) << (char)(205) << (char)(205) << (char)(205) << (char)(205) << (char)(205) << (char)(205) << (char)(205) << (char)(205) << (char)(205) << (char)(205) << (char)(205) << (char)(205) << (char)(205) << (char)(205) << (char)(205) << (char)(205) << (char)(205) << (char)(205) << (char)(205) << (char)(205) << (char)(185) << endl;
  49.     for (int y = 0; y < 6; y++)
  50.     {
  51.         cout << "  " << (char)(186);
  52.         for (int x = 0; x < 7; x++)
  53.         {
  54.             cout << " ";
  55.             switch (plansza[x][y])
  56.             {
  57.             case 0:
  58.                 cout << " ";
  59.                 break;
  60.             case 11:
  61.                 cout << (char)(1);
  62.                 break;
  63.             case 12:
  64.                 cout << (char)(2);
  65.                 break;
  66.             }
  67.             cout << " ";
  68.         }
  69.         cout << (char)(186) << endl;
  70.     }
  71.     cout << "  " << (char)(204) << (char)(205) << (char)(205) << (char)(205) << (char)(205) << (char)(205) << (char)(205) << (char)(205) << (char)(205) << (char)(205) << (char)(205) << (char)(205) << (char)(205) << (char)(205) << (char)(205) << (char)(205) << (char)(205) << (char)(205) << (char)(205) << (char)(205) << (char)(205) << (char)(205) << (char)(185) << endl;
  72.     cout << "  " << (char)(186) << "                     " << (char)(186) << endl;
  73. }
  74.  
  75. void czy_wygrana()
  76. {
  77.     // wygrane poziome
  78.     for (int a = 0; a < 6; a++)
  79.     {
  80.         for (int b = 0; b < 4; b++)
  81.         {
  82.             if (plansza[0+b][a] + plansza[1+b][a] + plansza[2+b][a] + plansza[3+b][a] == 4 * postac1)
  83.             {
  84.                 cout << " Wygrana " << (char)(1) << endl;
  85.                 Sleep(2500);
  86.                 gracz1_wykonal = true;
  87.                 gracz2_wykonal = true;
  88.                 w_grze = false;
  89.                 w_menu = true;
  90.             }
  91.         }
  92.     }
  93.     for (int a = 0; a < 6; a++)
  94.     {
  95.         for (int b = 0; b < 4; b++)
  96.         {
  97.             if (plansza[0 + b][a] + plansza[1 + b][a] + plansza[2 + b][a] + plansza[3 + b][a] == 4 * postac2)
  98.             {
  99.                 cout << " Wygrana " << (char)(2) << endl;
  100.                 Sleep(2500);
  101.                 gracz1_wykonal = true;
  102.                 gracz2_wykonal = true;
  103.                 w_grze = false;
  104.                 w_menu = true;
  105.             }
  106.         }
  107.     }
  108.     // wygrane skos prawo-dol
  109.     for (int a = 0; a < 3; a++)
  110.     {
  111.         for (int b = 0; b < 4; b++)
  112.         {
  113.             if (plansza[0+b][a+0] + plansza[1+b][a+1] + plansza[2+b][a+2] + plansza[3+b][a+3] == 4 * postac1)
  114.             {
  115.                 cout << " Wygrana " << (char)(1) << endl;
  116.                 Sleep(2500);
  117.                 gracz1_wykonal = true;
  118.                 gracz2_wykonal = true;
  119.                 w_grze = false;
  120.                 w_menu = true;
  121.             }
  122.         }
  123.     }
  124.     for (int a = 0; a < 3; a++)
  125.     {
  126.         for (int b = 0; b < 4; b++)
  127.         {
  128.             if (plansza[0 + b][a] + plansza[1 + b][a + 1] + plansza[2 + b][a + 2] + plansza[3 + b][a + 3] == 4 * postac2)
  129.             {
  130.                 cout << " Wygrana " << (char)(2) << endl;
  131.                 Sleep(2500);
  132.                 gracz1_wykonal = true;
  133.                 gracz2_wykonal = true;
  134.                 w_grze = false;
  135.                 w_menu = true;
  136.             }
  137.         }
  138.     }
  139.     // wygrane skos lewo-dol
  140.     for (int a = 0; a < 3; a++)
  141.     {
  142.         for (int b = 3; b < 7; b++)
  143.         {
  144.             if (plansza[0 + b][a] + plansza[b - 1][a + 1] + plansza[b - 2][a + 2] + plansza[b - 3][a + 3] == 4 * postac1)
  145.             {
  146.                 cout << " Wygrana " << (char)(1) << endl;
  147.                 Sleep(2500);
  148.                 gracz1_wykonal = true;
  149.                 gracz2_wykonal = true;
  150.                 w_grze = false;
  151.                 w_menu = true;
  152.             }
  153.         }
  154.     }
  155.     for (int a = 0; a < 3; a++)
  156.     {
  157.         for (int b = 3; b < 7; b++)
  158.         {
  159.             if (plansza[0 + b][a] + plansza[b - 1][a + 1] + plansza[b - 2][a + 2] + plansza[b - 3][a + 3] == 4 * postac2)
  160.             {
  161.                 cout << " Wygrana " << (char)(2) << endl;
  162.                 Sleep(2500);
  163.                 gracz1_wykonal = true;
  164.                 gracz2_wykonal = true;
  165.                 w_grze = false;
  166.                 w_menu = true;
  167.             }
  168.         }
  169.     }
  170.     // wygrane pion
  171.     for (int b = 0; b < 7; b++)
  172.     {
  173.         for (int a = 0; a < 3; a++)
  174.         {
  175.             if (plansza[b][a+0] + plansza[b][a+1] + plansza[b][a+2] + plansza[b][a+3] == 4 * postac1)
  176.             {
  177.                 cout << " Wygrana " << (char)(1) << endl;
  178.                 Sleep(2500);
  179.                 gracz1_wykonal = true;
  180.                 gracz2_wykonal = true;
  181.                 w_grze = false;
  182.                 w_menu = true;
  183.             }
  184.         }
  185.     }
  186.     for (int b = 0; b < 7; b++)
  187.     {
  188.         for (int a = 0; a < 3; a++)
  189.         {
  190.             if (plansza[b][a+0] + plansza[b][a+1] + plansza[b][a+2] + plansza[b][a+3] == 4 * postac2)
  191.             {
  192.                 cout << " Wygrana " << (char)(2) << endl;
  193.                 Sleep(2500);
  194.                 gracz1_wykonal = true;
  195.                 gracz2_wykonal = true;
  196.                 w_grze = false;
  197.                 w_menu = true;
  198.             }
  199.         }
  200.     }
  201. }
  202.  
  203. void ruch_1()
  204. {
  205.     int wybor1;
  206.     cout << " Wybierz kolumne gdzie wrzucic zeton " << (char)(1) << " :";
  207.     cin >> wybor1;
  208.     switch (wybor1)
  209.     {
  210.     case 1:
  211.         if (plansza[0][5] == 0) { plansza[0][5] = postac1; gracz1_wykonal = true; break; }
  212.         if (plansza[0][4] == 0) { plansza[0][4] = postac1; gracz1_wykonal = true; break; }
  213.         if (plansza[0][3] == 0) { plansza[0][3] = postac1; gracz1_wykonal = true; break; }
  214.         if (plansza[0][2] == 0) { plansza[0][2] = postac1; gracz1_wykonal = true; break; }
  215.         if (plansza[0][1] == 0) { plansza[0][1] = postac1; gracz1_wykonal = true; break; }
  216.         if (plansza[0][0] == 0) { plansza[0][0] = postac1; gracz1_wykonal = true; break; }
  217.         else { cout << "kolumna pelna!"; Sleep(750); break; }
  218.     case 2:
  219.         if (plansza[1][5] == 0) { plansza[1][5] = postac1; gracz1_wykonal = true; break; }
  220.         if (plansza[1][4] == 0) { plansza[1][4] = postac1; gracz1_wykonal = true; break; }
  221.         if (plansza[1][3] == 0) { plansza[1][3] = postac1; gracz1_wykonal = true; break; }
  222.         if (plansza[1][2] == 0) { plansza[1][2] = postac1; gracz1_wykonal = true; break; }
  223.         if (plansza[1][1] == 0) { plansza[1][1] = postac1; gracz1_wykonal = true; break; }
  224.         if (plansza[1][0] == 0) { plansza[1][0] = postac1; gracz1_wykonal = true; break; }
  225.         else { cout << "kolumna pelna!"; Sleep(750); break; }
  226.     case 3:
  227.         if (plansza[2][5] == 0) { plansza[2][5] = postac1; gracz1_wykonal = true; break; }
  228.         if (plansza[2][4] == 0) { plansza[2][4] = postac1; gracz1_wykonal = true; break; }
  229.         if (plansza[2][3] == 0) { plansza[2][3] = postac1; gracz1_wykonal = true; break; }
  230.         if (plansza[2][2] == 0) { plansza[2][2] = postac1; gracz1_wykonal = true; break; }
  231.         if (plansza[2][1] == 0) { plansza[2][1] = postac1; gracz1_wykonal = true; break; }
  232.         if (plansza[2][0] == 0) { plansza[2][0] = postac1; gracz1_wykonal = true; break; }
  233.         else { cout << "kolumna pelna!"; Sleep(750); break; }
  234.     case 4:
  235.         if (plansza[3][5] == 0) { plansza[3][5] = postac1; gracz1_wykonal = true; break; }
  236.         if (plansza[3][4] == 0) { plansza[3][4] = postac1; gracz1_wykonal = true; break; }
  237.         if (plansza[3][3] == 0) { plansza[3][3] = postac1; gracz1_wykonal = true; break; }
  238.         if (plansza[3][2] == 0) { plansza[3][2] = postac1; gracz1_wykonal = true; break; }
  239.         if (plansza[3][1] == 0) { plansza[3][1] = postac1; gracz1_wykonal = true; break; }
  240.         if (plansza[3][0] == 0) { plansza[3][0] = postac1; gracz1_wykonal = true; break; }
  241.         else { cout << "kolumna pelna!"; Sleep(750); break; }
  242.     case 5:
  243.         if (plansza[4][5] == 0) { plansza[4][5] = postac1; gracz1_wykonal = true; break; }
  244.         if (plansza[4][4] == 0) { plansza[4][4] = postac1; gracz1_wykonal = true; break; }
  245.         if (plansza[4][3] == 0) { plansza[4][3] = postac1; gracz1_wykonal = true; break; }
  246.         if (plansza[4][2] == 0) { plansza[4][2] = postac1; gracz1_wykonal = true; break; }
  247.         if (plansza[4][1] == 0) { plansza[4][1] = postac1; gracz1_wykonal = true; break; }
  248.         else { cout << "kolumna pelna!"; Sleep(750); break; }
  249.     case 6:
  250.         if (plansza[5][5] == 0) { plansza[5][5] = postac1; gracz1_wykonal = true; break; }
  251.         if (plansza[5][4] == 0) { plansza[5][4] = postac1; gracz1_wykonal = true; break; }
  252.         if (plansza[5][3] == 0) { plansza[5][3] = postac1; gracz1_wykonal = true; break; }
  253.         if (plansza[5][2] == 0) { plansza[5][2] = postac1; gracz1_wykonal = true; break; }
  254.         if (plansza[5][1] == 0) { plansza[5][1] = postac1; gracz1_wykonal = true; break; }
  255.         if (plansza[5][0] == 0) { plansza[5][0] = postac1; gracz1_wykonal = true; break; }
  256.         else { cout << "kolumna pelna!"; Sleep(750); break; }
  257.     case 7:
  258.         if (plansza[6][5] == 0) { plansza[6][5] = postac1; gracz1_wykonal = true; break; }
  259.         if (plansza[6][4] == 0) { plansza[6][4] = postac1; gracz1_wykonal = true; break; }
  260.         if (plansza[6][3] == 0) { plansza[6][3] = postac1; gracz1_wykonal = true; break; }
  261.         if (plansza[6][2] == 0) { plansza[6][2] = postac1; gracz1_wykonal = true; break; }
  262.         if (plansza[6][1] == 0) { plansza[6][1] = postac1; gracz1_wykonal = true; break; }
  263.         if (plansza[6][0] == 0) { plansza[6][0] = postac1; gracz1_wykonal = true; break; }
  264.         else { cout << "kolumna pelna!"; Sleep(750); break; }
  265.     case 0:
  266.         w_grze = false;
  267.         w_menu = true;
  268.         gracz1_wykonal = true;
  269.         gracz2_wykonal = true;
  270.         break;
  271.     default: cout << endl; cout << " wybor niemozliwy"; Sleep(1000); break;
  272.     }
  273. }
  274. void ruch_2()
  275. {
  276.     int wybor2;
  277.     srand((int)time(NULL));
  278.     wybor2 = rand() % 7 + 1;
  279.     //cout << " Wybierz kolumne gdzie wrzucic zeton " << (char)(2) << " :";
  280.     //cin >> wybor2;
  281.     switch (wybor2)
  282.     {
  283.     case 1:
  284.         if (plansza[0][5] == 0) { plansza[0][5] = postac2; gracz2_wykonal = true; break; }
  285.         if (plansza[0][4] == 0) { plansza[0][4] = postac2; gracz2_wykonal = true; break; }
  286.         if (plansza[0][3] == 0) { plansza[0][3] = postac2; gracz2_wykonal = true; break; }
  287.         if (plansza[0][2] == 0) { plansza[0][2] = postac2; gracz2_wykonal = true; break; }
  288.         if (plansza[0][1] == 0) { plansza[0][1] = postac2; gracz2_wykonal = true; break; }
  289.         if (plansza[0][0] == 0) { plansza[0][0] = postac2; gracz2_wykonal = true; break; }
  290.         //else { cout << "kolumna pelna!"; Sleep(750); break; }
  291.     case 2:
  292.         if (plansza[1][5] == 0) { plansza[1][5] = postac2; gracz2_wykonal = true; break; }
  293.         if (plansza[1][4] == 0) { plansza[1][4] = postac2; gracz2_wykonal = true; break; }
  294.         if (plansza[1][3] == 0) { plansza[1][3] = postac2; gracz2_wykonal = true; break; }
  295.         if (plansza[1][2] == 0) { plansza[1][2] = postac2; gracz2_wykonal = true; break; }
  296.         if (plansza[1][1] == 0) { plansza[1][1] = postac2; gracz2_wykonal = true; break; }
  297.         if (plansza[1][0] == 0) { plansza[1][0] = postac2; gracz2_wykonal = true; break; }
  298.         //else { cout << "kolumna pelna!"; Sleep(750); break; }
  299.     case 3:
  300.         if (plansza[2][5] == 0) { plansza[2][5] = postac2; gracz2_wykonal = true; break; }
  301.         if (plansza[2][4] == 0) { plansza[2][4] = postac2; gracz2_wykonal = true; break; }
  302.         if (plansza[2][3] == 0) { plansza[2][3] = postac2; gracz2_wykonal = true; break; }
  303.         if (plansza[2][2] == 0) { plansza[2][2] = postac2; gracz2_wykonal = true; break; }
  304.         if (plansza[2][1] == 0) { plansza[2][1] = postac2; gracz2_wykonal = true; break; }
  305.         if (plansza[2][0] == 0) { plansza[2][0] = postac2; gracz2_wykonal = true; break; }
  306.         //else { cout << "kolumna pelna!"; Sleep(750); break; }
  307.     case 4:
  308.         if (plansza[3][5] == 0) { plansza[3][5] = postac2; gracz2_wykonal = true; break; }
  309.         if (plansza[3][4] == 0) { plansza[3][4] = postac2; gracz2_wykonal = true; break; }
  310.         if (plansza[3][3] == 0) { plansza[3][3] = postac2; gracz2_wykonal = true; break; }
  311.         if (plansza[3][2] == 0) { plansza[3][2] = postac2; gracz2_wykonal = true; break; }
  312.         if (plansza[3][1] == 0) { plansza[3][1] = postac2; gracz2_wykonal = true; break; }
  313.         if (plansza[3][0] == 0) { plansza[3][0] = postac2; gracz2_wykonal = true; break; }
  314.         //else { cout << "kolumna pelna!"; Sleep(750); break; }
  315.     case 5:
  316.         if (plansza[4][5] == 0) { plansza[4][5] = postac2; gracz2_wykonal = true; break; }
  317.         if (plansza[4][4] == 0) { plansza[4][4] = postac2; gracz2_wykonal = true; break; }
  318.         if (plansza[4][3] == 0) { plansza[4][3] = postac2; gracz2_wykonal = true; break; }
  319.         if (plansza[4][2] == 0) { plansza[4][2] = postac2; gracz2_wykonal = true; break; }
  320.         if (plansza[4][1] == 0) { plansza[4][1] = postac2; gracz2_wykonal = true; break; }
  321.         if (plansza[4][0] == 0) { plansza[4][0] = postac2; gracz2_wykonal = true; break; }
  322.         //else { cout << "kolumna pelna!"; Sleep(750); break; }
  323.     case 6:
  324.         if (plansza[5][5] == 0) { plansza[5][5] = postac2; gracz2_wykonal = true; break; }
  325.         if (plansza[5][4] == 0) { plansza[5][4] = postac2; gracz2_wykonal = true; break; }
  326.         if (plansza[5][3] == 0) { plansza[5][3] = postac2; gracz2_wykonal = true; break; }
  327.         if (plansza[5][2] == 0) { plansza[5][2] = postac2; gracz2_wykonal = true; break; }
  328.         if (plansza[5][1] == 0) { plansza[5][1] = postac2; gracz2_wykonal = true; break; }
  329.         if (plansza[5][0] == 0) { plansza[5][0] = postac2; gracz2_wykonal = true; break; }
  330.         //else { cout << "kolumna pelna!"; Sleep(750); break; }
  331.     case 7:
  332.         if (plansza[6][5] == 0) { plansza[6][5] = postac2; gracz2_wykonal = true; break; }
  333.         if (plansza[6][4] == 0) { plansza[6][4] = postac2; gracz2_wykonal = true; break; }
  334.         if (plansza[6][3] == 0) { plansza[6][3] = postac2; gracz2_wykonal = true; break; }
  335.         if (plansza[6][2] == 0) { plansza[6][2] = postac2; gracz2_wykonal = true; break; }
  336.         if (plansza[6][1] == 0) { plansza[6][1] = postac2; gracz2_wykonal = true; break; }
  337.         if (plansza[6][0] == 0) { plansza[6][0] = postac2; gracz2_wykonal = true; break; }
  338.         //else { cout << "kolumna pelna!"; Sleep(750); break; }
  339.     //default: cout << endl; cout << " wybor niemozliwy"; Sleep(1000); break;
  340.     }
  341. }
  342.  
  343. void menu1()
  344. {
  345.     system("cls");
  346.     cout << "           Polacz 4 " << endl << endl << endl;
  347.     cout << "        >    Graj" << endl;
  348.     cout << "             Info" << endl;
  349.     cout << "           Wyjscie" << endl;
  350. }
  351. void menu2()
  352. {
  353.     system("cls");
  354.     cout << "           Polacz 4 " << endl << endl << endl;
  355.     cout << "             Graj" << endl;
  356.     cout << "        >    Info" << endl;
  357.     cout << "           Wyjscie" << endl;
  358. }
  359. void menu3()
  360. {
  361.     system("cls");
  362.     cout << "           Polacz 4 " << endl << endl << endl;
  363.     cout << "             Graj" << endl;
  364.     cout << "             Info" << endl;
  365.     cout << "        >  Wyjscie" << endl;
  366. }
  367.  
  368. void info()
  369. {
  370.     cout << endl << endl;
  371.     cout << "    Polacz 4 jednakowe w linii" << endl;
  372.     cout << "    Linie pionowe  / poziome / skosne"<< endl;
  373.     cout << "    Milej gry!!!" << endl << endl << endl << endl;
  374.     cout << "            By Kamil M." << endl;
  375.     Sleep(2500);
  376. }
  377. void zakoncz()
  378. {
  379.     cout << " Zakonczenie " << endl;
  380.     koniec = true;
  381.     w_menu = false;
  382.     w_grze = false;
  383. }
  384.  
  385. int main()
  386. {
  387.     while (koniec == false)
  388.     {
  389.         reset();
  390.         menu1();
  391.         while (w_menu == true)
  392.         {
  393.             switch (wybor_menu)
  394.             {
  395.             case 1:
  396.                 menu1();
  397.                 break;
  398.             case 2:
  399.                 menu2();
  400.                 break;
  401.             case 3:
  402.                 menu3();
  403.                 break;
  404.             }
  405.  
  406.             unsigned char znak = _getch();
  407.             switch (znak)
  408.             {
  409.             case 0: //klawisze specjalne (czasem zero czasem 224 - zależne od pc'ta chyba)
  410.             case 224: //klawisze specjalne
  411.                 znak = _getch();
  412.                 switch (znak)
  413.                 {
  414.                 case 72: //strzałka w górę
  415.                     if (wybor_menu > 1)wybor_menu--;
  416.                     break;
  417.                 case 80: //strzałka w dół
  418.                     if (wybor_menu < 3)wybor_menu++;
  419.                     break;
  420.                 }
  421.                 znak = 0;
  422.                 break;
  423.             case 13: //ENTER
  424.                 switch (wybor_menu)
  425.                 {
  426.                 case 1:
  427.                     w_menu = false;
  428.                     w_grze = true;
  429.                     break;
  430.                 case 2:
  431.                     info();
  432.                     break;
  433.                 case 3:
  434.                     zakoncz();
  435.                     break;
  436.                 }
  437.                 break;
  438.             case 27: //ESC
  439.                 zakoncz();
  440.                 break;
  441.             }
  442.         }
  443.  
  444.         while (w_grze == true)
  445.         {
  446.             while (gracz1_wykonal == false)
  447.             {
  448.                 rysuj();
  449.                 ruch_1();
  450.                 rysuj();
  451.             }
  452.             czy_wygrana();
  453.             while (gracz2_wykonal == false)
  454.             {
  455.                 rysuj();
  456.                 ruch_2();
  457.                 rysuj();
  458.             }
  459.             if (w_grze == true)
  460.             {
  461.                 czy_wygrana();
  462.                 gracz1_wykonal = false;
  463.                 gracz2_wykonal = false;
  464.             }
  465.         }
  466.     }
  467.     return 0;
  468. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement