Advertisement
Momir

ČAH v0.2.0

May 18th, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 47.07 KB | None | 0 0
  1. #define _WIN32_WINNT 0x0600
  2. #define STRICT
  3. #include <vector>
  4. #include <dos.h>
  5. #include <dir.h>
  6. #include <iostream>
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include <conio.h>
  10. #include <io.h>
  11. #include <shlwapi.h>
  12. #include <fcntl.h>
  13. #include <unistd.h>
  14. #include <windows.h>
  15. #include <cwchar>
  16. #include <winreg.h>
  17. #include <Wincon.h>
  18. #define _O_U16TEXT  0x20000
  19. #define _O_U8TEXT   0x40000
  20. #define SVETLO 0
  21. #define TAMNO 1
  22. #define SIVO 2
  23. #define BELO 0
  24. #define CRNO 1
  25. #define ISKLJUCENO 0
  26. #define UKLJUCENO 1
  27. #define ZELENO 2
  28. #define NEUTRALNO 0
  29. #define IZABRANO 1
  30. #define NAPADNUTO 2
  31. #define TOP L"♜ "
  32. #define KONJ L"♞ "
  33. #define LOVAC L"♝ "
  34. #define KRALJICA L"♛ "
  35. #define KRALJ L"♚ "
  36. #define PIJUN L"♟ "
  37. #define PRAZNO L"  "
  38. #define TACKA L""  // ● ꞏ ⚫
  39. using namespace std;
  40.  
  41. typedef struct _CONSOLE_SCREEN_BUFFER_INFOEX
  42. {
  43.     ULONG      cbSize;
  44.     COORD      dwSize;
  45.     COORD      dwCursorPosition;
  46.     WORD       wAttributes;
  47.     SMALL_RECT srWindow;
  48.     COORD      dwMaximumWindowSize;
  49.     WORD       wPopupAttributes;
  50.     BOOL       bFullscreenSupported;
  51.     COLORREF   ColorTable[16];
  52. } CONSOLE_SCREEN_BUFFER_INFOEX, *PCONSOLE_SCREEN_BUFFER_INFOEX;
  53.  
  54. typedef struct _CONSOLE_FONT_INFOEX
  55. {
  56.     ULONG cbSize;
  57.     DWORD nFont;
  58.     COORD dwFontSize;
  59.     UINT  FontFamily;
  60.     UINT  FontWeight;
  61.     WCHAR FaceName[LF_FACESIZE];
  62. } CONSOLE_FONT_INFOEX, *PCONSOLE_FONT_INFOEX;
  63.  
  64. #ifdef __cplusplus
  65. extern "C" {
  66. #endif
  67. BOOL WINAPI SetCurrentConsoleFontEx(HANDLE hConsoleOutput, BOOL bMaximumWindow, PCONSOLE_FONT_INFOEX lpConsoleCurrentFontEx);
  68. #ifdef __cplusplus
  69. }
  70. #endif
  71.  
  72. #ifdef __cplusplus
  73. extern "C" {
  74. #endif
  75. BOOL WINAPI GetConsoleScreenBufferInfoEx(HANDLE hConsoleOutput, PCONSOLE_SCREEN_BUFFER_INFOEX lpConsoleScreenBufferInfoEx);
  76. #ifdef __cplusplus
  77. }
  78. #endif
  79.  
  80. #ifdef __cplusplus
  81. extern "C" {
  82. #endif
  83. BOOL WINAPI SetConsoleScreenBufferInfoEx(HANDLE hConsoleOutput, PCONSOLE_SCREEN_BUFFER_INFOEX lpConsoleScreenBufferInfoEx);
  84. #ifdef __cplusplus
  85. }
  86. #endif
  87.  
  88. void SakriKursor();
  89. void ObrisiEkran();
  90. void gotoxy(int x, int y);
  91. int UcitajKlik(int &x, int &y);
  92. void CentrirajKonzolu();
  93.  
  94. short boja = SVETLO;
  95. short stanje = NEUTRALNO;
  96. short rotacija = ISKLJUCENO;
  97. short sacekaj = ISKLJUCENO;
  98. unsigned long long int brPoteza = 0;
  99.  
  100. typedef struct
  101. {
  102.     short bojaPolja;
  103.     short stanjePolja;
  104.     wchar_t figura[10];
  105.     short bojaFigure;
  106.     short anpasan;
  107. } Polje;
  108.  
  109. typedef struct
  110. {
  111.     Polje polje[8][8];
  112.     Polje levo[8][2];
  113.     Polje desno[8][2];
  114.     short brlevo;
  115.     short brdesno;
  116.  
  117. } Tabla;
  118.  
  119. void PodesiVelicinu(int i);
  120. void PodesiKonzolu();
  121. void PodesiKonzolu2();
  122. void NapraviTablu(Tabla &tabla);
  123. void OdstampajTablu(Tabla tabla);
  124. void OdstampajKonzolu();
  125. void PozicijaNaTabli(int &x, int &y);
  126. void NoviPotez(Tabla &tabla);
  127. void PozicijaIzabranog(int &xizb, int &yizb, Tabla tabla);
  128. short JelUnutarTable(int x, int y);
  129. void OdstampajKonzolu();
  130. void OdstampajLevoDesno(Tabla tabla);
  131. void ObrnutoOdstampajTablu(Tabla tabla);
  132. void ObrnutaPozicijaNaTabli(int &x, int &y);
  133.  
  134. void ObrisiKonzoluPodesavanja()
  135. {
  136.     RegDeleteKeyA(HKEY_CURRENT_USER, "Console\\C:_Program Files (x86)_CodeBlocks_cb_console_runner.exe");
  137.     RegDeleteKeyA(HKEY_CURRENT_USER, "Console\\");
  138.     RegDeleteKeyA(HKEY_CURRENT_USER, "Console");
  139. }
  140.  
  141.  
  142. void PostaviKralja(Tabla &tabla, int x, int y)
  143. {
  144.  
  145. }
  146.  
  147.  
  148. void PostaviPijuna(Tabla &tabla, int x, int y)
  149. {
  150.     tabla.polje[y][x].stanjePolja = IZABRANO;
  151.  
  152.     if(tabla.polje[y][x].bojaFigure == BELO)
  153.     {
  154.         if(!wcscmp(tabla.polje[y - 1][x].figura, PRAZNO) && JelUnutarTable(x, y - 1))
  155.         {
  156.             wcscpy(tabla.polje[y - 1][x].figura, TACKA);
  157.             tabla.polje[y - 1][x].bojaFigure = ZELENO;
  158.         }
  159.  
  160.         if(y == 6 && !wcscmp(tabla.polje[y - 2][x].figura, PRAZNO) && !wcscmp(tabla.polje[y - 1][x].figura, TACKA) && JelUnutarTable(x, y - 2))
  161.         {
  162.             wcscpy(tabla.polje[y - 2][x].figura, TACKA);
  163.             tabla.polje[y - 2][x].bojaFigure = ZELENO;
  164.         }
  165.  
  166.         if(wcscmp(tabla.polje[y - 1][x + 1].figura, PRAZNO) && tabla.polje[y - 1][x + 1].bojaFigure == CRNO && JelUnutarTable(x + 1, y - 1))
  167.             tabla.polje[y - 1][x + 1].stanjePolja = NAPADNUTO;
  168.  
  169.         if(wcscmp(tabla.polje[y - 1][x - 1].figura, PRAZNO) && tabla.polje[y - 1][x - 1].bojaFigure == CRNO && JelUnutarTable(x - 1, y - 1))
  170.             tabla.polje[y - 1][x - 1].stanjePolja = NAPADNUTO;
  171.  
  172.         if(!wcscmp(tabla.polje[y][x + 1].figura, PIJUN) && tabla.polje[y][x + 1].bojaFigure == CRNO && tabla.polje[y][x + 1].anpasan == UKLJUCENO && JelUnutarTable(x + 1, y - 1))
  173.             tabla.polje[y - 1][x + 1].stanjePolja = NAPADNUTO;
  174.  
  175.         if(!wcscmp(tabla.polje[y][x - 1].figura, PIJUN) && tabla.polje[y][x - 1].bojaFigure == CRNO && tabla.polje[y][x - 1].anpasan == UKLJUCENO && JelUnutarTable(x - 1, y - 1))
  176.             tabla.polje[y - 1][x - 1].stanjePolja = NAPADNUTO;
  177.     }
  178.     else
  179.     {
  180.         if(!wcscmp(tabla.polje[y + 1][x].figura, PRAZNO) && JelUnutarTable(x, y + 1))
  181.         {
  182.             wcscpy(tabla.polje[y + 1][x].figura, TACKA);
  183.             tabla.polje[y + 1][x].bojaFigure = ZELENO;
  184.         }
  185.  
  186.         if(y == 1 && !wcscmp(tabla.polje[y + 2][x].figura, PRAZNO) && !wcscmp(tabla.polje[y + 1][x].figura, TACKA) && JelUnutarTable(x, y + 2))
  187.         {
  188.             wcscpy(tabla.polje[y + 2][x].figura, TACKA);
  189.             tabla.polje[y + 2][x].bojaFigure = ZELENO;
  190.         }
  191.  
  192.         if(wcscmp(tabla.polje[y + 1][x + 1].figura, PRAZNO) && tabla.polje[y + 1][x + 1].bojaFigure == BELO && JelUnutarTable(x + 1, y + 1))
  193.             tabla.polje[y + 1][x + 1].stanjePolja = NAPADNUTO;
  194.  
  195.         if(wcscmp(tabla.polje[y + 1][x - 1].figura, PRAZNO) && tabla.polje[y + 1][x - 1].bojaFigure == BELO && JelUnutarTable(x - 1, y + 1))
  196.             tabla.polje[y + 1][x - 1].stanjePolja = NAPADNUTO;
  197.  
  198.         if(!wcscmp(tabla.polje[y][x - 1].figura, PIJUN) && tabla.polje[y][x - 1].bojaFigure == BELO && tabla.polje[y][x - 1].anpasan == UKLJUCENO && JelUnutarTable(x - 1, y + 1))
  199.             tabla.polje[y + 1][x - 1].stanjePolja = NAPADNUTO;
  200.  
  201.         if(!wcscmp(tabla.polje[y][x + 1].figura, PIJUN) && tabla.polje[y][x + 1].bojaFigure == BELO && tabla.polje[y][x + 1].anpasan == UKLJUCENO && JelUnutarTable(x + 1, y + 1))
  202.             tabla.polje[y + 1][x + 1].stanjePolja = NAPADNUTO;
  203.     }
  204. }
  205.  
  206. void PostaviKonja(Tabla &tabla, int x, int y)
  207. {
  208.     tabla.polje[y][x].stanjePolja = IZABRANO;
  209.  
  210.     if(!wcscmp(tabla.polje[y - 2][x - 1].figura, PRAZNO) && JelUnutarTable(x - 1, y - 2))
  211.     {
  212.         wcscpy(tabla.polje[y - 2][x - 1].figura, TACKA);
  213.         tabla.polje[y - 2][x - 1].bojaFigure = ZELENO;
  214.     }
  215.     else if(wcscmp(tabla.polje[y - 2][x - 1].figura, PRAZNO) && ((tabla.polje[y][x].bojaFigure == BELO && tabla.polje[y - 2][x - 1].bojaFigure == CRNO) || (tabla.polje[y][x].bojaFigure == CRNO && tabla.polje[y - 2][x - 1].bojaFigure == BELO)) && JelUnutarTable(x - 1, y - 2))
  216.         tabla.polje[y - 2][x - 1].stanjePolja = NAPADNUTO;
  217.  
  218.     if(!wcscmp(tabla.polje[y - 2][x + 1].figura, PRAZNO) && JelUnutarTable(x + 1, y - 2))
  219.     {
  220.         wcscpy(tabla.polje[y - 2][x + 1].figura, TACKA);
  221.         tabla.polje[y - 2][x + 1].bojaFigure = ZELENO;
  222.     }
  223.     else if(wcscmp(tabla.polje[y - 2][x + 1].figura, PRAZNO) && ((tabla.polje[y][x].bojaFigure == BELO && tabla.polje[y - 2][x + 1].bojaFigure == CRNO) || (tabla.polje[y][x].bojaFigure == CRNO && tabla.polje[y - 2][x + 1].bojaFigure == BELO)) && JelUnutarTable(x + 1, y - 2))
  224.         tabla.polje[y - 2][x + 1].stanjePolja = NAPADNUTO;
  225.  
  226.     if(!wcscmp(tabla.polje[y - 1][x + 2].figura, PRAZNO) && JelUnutarTable(x + 2, y - 1))
  227.     {
  228.         wcscpy(tabla.polje[y - 1][x + 2].figura, TACKA);
  229.         tabla.polje[y - 1][x + 2].bojaFigure = ZELENO;
  230.     }
  231.     else if(wcscmp(tabla.polje[y - 1][x + 2].figura, PRAZNO) && ((tabla.polje[y][x].bojaFigure == BELO && tabla.polje[y - 1][x + 2].bojaFigure == CRNO) || (tabla.polje[y][x].bojaFigure == CRNO && tabla.polje[y - 1][x + 2].bojaFigure == BELO)) && JelUnutarTable(x + 2, y - 1))
  232.         tabla.polje[y - 1][x + 2].stanjePolja = NAPADNUTO;
  233.  
  234.     if(!wcscmp(tabla.polje[y + 1][x + 2].figura, PRAZNO) && JelUnutarTable(x + 2, y + 1))
  235.     {
  236.         wcscpy(tabla.polje[y + 1][x + 2].figura, TACKA);
  237.         tabla.polje[y + 1][x + 2].bojaFigure = ZELENO;
  238.     }
  239.     else if(wcscmp(tabla.polje[y + 1][x + 2].figura, PRAZNO) && ((tabla.polje[y][x].bojaFigure == BELO && tabla.polje[y + 1][x + 2].bojaFigure == CRNO) || (tabla.polje[y][x].bojaFigure == CRNO && tabla.polje[y + 1][x + 2].bojaFigure == BELO)) && JelUnutarTable(x + 2, y + 1))
  240.         tabla.polje[y + 1][x + 2].stanjePolja = NAPADNUTO;
  241.  
  242.     if(!wcscmp(tabla.polje[y + 2][x + 1].figura, PRAZNO) && JelUnutarTable(x + 1, y + 2))
  243.     {
  244.         wcscpy(tabla.polje[y + 2][x + 1].figura, TACKA);
  245.         tabla.polje[y + 2][x + 1].bojaFigure = ZELENO;
  246.     }
  247.     else if(wcscmp(tabla.polje[y + 2][x + 1].figura, PRAZNO) && ((tabla.polje[y][x].bojaFigure == BELO && tabla.polje[y + 2][x + 1].bojaFigure == CRNO) || (tabla.polje[y][x].bojaFigure == CRNO && tabla.polje[y + 2][x + 1].bojaFigure == BELO)) && JelUnutarTable(x + 1, y + 2))
  248.         tabla.polje[y + 2][x + 1].stanjePolja = NAPADNUTO;
  249.  
  250.     if(!wcscmp(tabla.polje[y + 2][x - 1].figura, PRAZNO) && JelUnutarTable(x - 1, y + 2))
  251.     {
  252.         wcscpy(tabla.polje[y + 2][x - 1].figura, TACKA);
  253.         tabla.polje[y + 2][x - 1].bojaFigure = ZELENO;
  254.     }
  255.     else if(wcscmp(tabla.polje[y + 2][x - 1].figura, PRAZNO) && ((tabla.polje[y][x].bojaFigure == BELO && tabla.polje[y + 2][x - 1].bojaFigure == CRNO) || (tabla.polje[y][x].bojaFigure == CRNO && tabla.polje[y + 2][x - 1].bojaFigure == BELO)) && JelUnutarTable(x - 1, y + 2))
  256.         tabla.polje[y + 2][x - 1].stanjePolja = NAPADNUTO;
  257.  
  258.     if(!wcscmp(tabla.polje[y + 1][x - 2].figura, PRAZNO) && JelUnutarTable(x - 2, y + 1))
  259.     {
  260.         wcscpy(tabla.polje[y + 1][x - 2].figura, TACKA);
  261.         tabla.polje[y + 1][x - 2].bojaFigure = ZELENO;
  262.     }
  263.     else if(wcscmp(tabla.polje[y + 1][x - 2].figura, PRAZNO) && ((tabla.polje[y][x].bojaFigure == BELO && tabla.polje[y + 1][x - 2].bojaFigure == CRNO) || (tabla.polje[y][x].bojaFigure == CRNO && tabla.polje[y + 1][x - 2].bojaFigure == BELO)) && JelUnutarTable(x - 2, y + 1))
  264.         tabla.polje[y + 1][x - 2].stanjePolja = NAPADNUTO;
  265.  
  266.     if(!wcscmp(tabla.polje[y - 1][x - 2].figura, PRAZNO) && JelUnutarTable(x - 2, y + 1))
  267.     {
  268.         wcscpy(tabla.polje[y - 1][x - 2].figura, TACKA);
  269.         tabla.polje[y - 1][x - 2].bojaFigure = ZELENO;
  270.     }
  271.     else if(wcscmp(tabla.polje[y - 1][x - 2].figura, PRAZNO) && ((tabla.polje[y][x].bojaFigure == BELO && tabla.polje[y - 1][x - 2].bojaFigure == CRNO) || (tabla.polje[y][x].bojaFigure == CRNO && tabla.polje[y - 1][x - 2].bojaFigure == BELO)) && JelUnutarTable(x - 2, y - 1))
  272.         tabla.polje[y - 1][x - 2].stanjePolja = NAPADNUTO;
  273.  
  274. }
  275.  
  276. int main()
  277. {
  278.     Tabla tabla;
  279.     NapraviTablu(tabla);
  280.     vector<Tabla> istorija(0);
  281.     istorija.push_back(tabla);
  282.  
  283.     ObrisiKonzoluPodesavanja();
  284.     PodesiKonzolu();
  285.     CentrirajKonzolu();
  286.     PodesiKonzolu2();
  287.     OdstampajKonzolu();
  288.     OdstampajTablu(tabla);
  289.  
  290.     int x, y, xizb, yizb, i = 35;
  291.     HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);
  292.     _setmode(_fileno(stdout), _O_U8TEXT);
  293.  
  294.     do
  295.     {
  296.         SetConsoleTextAttribute(console, 82);
  297.         gotoxy(4, 14);
  298.         wprintf(L"%d    ", brPoteza);
  299.  
  300.         UcitajKlik(x, y);
  301.  
  302.         gotoxy(15, 14);
  303.         wprintf(L"%d, %d           ", x, y);
  304.  
  305.         if(y == 0 && (x == 4 || x == 5))
  306.         {
  307.             NapraviTablu(tabla);
  308.             istorija.clear();
  309.             istorija.push_back(tabla);
  310.             brPoteza = 0;
  311.             NoviPotez(tabla);
  312.  
  313.             if(brPoteza % 2 && rotacija == UKLJUCENO)
  314.                 ObrnutoOdstampajTablu(tabla);
  315.             else
  316.                 OdstampajTablu(tabla);
  317.         }
  318.         else if(y == 0 && (x == 6 || x == 7))
  319.         {
  320.             boja++;
  321.  
  322.             if(boja == 3)
  323.                 boja = 0;
  324.  
  325.             OdstampajKonzolu();
  326.             NoviPotez(tabla);
  327.  
  328.             if(brPoteza % 2 && rotacija == UKLJUCENO)
  329.                 ObrnutoOdstampajTablu(tabla);
  330.             else
  331.                 OdstampajTablu(tabla);
  332.         }
  333.         else if(y == 0 && (x == 8 || x == 9))
  334.         {
  335.             PodesiVelicinu(i);
  336.  
  337.             if(i == 35)
  338.                 i = 20;
  339.             else if(i == 20)
  340.                 i = 29;
  341.             else if(i == 29)
  342.                 i = 35;
  343.  
  344.             CentrirajKonzolu();
  345.             CentrirajKonzolu();
  346.             system("MODE 36, 18");
  347.             PodesiKonzolu2();
  348.             OdstampajKonzolu();
  349.             NoviPotez(tabla);
  350.  
  351.             if(brPoteza % 2 && rotacija == UKLJUCENO)
  352.                 ObrnutoOdstampajTablu(tabla);
  353.             else
  354.                 OdstampajTablu(tabla);
  355.         }
  356.         else if(y == 0 && (x == 10 || x == 11) && brPoteza > 0)
  357.         {
  358.             tabla = istorija[brPoteza - 1];
  359.             brPoteza--;
  360.             istorija.erase(istorija.begin() + brPoteza + 1);
  361.             NoviPotez(tabla);
  362.  
  363.             if(brPoteza % 2 && rotacija == UKLJUCENO)
  364.                 ObrnutoOdstampajTablu(tabla);
  365.  
  366.             else
  367.                 OdstampajTablu(tabla);
  368.         }
  369.         else if(y == 0 && (x == 30 || x == 31))
  370.         {
  371.             if(rotacija == UKLJUCENO)
  372.             {
  373.                 rotacija = ISKLJUCENO;
  374.  
  375.                 if(boja == SVETLO)
  376.                     SetConsoleTextAttribute(console, 36);
  377.                 else if(boja == TAMNO)
  378.                     SetConsoleTextAttribute(console, 87);
  379.                 else if(boja == SIVO)
  380.                     SetConsoleTextAttribute(console, 138);
  381.  
  382.                 gotoxy(30, 0);
  383.                 wprintf(L"");
  384.             }
  385.             else
  386.             {
  387.                 rotacija = UKLJUCENO;
  388.  
  389.                 if(boja == SVETLO)
  390.                     SetConsoleTextAttribute(console, 36);
  391.                 else if(boja == TAMNO)
  392.                     SetConsoleTextAttribute(console, 87);
  393.                 else if(boja == SIVO)
  394.                     SetConsoleTextAttribute(console, 138);
  395.  
  396.                 gotoxy(30, 0);
  397.                 wprintf(L"");
  398.             }
  399.  
  400.             NoviPotez(tabla);
  401.  
  402.             if(brPoteza % 2 && rotacija == UKLJUCENO)
  403.                 ObrnutoOdstampajTablu(tabla);
  404.             else
  405.                 OdstampajTablu(tabla);
  406.         }
  407.         else if(y > 2 && y < 11 && x > 9 && x < 26)
  408.         {
  409.             if(brPoteza % 2 && rotacija == UKLJUCENO)
  410.                 ObrnutaPozicijaNaTabli(x, y);
  411.             else
  412.                 PozicijaNaTabli(x, y);
  413.  
  414.             gotoxy(14, 14);
  415.             wprintf(L"%d , %d           ", x, y);
  416.  
  417.             if(tabla.polje[y][x].stanjePolja == NAPADNUTO)
  418.             {
  419.                 PozicijaIzabranog(xizb, yizb, tabla);
  420.  
  421.                 if(tabla.polje[yizb][xizb].bojaFigure == BELO)
  422.                 {
  423.                     if(tabla.polje[y + 1][x].anpasan == UKLJUCENO)
  424.                     {
  425.                         wcscpy(tabla.levo[tabla.brlevo / 2][tabla.brlevo % 2].figura, PIJUN);
  426.                         wcscpy(tabla.polje[y + 1][x].figura, PRAZNO);
  427.                     }
  428.                     else
  429.                         wcscpy(tabla.levo[tabla.brlevo / 2][tabla.brlevo % 2].figura, tabla.polje[y][x].figura);
  430.  
  431.                     tabla.brlevo++;
  432.                 }
  433.                 else
  434.                 {
  435.                     if(tabla.polje[y - 1][x].anpasan == UKLJUCENO)
  436.                     {
  437.                         wcscpy(tabla.desno[tabla.brdesno / 2][tabla.brdesno % 2].figura, PIJUN);
  438.                         wcscpy(tabla.polje[y - 1][x].figura, PRAZNO);
  439.                     }
  440.                     else
  441.                         wcscpy(tabla.desno[tabla.brdesno / 2][tabla.brdesno % 2].figura, tabla.polje[y][x].figura);
  442.  
  443.                     tabla.brdesno++;
  444.                 }
  445.  
  446.                 wcscpy(tabla.polje[y][x].figura, tabla.polje[yizb][xizb].figura);
  447.                 wcscpy(tabla.polje[yizb][xizb].figura, PRAZNO);
  448.                 tabla.polje[y][x].bojaFigure = tabla.polje[yizb][xizb].bojaFigure;
  449.                 NoviPotez(tabla);
  450.                 istorija.push_back(tabla);
  451.                 brPoteza++;
  452.             }
  453.             else if(!wcscmp(tabla.polje[y][x].figura, KRALJ))
  454.             {
  455.                 if((tabla.polje[y][x].bojaFigure == BELO && brPoteza % 2 == 0) || (tabla.polje[y][x].bojaFigure == CRNO && brPoteza % 2 == 1))
  456.                 {
  457.                     NoviPotez(tabla);
  458.  
  459.                     if(!wcscmp(tabla.polje[y][x - 1].figura, PIJUN) && tabla.polje[y][x - 1].bojaFigure == CRNO && tabla.polje[y][x - 1].anpasan == UKLJUCENO && JelUnutarTable(x - 1, y - 1))
  460.                         tabla.polje[y - 1][x - 1].stanjePolja = NAPADNUTO;
  461.  
  462.                     PostaviKralja(tabla, x, y);
  463.                 }
  464.                 else
  465.                     NoviPotez(tabla);
  466.             }
  467.             else if(!wcscmp(tabla.polje[y][x].figura, PIJUN))
  468.             {
  469.                 if((tabla.polje[y][x].bojaFigure == BELO && brPoteza % 2 == 0) || (tabla.polje[y][x].bojaFigure == CRNO && brPoteza % 2 == 1))
  470.                 {
  471.                     NoviPotez(tabla);
  472.                     PostaviPijuna(tabla, x, y);
  473.                 }
  474.                 else
  475.                     NoviPotez(tabla);
  476.             }
  477.             else if(!wcscmp(tabla.polje[y][x].figura, KONJ))
  478.             {
  479.                 if((tabla.polje[y][x].bojaFigure == BELO && brPoteza % 2 == 0) || (tabla.polje[y][x].bojaFigure == CRNO && brPoteza % 2 == 1))
  480.                 {
  481.                     NoviPotez(tabla);
  482.                     PostaviKonja(tabla, x, y);
  483.                 }
  484.                 else
  485.                     NoviPotez(tabla);
  486.             }
  487.             else if(!wcscmp(tabla.polje[y][x].figura, PRAZNO))
  488.                 NoviPotez(tabla);
  489.             else if(!wcscmp(tabla.polje[y][x].figura, TACKA))
  490.             {
  491.                 PozicijaIzabranog(xizb, yizb, tabla);
  492.                 wcscpy(tabla.polje[y][x].figura, tabla.polje[yizb][xizb].figura);
  493.                 wcscpy(tabla.polje[yizb][xizb].figura, PRAZNO);
  494.                 tabla.polje[y][x].bojaFigure = tabla.polje[yizb][xizb].bojaFigure;
  495.  
  496.                 if(!wcscmp(tabla.polje[y][x].figura, PIJUN) && ((tabla.polje[y][x].bojaFigure == BELO && y == yizb - 2) || (tabla.polje[y][x].bojaFigure == CRNO && y == yizb + 2)))
  497.                     tabla.polje[y][x].anpasan = UKLJUCENO;
  498.  
  499.                 NoviPotez(tabla);
  500.                 istorija.push_back(tabla);
  501.                 brPoteza++;
  502.                 sacekaj = UKLJUCENO;
  503.             }
  504.  
  505.             if(brPoteza % 2 && rotacija == UKLJUCENO)
  506.             {
  507.                 if(sacekaj == UKLJUCENO)
  508.                 {
  509.                     OdstampajTablu(tabla);
  510.                     Sleep(260);
  511.                     sacekaj = ISKLJUCENO;
  512.                 }
  513.  
  514.                 ObrnutoOdstampajTablu(tabla);
  515.             }
  516.             else
  517.             {
  518.                 if(sacekaj == UKLJUCENO)
  519.                 {
  520.                     ObrnutoOdstampajTablu(tabla);
  521.                     Sleep(260);
  522.                     sacekaj = ISKLJUCENO;
  523.                 }
  524.  
  525.                 OdstampajTablu(tabla);
  526.             }
  527.         }
  528.  
  529.  
  530.  
  531.  
  532. //            if((wcscmp(tabla.polje[y][x].figura, PRAZNO) && wcscmp(tabla.polje[y][x].figura, TACKA)))
  533. //            {
  534. //                for(int a=0; a<8; a++)
  535. //                        for(int b=0; b<8; b++)
  536. //                            if(tabla.polje[a][b].stanjePolja == IZABRANO)
  537. //                                tabla.polje[a][b].stanjePolja = NEUTRALNO;
  538. //                tabla.polje[y][x].stanjePolja = IZABRANO;
  539. //                stanje = IZABRANO;
  540. //            }
  541. //            else
  542. //            {
  543. //                    stanje = NEUTRALNO;
  544. //                    for(int a=0; a<8; a++)
  545. //                        for(int b=0; b<8; b++)
  546. //                            if(tabla.polje[a][b].stanjePolja == IZABRANO)
  547. //                                tabla.polje[a][b].stanjePolja = NEUTRALNO;
  548. //            }
  549.  
  550.     }
  551.     while(1);
  552.  
  553.  
  554.  
  555. //    int x, y;
  556. //    int i = 0, j = 0;
  557. //
  558. //
  559. //    while(1)
  560. //    {
  561. //        SakriKursor();
  562. //        //ObrisiEkran();
  563. //        UcitajKlik(x, y);
  564. ////        gotoxy(x,y);
  565. //        //SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 238);
  566. ////        _setmode(_fileno(stdout), _O_U8TEXT);
  567. ////        wprintf(L"█");//}
  568. //        //system("cls");
  569. //
  570. //        gotoxy(3, 4);
  571. //        printf("1");
  572. //        gotoxy(8, 10);
  573. //        printf("2");
  574. //        gotoxy(12, 3);
  575. //        printf("3");
  576. //        gotoxy(17, 6);
  577. //        printf("4");
  578. //
  579. //        gotoxy(0, 0);
  580. //        printf("             ", x, y);
  581. //        gotoxy(0, 0);
  582. //        printf("%d , %d", x, y);  //}
  583. //        gotoxy(i, 1);
  584. //
  585. //        if(x == 3 && y == 4)
  586. //            printf("a");
  587. //
  588. //        if(x == 8 && y == 10)
  589. //            printf("b");
  590. //
  591. //        if(x == 12 && y == 3)
  592. //            printf("c");
  593. //
  594. //        if(x == 17 && y == 6)
  595. //            printf("d");
  596. //
  597. //        i++;
  598. //    }
  599.  
  600.     SakriKursor();
  601.     ObrisiKonzoluPodesavanja();
  602.     Sleep(999999999);
  603.  
  604.     return 0;
  605. }
  606.  
  607. void NapraviTablu(Tabla &tabla)
  608. {
  609.     tabla.brlevo = 0;
  610.     tabla.brdesno = 0;
  611.  
  612.     for(int i = 0; i < 8; i++)
  613.         for(int j = 0; j < 8; j++)
  614.         {
  615.             tabla.polje[i][j].stanjePolja = NEUTRALNO;
  616.             tabla.polje[i][j].anpasan = ISKLJUCENO;
  617.  
  618.             if((i + j) % 2 == 0)
  619.                 tabla.polje[i][j].bojaPolja = BELO;
  620.             else
  621.                 tabla.polje[i][j].bojaPolja = CRNO;
  622.         }
  623.  
  624.     for(int i = 0; i < 2; i++)
  625.         for(int j = 0; j < 8; j++)
  626.         {
  627.             tabla.polje[i][j].bojaFigure = CRNO;
  628.             tabla.polje[i + 6][j].bojaFigure = BELO;
  629.         }
  630.  
  631.     for(int j = 0; j < 8; j++)
  632.     {
  633.         wcscpy(tabla.polje[1][j].figura, PIJUN);
  634.         wcscpy(tabla.polje[6][j].figura, PIJUN);
  635.     }
  636.  
  637.     wcscpy(tabla.polje[0][0].figura, TOP);
  638.     wcscpy(tabla.polje[0][7].figura, TOP);
  639.     wcscpy(tabla.polje[7][0].figura, TOP);
  640.     wcscpy(tabla.polje[7][7].figura, TOP);
  641.  
  642.     wcscpy(tabla.polje[0][1].figura, KONJ);
  643.     wcscpy(tabla.polje[0][6].figura, KONJ);
  644.     wcscpy(tabla.polje[7][1].figura, KONJ);
  645.     wcscpy(tabla.polje[7][6].figura, KONJ);
  646.  
  647.     wcscpy(tabla.polje[0][2].figura, LOVAC);
  648.     wcscpy(tabla.polje[0][5].figura, LOVAC);
  649.     wcscpy(tabla.polje[7][2].figura, LOVAC);
  650.     wcscpy(tabla.polje[7][5].figura, LOVAC);
  651.  
  652.     wcscpy(tabla.polje[0][3].figura, KRALJICA);
  653.     wcscpy(tabla.polje[7][3].figura, KRALJICA);
  654.  
  655.     wcscpy(tabla.polje[0][4].figura, KRALJ);
  656.     wcscpy(tabla.polje[7][4].figura, KRALJ);
  657.  
  658.     for(int i = 2; i < 6; i++)
  659.         for(int j = 0; j < 8; j++)
  660.         {
  661.             tabla.polje[i][j].bojaFigure = ZELENO;
  662.             wcscpy(tabla.polje[i][j].figura, PRAZNO);
  663.         }
  664.  
  665.     for(int i = 0; i < 8; i++)
  666.         for(int j = 0; j < 2; j++)
  667.         {
  668.             tabla.levo[i][j].anpasan = ISKLJUCENO;
  669.             tabla.levo[i][j].bojaFigure = CRNO;
  670.             tabla.levo[i][j].stanjePolja = NEUTRALNO;
  671.             tabla.desno[i][j].anpasan = ISKLJUCENO;
  672.             tabla.desno[i][j].bojaFigure = BELO;
  673.             tabla.desno[i][j].stanjePolja = NEUTRALNO;
  674.             wcscpy(tabla.levo[i][j].figura, PRAZNO);
  675.             wcscpy(tabla.desno[i][j].figura, PRAZNO);
  676.         }
  677. }
  678.  
  679. void SakriKursor()
  680. {
  681.     HANDLE consoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);
  682.     CONSOLE_CURSOR_INFO info;
  683.     info.dwSize = 100;
  684.     info.bVisible = FALSE;
  685.     SetConsoleCursorInfo(consoleHandle, &info);
  686. }
  687.  
  688. void ObrisiEkran()
  689. {
  690.     HANDLE hStdOut;
  691.     CONSOLE_SCREEN_BUFFER_INFO csbi;
  692.     DWORD count;
  693.     DWORD cellCount;
  694.     COORD homeCoords = {0, 0};
  695.  
  696.     hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
  697.  
  698.     if (hStdOut == INVALID_HANDLE_VALUE)
  699.         return;
  700.  
  701.     GetConsoleScreenBufferInfo(hStdOut, &csbi);
  702.     cellCount = csbi.dwSize.X * csbi.dwSize.Y;
  703.  
  704.     FillConsoleOutputCharacter(hStdOut, (TCHAR) ' ', cellCount, homeCoords, &count);
  705.     FillConsoleOutputAttribute(hStdOut, csbi.wAttributes, cellCount, homeCoords, &count);
  706.     SetConsoleCursorPosition(hStdOut, homeCoords);
  707. }
  708.  
  709. void gotoxy(int x, int y)
  710. {
  711.     COORD koordinate;
  712.     koordinate.X = x;
  713.     koordinate.Y = y;
  714.     SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), koordinate);
  715. }
  716.  
  717. int UcitajKlik(int &x, int &y)
  718. {
  719.     DWORD info;
  720.     INPUT_RECORD input;
  721.     HANDLE in = GetStdHandle(STD_INPUT_HANDLE);
  722.     SetConsoleMode(in, ENABLE_PROCESSED_INPUT | ENABLE_MOUSE_INPUT);
  723.     ReadConsoleInput(in, &input, 1, &info);
  724.  
  725.     if(input.Event.MouseEvent.dwButtonState !=  0x0001)
  726.     {
  727. GOBACK:
  728.         ReadConsoleInput(in, &input, 1, &info);
  729.  
  730.         if(input.Event.MouseEvent.dwButtonState ==  0x0001)
  731.         {
  732. GOBACK2:
  733.             ReadConsoleInput(in, &input, 1, &info);
  734.  
  735.             if(input.Event.MouseEvent.dwButtonState !=  0x0001)
  736.             {
  737.                 x = input.Event.MouseEvent.dwMousePosition.X;
  738.                 y = input.Event.MouseEvent.dwMousePosition.Y;
  739.             }
  740.             else
  741.                 goto GOBACK2;
  742.         }
  743.         else
  744.             goto GOBACK;
  745.     }
  746.     else
  747.         UcitajKlik(x, y);
  748.  
  749.     return 0;
  750. }
  751.  
  752. void CentrirajKonzolu()
  753. {
  754.     RECT rectClient, rectWindow;
  755.     HWND hWnd = GetConsoleWindow();
  756.     GetClientRect(hWnd, &rectClient);
  757.     GetWindowRect(hWnd, &rectWindow);
  758.     int posx, posy;
  759.     posx = GetSystemMetrics(SM_CXSCREEN) / 2 - (rectWindow.right - rectWindow.left) / 2;
  760.     posy = GetSystemMetrics(SM_CYSCREEN) / 2 - (rectWindow.bottom - rectWindow.top) / 2;
  761.  
  762.     SetWindowPos(GetConsoleWindow(), HWND_TOP, posx, posy, 0, 0, SWP_NOSIZE);
  763. }
  764.  
  765. void PodesiKonzolu()
  766. {
  767.     HWND consoleWindow = GetConsoleWindow();
  768.     SetWindowLong(consoleWindow, GWL_STYLE, GetWindowLong(consoleWindow, GWL_STYLE) & ~WS_MAXIMIZEBOX & ~WS_SIZEBOX);
  769.  
  770.     SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE),  ENABLE_QUICK_EDIT_MODE | ENABLE_EXTENDED_FLAGS);
  771.     SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE),  ENABLE_EXTENDED_FLAGS);
  772.  
  773.     _setmode(_fileno(stdout), _O_U8TEXT);
  774.     SetConsoleTitleW(L"ŠAH");
  775.     _setmode(_fileno(stdout), _O_TEXT);
  776.  
  777.     if(boja == SVETLO)
  778.         system("color 23");
  779.     else if(boja == TAMNO)
  780.         system("color 56");
  781.     else if(boja == SIVO)
  782.         system("color 89");
  783.  
  784.     _CONSOLE_SCREEN_BUFFER_INFOEX info;
  785.     info.cbSize = sizeof(info);
  786.     HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
  787.     GetConsoleScreenBufferInfoEx(hConsole, &info);
  788.     info.dwSize = {36, 19};
  789.     info.ColorTable[0] = RGB(242, 242, 242);
  790.     info.ColorTable[1] = RGB(10, 10, 10);
  791.     info.ColorTable[2] = RGB(198, 175, 141);
  792.     info.ColorTable[3] = RGB(114, 71, 56);
  793.     info.ColorTable[4] = RGB(50, 31, 26);
  794.     info.ColorTable[5] = RGB(132, 94, 73);
  795.     info.ColorTable[6] = RGB(73, 47, 37);
  796.     info.ColorTable[7] = RGB(22, 11, 4);
  797.     info.ColorTable[8] = RGB(158, 158, 158);
  798.     info.ColorTable[9] = RGB(102, 102, 102);
  799.     info.ColorTable[10] = RGB(43, 43, 43);
  800.     info.ColorTable[11] = RGB(0, 119, 65);
  801.     info.ColorTable[12] = RGB(126, 33, 35);
  802.     info.ColorTable[13] = RGB(10, 10, 130);
  803.     info.ColorTable[14] = RGB(240, 191, 40);
  804.     info.ColorTable[15] = RGB(255, 255, 255);
  805.  
  806.     SetConsoleScreenBufferInfoEx(hConsole, &info);
  807.     PodesiVelicinu(29);
  808.     SakriKursor();
  809.     system("MODE 36, 18");
  810. }
  811.  
  812. void PodesiKonzolu2()
  813. {
  814.     _CONSOLE_SCREEN_BUFFER_INFOEX info;
  815.     info.cbSize = sizeof(info);
  816.     HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
  817.     GetConsoleScreenBufferInfoEx(hConsole, &info);
  818.     info.dwSize = {36, 17};
  819.     SetConsoleScreenBufferInfoEx(hConsole, &info);
  820. }
  821.  
  822. void PodesiVelicinu(int i)
  823. {
  824.     CONSOLE_FONT_INFOEX cfi;
  825.     cfi.cbSize = sizeof(cfi);
  826.     cfi.nFont = 0;
  827.     cfi.dwFontSize.X = 0;
  828.     cfi.dwFontSize.Y = i;
  829.     cfi.FontFamily = TMPF_TRUETYPE;
  830.     cfi.FontWeight = FW_NORMAL;
  831.     std::wcscpy(cfi.FaceName, L"MS Gothic");
  832.     SetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE), FALSE, &cfi);
  833. }
  834.  
  835. void OdstampajTablu(Tabla tabla)
  836. {
  837.     HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);
  838.     _setmode(_fileno(stdout), _O_U8TEXT);
  839.  
  840.     for(int i = 0; i < 8; i++)
  841.         for(int j = 0; j < 8; j++)
  842.         {
  843.             if(tabla.polje[i][j].stanjePolja == IZABRANO && tabla.polje[i][j].bojaFigure == CRNO)
  844.                 SetConsoleTextAttribute(console, 177);
  845.             else if(tabla.polje[i][j].stanjePolja == IZABRANO && tabla.polje[i][j].bojaFigure == BELO)
  846.                 SetConsoleTextAttribute(console, 176);
  847.             else if(tabla.polje[i][j].stanjePolja == NAPADNUTO && (tabla.polje[i][j].bojaFigure == CRNO || tabla.polje[i][j].bojaFigure == ZELENO))
  848.                 SetConsoleTextAttribute(console, 193);
  849.             else if(tabla.polje[i][j].stanjePolja == NAPADNUTO && tabla.polje[i][j].bojaFigure == BELO)
  850.                 SetConsoleTextAttribute(console, 192);
  851.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == BELO && boja == SVETLO && tabla.polje[i][j].bojaPolja == BELO)
  852.                 SetConsoleTextAttribute(console, 32);
  853.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == CRNO && boja == SVETLO && tabla.polje[i][j].bojaPolja == BELO)
  854.                 SetConsoleTextAttribute(console, 33);
  855.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == BELO && boja == TAMNO && tabla.polje[i][j].bojaPolja == BELO)
  856.                 SetConsoleTextAttribute(console, 80);
  857.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == CRNO && boja == TAMNO && tabla.polje[i][j].bojaPolja == BELO)
  858.                 SetConsoleTextAttribute(console, 81);
  859.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == BELO && boja == SIVO && tabla.polje[i][j].bojaPolja == BELO)
  860.                 SetConsoleTextAttribute(console, 128);
  861.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == CRNO && boja == SIVO && tabla.polje[i][j].bojaPolja == BELO)
  862.                 SetConsoleTextAttribute(console, 129);
  863.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == BELO && boja == SVETLO && tabla.polje[i][j].bojaPolja == CRNO)
  864.                 SetConsoleTextAttribute(console, 48);
  865.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == CRNO && boja == SVETLO && tabla.polje[i][j].bojaPolja == CRNO)
  866.                 SetConsoleTextAttribute(console, 49);
  867.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == BELO && boja == TAMNO && tabla.polje[i][j].bojaPolja == CRNO)
  868.                 SetConsoleTextAttribute(console, 96);
  869.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == CRNO && boja == TAMNO && tabla.polje[i][j].bojaPolja == CRNO)
  870.                 SetConsoleTextAttribute(console, 97);
  871.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == BELO && boja == SIVO && tabla.polje[i][j].bojaPolja == CRNO)
  872.                 SetConsoleTextAttribute(console, 144);
  873.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == CRNO && boja == SIVO && tabla.polje[i][j].bojaPolja == CRNO)
  874.                 SetConsoleTextAttribute(console, 145);
  875.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == ZELENO && boja == SVETLO && tabla.polje[i][j].bojaPolja == BELO)
  876.                 SetConsoleTextAttribute(console, 43);
  877.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == ZELENO && boja == TAMNO && tabla.polje[i][j].bojaPolja == BELO)
  878.                 SetConsoleTextAttribute(console, 91);
  879.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == ZELENO && boja == SIVO && tabla.polje[i][j].bojaPolja == BELO)
  880.                 SetConsoleTextAttribute(console, 139);
  881.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == ZELENO && boja == SVETLO && tabla.polje[i][j].bojaPolja == CRNO)
  882.                 SetConsoleTextAttribute(console, 59);
  883.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == ZELENO && boja == TAMNO && tabla.polje[i][j].bojaPolja == CRNO)
  884.                 SetConsoleTextAttribute(console, 107);
  885.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == ZELENO && boja == SIVO && tabla.polje[i][j].bojaPolja == CRNO)
  886.                 SetConsoleTextAttribute(console, 155);
  887.  
  888.             gotoxy(10 + j * 2, 3 + i);
  889.             wprintf(tabla.polje[i][j].figura);
  890.         }
  891.  
  892.     OdstampajLevoDesno(tabla);
  893. }
  894.  
  895. void ObrnutoOdstampajTablu(Tabla tabla)
  896. {
  897.     HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);
  898.     _setmode(_fileno(stdout), _O_U8TEXT);
  899.  
  900.     for(int i = 0; i < 8; i++)
  901.         for(int j = 0; j < 8; j++)
  902.         {
  903.             if(tabla.polje[i][j].stanjePolja == IZABRANO && tabla.polje[i][j].bojaFigure == CRNO)
  904.                 SetConsoleTextAttribute(console, 177);
  905.             else if(tabla.polje[i][j].stanjePolja == IZABRANO && tabla.polje[i][j].bojaFigure == BELO)
  906.                 SetConsoleTextAttribute(console, 176);
  907.             else if(tabla.polje[i][j].stanjePolja == NAPADNUTO && tabla.polje[i][j].bojaFigure == CRNO)
  908.                 SetConsoleTextAttribute(console, 193);
  909.             else if(tabla.polje[i][j].stanjePolja == NAPADNUTO && tabla.polje[i][j].bojaFigure == BELO)
  910.                 SetConsoleTextAttribute(console, 192);
  911.             else if(tabla.polje[i][j].stanjePolja == NAPADNUTO && !wcscmp(tabla.polje[i][j].figura, PRAZNO))
  912.                 SetConsoleTextAttribute(console, 192);
  913.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == BELO && boja == SVETLO && tabla.polje[i][j].bojaPolja == BELO)
  914.                 SetConsoleTextAttribute(console, 32);
  915.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == CRNO && boja == SVETLO && tabla.polje[i][j].bojaPolja == BELO)
  916.                 SetConsoleTextAttribute(console, 33);
  917.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == BELO && boja == TAMNO && tabla.polje[i][j].bojaPolja == BELO)
  918.                 SetConsoleTextAttribute(console, 80);
  919.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == CRNO && boja == TAMNO && tabla.polje[i][j].bojaPolja == BELO)
  920.                 SetConsoleTextAttribute(console, 81);
  921.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == BELO && boja == SIVO && tabla.polje[i][j].bojaPolja == BELO)
  922.                 SetConsoleTextAttribute(console, 128);
  923.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == CRNO && boja == SIVO && tabla.polje[i][j].bojaPolja == BELO)
  924.                 SetConsoleTextAttribute(console, 129);
  925.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == BELO && boja == SVETLO && tabla.polje[i][j].bojaPolja == CRNO)
  926.                 SetConsoleTextAttribute(console, 48);
  927.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == CRNO && boja == SVETLO && tabla.polje[i][j].bojaPolja == CRNO)
  928.                 SetConsoleTextAttribute(console, 49);
  929.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == BELO && boja == TAMNO && tabla.polje[i][j].bojaPolja == CRNO)
  930.                 SetConsoleTextAttribute(console, 96);
  931.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == CRNO && boja == TAMNO && tabla.polje[i][j].bojaPolja == CRNO)
  932.                 SetConsoleTextAttribute(console, 97);
  933.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == BELO && boja == SIVO && tabla.polje[i][j].bojaPolja == CRNO)
  934.                 SetConsoleTextAttribute(console, 144);
  935.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == CRNO && boja == SIVO && tabla.polje[i][j].bojaPolja == CRNO)
  936.                 SetConsoleTextAttribute(console, 145);
  937.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == ZELENO && boja == SVETLO && tabla.polje[i][j].bojaPolja == BELO)
  938.                 SetConsoleTextAttribute(console, 43);
  939.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == ZELENO && boja == TAMNO && tabla.polje[i][j].bojaPolja == BELO)
  940.                 SetConsoleTextAttribute(console, 91);
  941.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == ZELENO && boja == SIVO && tabla.polje[i][j].bojaPolja == BELO)
  942.                 SetConsoleTextAttribute(console, 139);
  943.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == ZELENO && boja == SVETLO && tabla.polje[i][j].bojaPolja == CRNO)
  944.                 SetConsoleTextAttribute(console, 59);
  945.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == ZELENO && boja == TAMNO && tabla.polje[i][j].bojaPolja == CRNO)
  946.                 SetConsoleTextAttribute(console, 107);
  947.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == ZELENO && boja == SIVO && tabla.polje[i][j].bojaPolja == CRNO)
  948.                 SetConsoleTextAttribute(console, 155);
  949.  
  950.             gotoxy(24 - j * 2, 10 - i);
  951.             wprintf(tabla.polje[i][j].figura);
  952.         }
  953.  
  954.     OdstampajLevoDesno(tabla);
  955. }
  956.  
  957. void OdstampajLevoDesno(Tabla tabla)
  958. {
  959.     HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);
  960.     _setmode(_fileno(stdout), _O_U8TEXT);
  961.  
  962.     for(int i = 0; i < 8; i++)
  963.         for(int j = 0; j < 2; j++)
  964.         {
  965.             if(boja == SVETLO)
  966.                 SetConsoleTextAttribute(console, 81);
  967.             else if(boja == TAMNO)
  968.                 SetConsoleTextAttribute(console, 97);
  969.             else if(boja == SIVO)
  970.                 SetConsoleTextAttribute(console, 145);
  971.  
  972.             gotoxy(2 + j * 2, 3 + i);
  973.             wprintf(tabla.levo[i][j].figura);
  974.         }
  975.  
  976.     for(int i = 0; i < 8; i++)
  977.         for(int j = 0; j < 2; j++)
  978.         {
  979.             if(boja == SVETLO)
  980.                 SetConsoleTextAttribute(console, 80);
  981.             else if(boja == TAMNO)
  982.                 SetConsoleTextAttribute(console, 96);
  983.             else if(boja == SIVO)
  984.                 SetConsoleTextAttribute(console, 144);
  985.  
  986.             gotoxy(30 + j * 2, 3 + i);
  987.             wprintf(tabla.desno[i][j].figura);
  988.         }
  989. }
  990.  
  991. void PozicijaNaTabli(int &x, int &y)
  992. {
  993.     switch(x)
  994.     {
  995.         case 10:
  996.         case 11:
  997.             x = 0;
  998.             break;
  999.  
  1000.         case 12:
  1001.         case 13:
  1002.             x = 1;
  1003.             break;
  1004.  
  1005.         case 14:
  1006.         case 15:
  1007.             x = 2;
  1008.             break;
  1009.  
  1010.         case 16:
  1011.         case 17:
  1012.             x = 3;
  1013.             break;
  1014.  
  1015.         case 18:
  1016.         case 19:
  1017.             x = 4;
  1018.             break;
  1019.  
  1020.         case 20:
  1021.         case 21:
  1022.             x = 5;
  1023.             break;
  1024.  
  1025.         case 22:
  1026.         case 23:
  1027.             x = 6;
  1028.             break;
  1029.  
  1030.         case 24:
  1031.         case 25:
  1032.             x = 7;
  1033.     }
  1034.  
  1035.     switch(y)
  1036.     {
  1037.         case 10:
  1038.             y = 7;
  1039.             break;
  1040.  
  1041.         case 9:
  1042.             y = 6;
  1043.             break;
  1044.  
  1045.         case 8:
  1046.             y = 5;
  1047.             break;
  1048.  
  1049.         case 7:
  1050.             y = 4;
  1051.             break;
  1052.  
  1053.         case 6:
  1054.             y = 3;
  1055.             break;
  1056.  
  1057.         case 5:
  1058.             y = 2;
  1059.             break;
  1060.  
  1061.         case 4:
  1062.             y = 1;
  1063.             break;
  1064.  
  1065.         case 3:
  1066.             y = 0;
  1067.     }
  1068. }
  1069.  
  1070. void ObrnutaPozicijaNaTabli(int &x, int &y)
  1071. {
  1072.     switch(x)
  1073.     {
  1074.         case 10:
  1075.         case 11:
  1076.             x = 7;
  1077.             break;
  1078.  
  1079.         case 12:
  1080.         case 13:
  1081.             x = 6;
  1082.             break;
  1083.  
  1084.         case 14:
  1085.         case 15:
  1086.             x = 5;
  1087.             break;
  1088.  
  1089.         case 16:
  1090.         case 17:
  1091.             x = 4;
  1092.             break;
  1093.  
  1094.         case 18:
  1095.         case 19:
  1096.             x = 3;
  1097.             break;
  1098.  
  1099.         case 20:
  1100.         case 21:
  1101.             x = 2;
  1102.             break;
  1103.  
  1104.         case 22:
  1105.         case 23:
  1106.             x = 1;
  1107.             break;
  1108.  
  1109.         case 24:
  1110.         case 25:
  1111.             x = 0;
  1112.     }
  1113.  
  1114.     switch(y)
  1115.     {
  1116.         case 10:
  1117.             y = 0;
  1118.             break;
  1119.  
  1120.         case 9:
  1121.             y = 1;
  1122.             break;
  1123.  
  1124.         case 8:
  1125.             y = 2;
  1126.             break;
  1127.  
  1128.         case 7:
  1129.             y = 3;
  1130.             break;
  1131.  
  1132.         case 6:
  1133.             y = 4;
  1134.             break;
  1135.  
  1136.         case 5:
  1137.             y = 5;
  1138.             break;
  1139.  
  1140.         case 4:
  1141.             y = 6;
  1142.             break;
  1143.  
  1144.         case 3:
  1145.             y = 7;
  1146.     }
  1147. }
  1148.  
  1149. void NoviPotez(Tabla &tabla)
  1150. {
  1151.     for(int a = 0; a < 8; a++)
  1152.         for(int b = 0; b < 8; b++)
  1153.         {
  1154.             if(tabla.polje[a][b].stanjePolja == IZABRANO)
  1155.                 tabla.polje[a][b].stanjePolja = NEUTRALNO;
  1156.  
  1157.             if(tabla.polje[a][b].stanjePolja == NAPADNUTO)
  1158.                 tabla.polje[a][b].stanjePolja = NEUTRALNO;
  1159.  
  1160.             if(!wcscmp(tabla.polje[a][b].figura, TACKA))
  1161.                 wcscpy(tabla.polje[a][b].figura, PRAZNO);
  1162.  
  1163.             if(!wcscmp(tabla.polje[a][b].figura, PRAZNO))
  1164.                 tabla.polje[a][b].bojaFigure = ZELENO;
  1165.         }
  1166. }
  1167.  
  1168. void PozicijaIzabranog(int &xizb, int &yizb, Tabla tabla)
  1169. {
  1170.     for(int a = 0; a < 8; a++)
  1171.         for(int b = 0; b < 8; b++)
  1172.             if(tabla.polje[a][b].stanjePolja == IZABRANO)
  1173.             {
  1174.                 yizb = a;
  1175.                 xizb = b;
  1176.                 return;
  1177.             }
  1178. }
  1179.  
  1180. short JelUnutarTable(int x, int y)
  1181. {
  1182.     if(x >= 0 && x <= 7 && y >= 0 && y <= 7)
  1183.         return 1;
  1184.     else
  1185.         return 0;
  1186. }
  1187.  
  1188. void OdstampajKonzolu()
  1189. {
  1190.     HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);
  1191.     _setmode(_fileno(stdout), _O_U8TEXT);
  1192.  
  1193.     gotoxy(0, 0);
  1194.  
  1195.     if(boja == SVETLO)
  1196.         SetConsoleTextAttribute(console, 45);
  1197.     else if(boja == TAMNO)
  1198.         SetConsoleTextAttribute(console, 93);
  1199.     else if(boja == SIVO)
  1200.         SetConsoleTextAttribute(console, 141);
  1201.  
  1202.     wprintf(L"");  // save
  1203.  
  1204.     if(boja == SVETLO)
  1205.         SetConsoleTextAttribute(console, 46);
  1206.     else if(boja == TAMNO)
  1207.         SetConsoleTextAttribute(console, 94);
  1208.     else if(boja == SIVO)
  1209.         SetConsoleTextAttribute(console, 142);
  1210.  
  1211.     wprintf(L"");  // open
  1212.  
  1213.     if(boja == SVETLO)
  1214.         SetConsoleTextAttribute(console, 44);
  1215.     else if(boja == TAMNO)
  1216.         SetConsoleTextAttribute(console, 92);
  1217.     else if(boja == SIVO)
  1218.         SetConsoleTextAttribute(console, 140);
  1219.  
  1220.     wprintf(L"");  // restart      
  1221.  
  1222.     if(boja == SVETLO)
  1223.         SetConsoleTextAttribute(console, 36);
  1224.     else if(boja == TAMNO)
  1225.         SetConsoleTextAttribute(console, 87);
  1226.     else if(boja == SIVO)
  1227.         SetConsoleTextAttribute(console, 138);
  1228.  
  1229.     // gear 
  1230.     wprintf(L"");  // color
  1231.     wprintf(L"");  // resize
  1232.     wprintf(L"");  // back
  1233.     wprintf(L"                  "); // space
  1234.  
  1235.     if(rotacija == UKLJUCENO)
  1236.         wprintf(L"");  // rotation 
  1237.     else
  1238.         wprintf(L"");  // rotation 
  1239.  
  1240.     if(boja == SVETLO)
  1241.         SetConsoleTextAttribute(console, 47);
  1242.     else if(boja == TAMNO)
  1243.         SetConsoleTextAttribute(console, 95);
  1244.     else if(boja == SIVO)
  1245.         SetConsoleTextAttribute(console, 143);
  1246.  
  1247.     wprintf(L"");  // info
  1248.  
  1249.     if(boja == SVETLO)
  1250.         SetConsoleTextAttribute(console, 44);
  1251.     else if(boja == TAMNO)
  1252.         SetConsoleTextAttribute(console, 92);
  1253.     else if(boja == SIVO)
  1254.         SetConsoleTextAttribute(console, 140);
  1255.  
  1256.     wprintf(L"\n");  // quit
  1257.  
  1258.     if(boja == SVETLO)
  1259.         SetConsoleTextAttribute(console, 36);
  1260.     else if(boja == TAMNO)
  1261.         SetConsoleTextAttribute(console, 87);
  1262.     else if(boja == SIVO)
  1263.         SetConsoleTextAttribute(console, 138);
  1264.  
  1265.     wprintf(L"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n");
  1266.     wprintf(L"┏━━━━━┓                     ┏━━━━━┓ \n");
  1267.     wprintf(L"┃     ┃                     ┃     ┃ \n");
  1268.     wprintf(L"┃     ┃                     ┃     ┃ \n");
  1269.     wprintf(L"┃     ┃                     ┃     ┃ \n");
  1270.     wprintf(L"┃     ┃                     ┃     ┃ \n");
  1271.     wprintf(L"┃     ┃                     ┃     ┃ \n");
  1272.     wprintf(L"┃     ┃                     ┃     ┃ \n");
  1273.     wprintf(L"┃     ┃                     ┃     ┃ \n");
  1274.     wprintf(L"┃     ┃                     ┃     ┃ \n");
  1275.     wprintf(L"┗━━━━━┛                     ┗━━━━━┛ \n");
  1276.     wprintf(L"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ \n");
  1277.     wprintf(L"┃                                 ┃ \n");
  1278.     wprintf(L"┃                                 ┃ \n");
  1279.     wprintf(L"┃                                 ┃ \n");
  1280.     wprintf(L"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ");
  1281.  
  1282.     if(boja == SVETLO)
  1283.         SetConsoleTextAttribute(console, 85);
  1284.     else if(boja == TAMNO)
  1285.         SetConsoleTextAttribute(console, 102);
  1286.     else if(boja == SIVO)
  1287.         SetConsoleTextAttribute(console, 153);
  1288.  
  1289.     gotoxy(2, 13);
  1290.     wprintf(L"████████████████████████████████");
  1291.     gotoxy(2, 14);
  1292.     wprintf(L"████████████████████████████████");
  1293.     gotoxy(2, 15);
  1294.     wprintf(L"████████████████████████████████");
  1295.  
  1296.     if(boja == SVETLO)
  1297.         SetConsoleTextAttribute(console, 68);
  1298.     else if(boja == TAMNO)
  1299.         SetConsoleTextAttribute(console, 119);
  1300.     else if(boja == SIVO)
  1301.         SetConsoleTextAttribute(console, 170);
  1302.  
  1303.     gotoxy(8, 2);
  1304.     wprintf(L"████████████████████");
  1305.     gotoxy(8, 3);
  1306.     wprintf(L"██");
  1307.     gotoxy(8, 4);
  1308.     wprintf(L"██");
  1309.     gotoxy(8, 5);
  1310.     wprintf(L"██");
  1311.     gotoxy(8, 6);
  1312.     wprintf(L"██");
  1313.     gotoxy(8, 7);
  1314.     wprintf(L"██");
  1315.     gotoxy(8, 8);
  1316.     wprintf(L"██");
  1317.     gotoxy(8, 9);
  1318.     wprintf(L"██");
  1319.     gotoxy(8, 10);
  1320.     wprintf(L"██");
  1321.     gotoxy(26, 3);
  1322.     wprintf(L"██");
  1323.     gotoxy(26, 4);
  1324.     wprintf(L"██");
  1325.     gotoxy(26, 5);
  1326.     wprintf(L"██");
  1327.     gotoxy(26, 6);
  1328.     wprintf(L"██");
  1329.     gotoxy(26, 7);
  1330.     wprintf(L"██");
  1331.     gotoxy(26, 8);
  1332.     wprintf(L"██");
  1333.     gotoxy(26, 9);
  1334.     wprintf(L"██");
  1335.     gotoxy(26, 10);
  1336.     wprintf(L"██");
  1337.     gotoxy(8, 11);
  1338.     wprintf(L"████████████████████");
  1339. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement