Advertisement
Momir

ČAH v0.4.0

May 31st, 2019
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 112.35 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 <fstream>
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #include <conio.h>
  11. #include <io.h>
  12. #include <shlwapi.h>
  13. #include <fcntl.h>
  14. #include <unistd.h>
  15. #include <windows.h>
  16. #include <cwchar>
  17. #include <winreg.h>
  18. #include <Wincon.h>
  19. #define _O_U16TEXT  0x20000
  20. #define _O_U8TEXT   0x40000
  21. #define SVETLO 0
  22. #define TAMNO 1
  23. #define SIVO 2
  24. #define BELO 0
  25. #define CRNO 1
  26. #define ISKLJUCENO 0
  27. #define UKLJUCENO 1
  28. #define ZELENO 2
  29. #define NEUTRALNO 0
  30. #define IZABRANO 1
  31. #define NAPADNUTO 2
  32. #define TOP L"♜"
  33. #define KONJ L"♞"
  34. #define LOVAC L"♝"
  35. #define KRALJICA L"♛"
  36. #define KRALJ L"♚"
  37. #define PIJUN L"♟"
  38. #define PRAZNO L"  "
  39. #define TACKA L""  // ● ꞏ ⚫
  40. using namespace std;
  41. int a, b;
  42. typedef struct _CONSOLE_SCREEN_BUFFER_INFOEX
  43. {
  44.     ULONG      cbSize;
  45.     COORD      dwSize;
  46.     COORD      dwCursorPosition;
  47.     WORD       wAttributes;
  48.     SMALL_RECT srWindow;
  49.     COORD      dwMaximumWindowSize;
  50.     WORD       wPopupAttributes;
  51.     BOOL       bFullscreenSupported;
  52.     COLORREF   ColorTable[16];
  53. } CONSOLE_SCREEN_BUFFER_INFOEX, *PCONSOLE_SCREEN_BUFFER_INFOEX;
  54.  
  55. typedef struct _CONSOLE_FONT_INFOEX
  56. {
  57.     ULONG cbSize;
  58.     DWORD nFont;
  59.     COORD dwFontSize;
  60.     UINT  FontFamily;
  61.     UINT  FontWeight;
  62.     WCHAR FaceName[LF_FACESIZE];
  63. } CONSOLE_FONT_INFOEX, *PCONSOLE_FONT_INFOEX;
  64.  
  65. #ifdef __cplusplus
  66. extern "C" {
  67. #endif
  68. BOOL WINAPI SetCurrentConsoleFontEx(HANDLE hConsoleOutput, BOOL bMaximumWindow, PCONSOLE_FONT_INFOEX lpConsoleCurrentFontEx);
  69. #ifdef __cplusplus
  70. }
  71. #endif
  72.  
  73. #ifdef __cplusplus
  74. extern "C" {
  75. #endif
  76. BOOL WINAPI GetConsoleScreenBufferInfoEx(HANDLE hConsoleOutput, PCONSOLE_SCREEN_BUFFER_INFOEX lpConsoleScreenBufferInfoEx);
  77. #ifdef __cplusplus
  78. }
  79. #endif
  80.  
  81. #ifdef __cplusplus
  82. extern "C" {
  83. #endif
  84. BOOL WINAPI SetConsoleScreenBufferInfoEx(HANDLE hConsoleOutput, PCONSOLE_SCREEN_BUFFER_INFOEX lpConsoleScreenBufferInfoEx);
  85. #ifdef __cplusplus
  86. }
  87. #endif
  88.  
  89. #ifdef __cplusplus
  90. extern "C" {
  91. #endif
  92. BOOL WINAPI GetCurrentConsoleFontEx(HANDLE hConsoleOutput, BOOL bMaximumWindow, PCONSOLE_FONT_INFOEX lpConsoleCurrentFontEx);
  93. #ifdef __cplusplus
  94. }
  95. #endif
  96.  
  97. #ifdef __cplusplus
  98. extern "C" {
  99. #endif
  100. BOOL WINAPI GetConsoleCursorInfo(HANDLE hConsoleOutput, PCONSOLE_CURSOR_INFO lpConsoleCursorInfo);
  101. #ifdef __cplusplus
  102. }
  103. #endif
  104.  
  105.  
  106. void SakriKursor();
  107. void ObrisiEkran();
  108. void gotoxy(int x, int y);
  109. int UcitajKlik(int &x, int &y);
  110. void CentrirajKonzolu();
  111.  
  112. short prviput1 = 1;
  113. short prviput2 = 1;
  114. short prviput3 = 1;
  115. short boja = SVETLO;
  116. short rotacija = ISKLJUCENO;
  117. short sacekaj;
  118. unsigned long long int brPoteza = 0;
  119. long winlog;
  120. _CONSOLE_SCREEN_BUFFER_INFOEX screenbuffer;
  121. CONSOLE_CURSOR_INFO kursor;
  122.  
  123. typedef struct
  124. {
  125.     short bojaPolja;
  126.     short stanjePolja;
  127.     wchar_t figura[4];
  128.     short bojaFigure;
  129.     short anpasan;
  130. } Polje;
  131.  
  132. typedef struct
  133. {
  134.     Polje polje[8][8];
  135.     Polje levo[8][2];
  136.     Polje desno[8][2];
  137.     short brlevo;
  138.     short brdesno;
  139.     short malarbeli;
  140.     short velikarbeli;
  141.     short malarcrni;
  142.     short velikarcrni;
  143.     short krajigre;
  144.  
  145. } Tabla;
  146.  
  147. void PodesiVelicinu(int i);
  148. void PodesiKonzolu();
  149. void PodesiKonzolu2();
  150. void NapraviTablu(Tabla &tabla);
  151. void OdstampajTablu(Tabla tabla);
  152. void OdstampajKonzolu();
  153. void PozicijaNaTabli(int &x, int &y);
  154. void NoviPotez(Tabla &tabla);
  155. void PozicijaIzabranog(int &xizb, int &yizb, Tabla tabla);
  156. short JelUnutarTable(int x, int y);
  157. void OdstampajKonzolu();
  158. void OdstampajLevoDesno(Tabla tabla);
  159. void ObrnutoOdstampajTablu(Tabla tabla);
  160. void ObrnutaPozicijaNaTabli(int &x, int &y);
  161. void ObrisiAnpasan(Tabla &tabla);
  162.  
  163. void ObrisiKonzoluPodesavanja()
  164. {
  165. //    RegDeleteKeyA(HKEY_CURRENT_USER, "Console\\C:_Program Files (x86)_CodeBlocks_cb_console_runner.exe");
  166. //    RegDeleteKeyA(HKEY_CURRENT_USER, "Console\\");
  167. //    RegDeleteKeyA(HKEY_CURRENT_USER, "Console");
  168.     HWND consoleWindow = GetConsoleWindow();
  169.  
  170.  
  171.  
  172. //    ShowWindow(consoleWindow, SW_HIDE); //////////////////////////////////////////////////////////////////////////////////////////////
  173.  
  174.  
  175.  
  176.     CONSOLE_FONT_INFOEX cfi;
  177.     cfi.cbSize = sizeof(cfi);
  178.     cfi.nFont = 0;
  179.     cfi.dwFontSize.X = 8;
  180.     cfi.dwFontSize.Y = 16;
  181.     cfi.FontFamily = TMPF_TRUETYPE;
  182.     cfi.FontWeight = FW_NORMAL;
  183.     std::wcscpy(cfi.FaceName, L"Consolas");
  184.     SetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE), FALSE, &cfi);
  185.  
  186.     HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
  187.     SetConsoleScreenBufferInfoEx(hConsole, &screenbuffer);
  188.     SetConsoleCursorInfo(hConsole, &kursor);
  189.     SetWindowLong(consoleWindow, GWL_STYLE, winlog);
  190.     SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE),  ENABLE_QUICK_EDIT_MODE | ENABLE_EXTENDED_FLAGS);
  191.     HMENU hmenu = GetSystemMenu(consoleWindow, FALSE);
  192.     EnableMenuItem(hmenu, SC_CLOSE, MF_ENABLED);
  193. }
  194.  
  195. void ObrisiTerminal()
  196. {
  197.     HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);
  198.     _setmode(_fileno(stdout), _O_U8TEXT);
  199.  
  200.     if(boja == SVETLO)
  201.         SetConsoleTextAttribute(console, 85);
  202.     else if(boja == TAMNO)
  203.         SetConsoleTextAttribute(console, 102);
  204.     else if(boja == SIVO)
  205.         SetConsoleTextAttribute(console, 153);
  206.  
  207.     gotoxy(2, 13);
  208.     wprintf(L"████████████████████████████████");
  209.     gotoxy(2, 14);
  210.     wprintf(L"████████████████████████████████");
  211.     gotoxy(2, 15);
  212.     wprintf(L"████████████████████████████████");
  213. }
  214.  
  215. Tabla StaviFiguruNaXY(Tabla tabla, int x, int y)
  216. {
  217.     int xizb, yizb;
  218.     PozicijaIzabranog(xizb, yizb, tabla);
  219.     wcscpy(tabla.polje[y][x].figura, tabla.polje[yizb][xizb].figura);
  220.     wcscpy(tabla.polje[yizb][xizb].figura, PRAZNO);
  221.     tabla.polje[y][x].bojaFigure = tabla.polje[yizb][xizb].bojaFigure;
  222.     NoviPotez(tabla);
  223.  
  224.     return tabla;
  225. }
  226.  
  227. short JelSahBeli(Tabla tabla, int xpomeraj, int ypomeraj)
  228. {
  229.     int x = 0, y = 0;
  230.  
  231.     for(int i = 0; i < 64; i++)
  232.     {
  233.         if(!wcscmp(tabla.polje[i / 8][i % 8].figura, KRALJ) && tabla.polje[i / 8][i % 8].bojaFigure == BELO)
  234.         {
  235.             if(JelUnutarTable(i % 8 + xpomeraj, i / 8 + ypomeraj))
  236.             {
  237.                 y = i / 8 + ypomeraj;
  238.                 x = i % 8 + xpomeraj;
  239.             }
  240.             else
  241.             {
  242.                 x = i % 8;
  243.                 y = i / 8;
  244.             }
  245.  
  246.             break;
  247.         }
  248.     }
  249.  
  250.     if(!wcscmp(tabla.polje[y - 1][x + 1].figura, PIJUN) && tabla.polje[y - 1][x - 1].bojaFigure == CRNO && JelUnutarTable(x + 1, y - 1))
  251.         return 1;
  252.  
  253.     if(!wcscmp(tabla.polje[y - 1][x - 1].figura, PIJUN) && tabla.polje[y - 1][x - 1].bojaFigure == CRNO && JelUnutarTable(x - 1, y - 1))
  254.         return 1;
  255.  
  256.     if(!wcscmp(tabla.polje[y - 2][x - 1].figura, KONJ) && tabla.polje[y - 2][x - 1].bojaFigure == CRNO && JelUnutarTable(x - 1, y - 2))
  257.         return 1;
  258.  
  259.     if(!wcscmp(tabla.polje[y - 2][x + 1].figura, KONJ) && tabla.polje[y - 2][x + 1].bojaFigure == CRNO && JelUnutarTable(x + 1, y - 2))
  260.         return 1;
  261.  
  262.     if(!wcscmp(tabla.polje[y - 1][x + 2].figura, KONJ) && tabla.polje[y - 1][x + 2].bojaFigure == CRNO && JelUnutarTable(x + 2, y - 1))
  263.         return 1;
  264.  
  265.     if(!wcscmp(tabla.polje[y + 1][x + 2].figura, KONJ) && tabla.polje[y + 1][x + 2].bojaFigure == CRNO && JelUnutarTable(x + 2, y + 1))
  266.         return 1;
  267.  
  268.     if(!wcscmp(tabla.polje[y + 2][x + 1].figura, KONJ) && tabla.polje[y + 2][x + 1].bojaFigure == CRNO && JelUnutarTable(x + 1, y + 2))
  269.         return 1;
  270.  
  271.     if(!wcscmp(tabla.polje[y + 2][x - 1].figura, KONJ) && tabla.polje[y + 2][x - 1].bojaFigure == CRNO && JelUnutarTable(x - 1, y + 2))
  272.         return 1;
  273.  
  274.     if(!wcscmp(tabla.polje[y + 1][x - 2].figura, KONJ) && tabla.polje[y + 1][x - 2].bojaFigure == CRNO && JelUnutarTable(x - 2, y + 1))
  275.         return 1;
  276.  
  277.     if(!wcscmp(tabla.polje[y - 1][x - 2].figura, KONJ) && tabla.polje[y - 1][x - 2].bojaFigure == CRNO && JelUnutarTable(x - 2, y - 1))
  278.         return 1;
  279.  
  280.     for(int i = 1; i < 8; i++)
  281.     {
  282.         if((!wcscmp(tabla.polje[y][x - i].figura, PRAZNO) || (!wcscmp(tabla.polje[y][x - i].figura, KRALJ) && tabla.polje[y][x - i].bojaFigure == BELO)) && JelUnutarTable(x - i, y));
  283.         else if((!wcscmp(tabla.polje[y][x - i].figura, TOP) || !wcscmp(tabla.polje[y][x - i].figura, KRALJICA)) && tabla.polje[y][x - i].bojaFigure == CRNO && JelUnutarTable(x - i, y))
  284.             return 1;
  285.         else
  286.             break;
  287.     }
  288.  
  289.     for(int i = 1; i < 8; i++)
  290.     {
  291.         if((!wcscmp(tabla.polje[y][x + i].figura, PRAZNO) || (!wcscmp(tabla.polje[y][x + i].figura, KRALJ) && tabla.polje[y][x + i].bojaFigure == BELO)) && JelUnutarTable(x + i, y));
  292.         else if((!wcscmp(tabla.polje[y][x + i].figura, TOP) || !wcscmp(tabla.polje[y][x + i].figura, KRALJICA)) && tabla.polje[y][x + i].bojaFigure == CRNO && JelUnutarTable(x + i, y))
  293.             return 1;
  294.         else
  295.             break;
  296.     }
  297.  
  298.     for(int i = 1; i < 8; i++)
  299.     {
  300.         if((!wcscmp(tabla.polje[y - i][x].figura, PRAZNO) || (!wcscmp(tabla.polje[y - i][x].figura, KRALJ) && tabla.polje[y - i][x].bojaFigure == BELO)) && JelUnutarTable(x, y - i));
  301.         else if((!wcscmp(tabla.polje[y - i][x].figura, TOP) || !wcscmp(tabla.polje[y - i][x].figura, KRALJICA)) && tabla.polje[y - i][x].bojaFigure == CRNO && JelUnutarTable(x, y - i))
  302.             return 1;
  303.         else
  304.             break;
  305.     }
  306.  
  307.     for(int i = 1; i < 8; i++)
  308.     {
  309.         if((!wcscmp(tabla.polje[y + i][x].figura, PRAZNO) || (!wcscmp(tabla.polje[y + i][x].figura, KRALJ) && tabla.polje[y + i][x].bojaFigure == BELO)) && JelUnutarTable(x, y + i));
  310.         else if((!wcscmp(tabla.polje[y + i][x].figura, TOP) || !wcscmp(tabla.polje[y + i][x].figura, KRALJICA)) && tabla.polje[y + i][x].bojaFigure == CRNO && JelUnutarTable(x, y + i))
  311.             return 1;
  312.         else
  313.             break;
  314.     }
  315.  
  316.     for(int i = 1; i < 8; i++)
  317.     {
  318.         if((!wcscmp(tabla.polje[y - i][x - i].figura, PRAZNO) || (!wcscmp(tabla.polje[y - i][x - i].figura, KRALJ) && tabla.polje[y - i][x - i].bojaFigure == BELO)) && JelUnutarTable(x - i, y - i));
  319.         else if((!wcscmp(tabla.polje[y - i][x - i].figura, LOVAC) || !wcscmp(tabla.polje[y - i][x - i].figura, KRALJICA)) && tabla.polje[y - i][x - i].bojaFigure == CRNO && JelUnutarTable(x - i, y - i))
  320.             return 1;
  321.         else
  322.             break;
  323.     }
  324.  
  325.     for(int i = 1; i < 8; i++)
  326.     {
  327.         if((!wcscmp(tabla.polje[y - i][x + i].figura, PRAZNO) || (!wcscmp(tabla.polje[y - i][x + i].figura, KRALJ) && tabla.polje[y - i][x + i].bojaFigure == BELO)) && JelUnutarTable(x + i, y - i));
  328.         else if((!wcscmp(tabla.polje[y - i][x + i].figura, LOVAC) || !wcscmp(tabla.polje[y - i][x + i].figura, KRALJICA)) && tabla.polje[y - i][x + i].bojaFigure == CRNO && JelUnutarTable(x + i, y - i))
  329.             return 1;
  330.         else
  331.             break;
  332.     }
  333.  
  334.     for(int i = 1; i < 8; i++)
  335.     {
  336.         if((!wcscmp(tabla.polje[y + i][x - i].figura, PRAZNO) || (!wcscmp(tabla.polje[y + i][x - i].figura, KRALJ) && tabla.polje[y + i][x - i].bojaFigure == BELO)) && JelUnutarTable(x - i, y + i));
  337.         else if((!wcscmp(tabla.polje[y + i][x - i].figura, LOVAC) || !wcscmp(tabla.polje[y + i][x - i].figura, KRALJICA)) && tabla.polje[y + i][x - i].bojaFigure == CRNO && JelUnutarTable(x - i, y + i))
  338.             return 1;
  339.         else
  340.             break;
  341.     }
  342.  
  343.     for(int i = 1; i < 8; i++)
  344.     {
  345.         if((!wcscmp(tabla.polje[y + i][x + i].figura, PRAZNO) || (!wcscmp(tabla.polje[y + i][x + i].figura, KRALJ) && tabla.polje[y + i][x + i].bojaFigure == BELO)) && JelUnutarTable(x + i, y + i));
  346.         else if((!wcscmp(tabla.polje[y + i][x + i].figura, LOVAC) || !wcscmp(tabla.polje[y + i][x + i].figura, KRALJICA)) && tabla.polje[y + i][x + i].bojaFigure == CRNO && JelUnutarTable(x + i, y + i))
  347.             return 1;
  348.         else
  349.             break;
  350.     }
  351.  
  352.     if(!wcscmp(tabla.polje[y][x - 1].figura, KRALJ) && tabla.polje[y][x - 1].bojaFigure == CRNO && JelUnutarTable(x - 1, y))
  353.         return 1;
  354.  
  355.     if(!wcscmp(tabla.polje[y][x + 1].figura, KRALJ) && tabla.polje[y][x + 1].bojaFigure == CRNO && JelUnutarTable(x + 1, y))
  356.         return 1;
  357.  
  358.     if(!wcscmp(tabla.polje[y - 1][x].figura, KRALJ) && tabla.polje[y - 1][x].bojaFigure == CRNO && JelUnutarTable(x, y - 1))
  359.         return 1;
  360.  
  361.     if(!wcscmp(tabla.polje[y + 1][x].figura, KRALJ) && tabla.polje[y + 1][x].bojaFigure == CRNO && JelUnutarTable(x, y + 1))
  362.         return 1;
  363.  
  364.     if(!wcscmp(tabla.polje[y - 1][x - 1].figura, KRALJ) && tabla.polje[y - 1][x - 1].bojaFigure == CRNO && JelUnutarTable(x - 1, y - 1))
  365.         return 1;
  366.  
  367.     if(!wcscmp(tabla.polje[y - 1][x + 1].figura, KRALJ) && tabla.polje[y - 1][x + 1].bojaFigure == CRNO && JelUnutarTable(x + 1, y - 1))
  368.         return 1;
  369.  
  370.     if(!wcscmp(tabla.polje[y + 1][x - 1].figura, KRALJ) && tabla.polje[y + 1][x - 1].bojaFigure == CRNO && JelUnutarTable(x - 1, y + 1))
  371.         return 1;
  372.  
  373.     if(!wcscmp(tabla.polje[y + 1][x + 1].figura, KRALJ) && tabla.polje[y + 1][x + 1].bojaFigure == CRNO && JelUnutarTable(x + 1, y + 1))
  374.         return 1;
  375.  
  376.     return 0;
  377. }
  378.  
  379. short JelSahCrni(Tabla tabla, int xpomeraj, int ypomeraj)
  380. {
  381.     int x = 0, y = 0;
  382.  
  383.     for(int i = 0; i < 64; i++)
  384.     {
  385.         if(!wcscmp(tabla.polje[i / 8][i % 8].figura, KRALJ) && tabla.polje[i / 8][i % 8].bojaFigure == CRNO)
  386.         {
  387.             if(JelUnutarTable(i % 8 + xpomeraj, i / 8 + ypomeraj))
  388.             {
  389.                 y = i / 8 + ypomeraj;
  390.                 x = i % 8 + xpomeraj;
  391.             }
  392.             else
  393.             {
  394.                 x = i % 8;
  395.                 y = i / 8;
  396.             }
  397.  
  398.             break;
  399.         }
  400.     }
  401.  
  402.     if(!wcscmp(tabla.polje[y + 1][x + 1].figura, PIJUN) && tabla.polje[y + 1][x - 1].bojaFigure == BELO && JelUnutarTable(x + 1, y + 1))
  403.         return 1;
  404.  
  405.     if(!wcscmp(tabla.polje[y + 1][x - 1].figura, PIJUN) && tabla.polje[y + 1][x - 1].bojaFigure == BELO && JelUnutarTable(x - 1, y + 1))
  406.         return 1;
  407.  
  408.     if(!wcscmp(tabla.polje[y - 2][x - 1].figura, KONJ) && tabla.polje[y - 2][x - 1].bojaFigure == BELO && JelUnutarTable(x - 1, y - 2))
  409.         return 1;
  410.  
  411.     if(!wcscmp(tabla.polje[y - 2][x + 1].figura, KONJ) && tabla.polje[y - 2][x + 1].bojaFigure == BELO && JelUnutarTable(x + 1, y - 2))
  412.         return 1;
  413.  
  414.     if(!wcscmp(tabla.polje[y - 1][x + 2].figura, KONJ) && tabla.polje[y - 1][x + 2].bojaFigure == BELO && JelUnutarTable(x + 2, y - 1))
  415.         return 1;
  416.  
  417.     if(!wcscmp(tabla.polje[y + 1][x + 2].figura, KONJ) && tabla.polje[y + 1][x + 2].bojaFigure == BELO && JelUnutarTable(x + 2, y + 1))
  418.         return 1;
  419.  
  420.     if(!wcscmp(tabla.polje[y + 2][x + 1].figura, KONJ) && tabla.polje[y + 2][x + 1].bojaFigure == BELO && JelUnutarTable(x + 1, y + 2))
  421.         return 1;
  422.  
  423.     if(!wcscmp(tabla.polje[y + 2][x - 1].figura, KONJ) && tabla.polje[y + 2][x - 1].bojaFigure == BELO && JelUnutarTable(x - 1, y + 2))
  424.         return 1;
  425.  
  426.     if(!wcscmp(tabla.polje[y + 1][x - 2].figura, KONJ) && tabla.polje[y + 1][x - 2].bojaFigure == BELO && JelUnutarTable(x - 2, y + 1))
  427.         return 1;
  428.  
  429.     if(!wcscmp(tabla.polje[y - 1][x - 2].figura, KONJ) && tabla.polje[y - 1][x - 2].bojaFigure == BELO && JelUnutarTable(x - 2, y - 1))
  430.         return 1;
  431.  
  432.     for(int i = 1; i < 8; i++)
  433.     {
  434.         if((!wcscmp(tabla.polje[y][x - i].figura, PRAZNO) || (!wcscmp(tabla.polje[y][x - i].figura, KRALJ) && tabla.polje[y][x - i].bojaFigure == CRNO)) && JelUnutarTable(x - i, y));
  435.         else if((!wcscmp(tabla.polje[y][x - i].figura, TOP) || !wcscmp(tabla.polje[y][x - i].figura, KRALJICA)) && tabla.polje[y][x - i].bojaFigure == BELO && JelUnutarTable(x - i, y))
  436.             return 1;
  437.         else
  438.             break;
  439.     }
  440.  
  441.     for(int i = 1; i < 8; i++)
  442.     {
  443.         if((!wcscmp(tabla.polje[y][x + i].figura, PRAZNO) || (!wcscmp(tabla.polje[y][x + i].figura, KRALJ) && tabla.polje[y][x + i].bojaFigure == CRNO)) && JelUnutarTable(x + i, y));
  444.         else if((!wcscmp(tabla.polje[y][x + i].figura, TOP) || !wcscmp(tabla.polje[y][x + i].figura, KRALJICA)) && tabla.polje[y][x + i].bojaFigure == BELO && JelUnutarTable(x + i, y))
  445.             return 1;
  446.         else
  447.             break;
  448.     }
  449.  
  450.     for(int i = 1; i < 8; i++)
  451.     {
  452.         if((!wcscmp(tabla.polje[y - i][x].figura, PRAZNO) || (!wcscmp(tabla.polje[y - i][x].figura, KRALJ) && tabla.polje[y - i][x].bojaFigure == CRNO)) && JelUnutarTable(x, y - i));
  453.         else if((!wcscmp(tabla.polje[y - i][x].figura, TOP) || !wcscmp(tabla.polje[y - i][x].figura, KRALJICA)) && tabla.polje[y - i][x].bojaFigure == BELO && JelUnutarTable(x, y - i))
  454.             return 1;
  455.         else
  456.             break;
  457.     }
  458.  
  459.     for(int i = 1; i < 8; i++)
  460.     {
  461.         if((!wcscmp(tabla.polje[y + i][x].figura, PRAZNO) || (!wcscmp(tabla.polje[y + i][x].figura, KRALJ) && tabla.polje[y + i][x].bojaFigure == CRNO)) && JelUnutarTable(x, y + i));
  462.         else if((!wcscmp(tabla.polje[y + i][x].figura, TOP) || !wcscmp(tabla.polje[y + i][x].figura, KRALJICA)) && tabla.polje[y + i][x].bojaFigure == BELO && JelUnutarTable(x, y + i))
  463.             return 1;
  464.         else
  465.             break;
  466.     }
  467.  
  468.     for(int i = 1; i < 8; i++)
  469.     {
  470.         if((!wcscmp(tabla.polje[y - i][x - i].figura, PRAZNO) || (!wcscmp(tabla.polje[y - i][x - i].figura, KRALJ) && tabla.polje[y - i][x - i].bojaFigure == CRNO)) && JelUnutarTable(x - i, y - i));
  471.         else if((!wcscmp(tabla.polje[y - i][x - i].figura, LOVAC) || !wcscmp(tabla.polje[y - i][x - i].figura, KRALJICA)) && tabla.polje[y - i][x - i].bojaFigure == BELO && JelUnutarTable(x - i, y - i))
  472.             return 1;
  473.         else
  474.             break;
  475.     }
  476.  
  477.     for(int i = 1; i < 8; i++)
  478.     {
  479.         if((!wcscmp(tabla.polje[y - i][x + i].figura, PRAZNO) || (!wcscmp(tabla.polje[y - i][x + i].figura, KRALJ) && tabla.polje[y - i][x + i].bojaFigure == CRNO)) && JelUnutarTable(x + i, y - i));
  480.         else if((!wcscmp(tabla.polje[y - i][x + i].figura, LOVAC) || !wcscmp(tabla.polje[y - i][x + i].figura, KRALJICA)) && tabla.polje[y - i][x + i].bojaFigure == BELO && JelUnutarTable(x + i, y - i))
  481.             return 1;
  482.         else
  483.             break;
  484.     }
  485.  
  486.     for(int i = 1; i < 8; i++)
  487.     {
  488.         if((!wcscmp(tabla.polje[y + i][x - i].figura, PRAZNO) || (!wcscmp(tabla.polje[y + i][x - i].figura, KRALJ) && tabla.polje[y + i][x - i].bojaFigure == CRNO)) && JelUnutarTable(x - i, y + i));
  489.         else if((!wcscmp(tabla.polje[y + i][x - i].figura, LOVAC) || !wcscmp(tabla.polje[y + i][x - i].figura, KRALJICA)) && tabla.polje[y + i][x - i].bojaFigure == BELO && JelUnutarTable(x - i, y + i))
  490.             return 1;
  491.         else
  492.             break;
  493.     }
  494.  
  495.     for(int i = 1; i < 8; i++)
  496.     {
  497.         if((!wcscmp(tabla.polje[y + i][x + i].figura, PRAZNO) || (!wcscmp(tabla.polje[y + i][x + i].figura, KRALJ) && tabla.polje[y + i][x + i].bojaFigure == CRNO)) && JelUnutarTable(x + i, y + i));
  498.         else if((!wcscmp(tabla.polje[y + i][x + i].figura, LOVAC) || !wcscmp(tabla.polje[y + i][x + i].figura, KRALJICA)) && tabla.polje[y + i][x + i].bojaFigure == BELO && JelUnutarTable(x + i, y + i))
  499.             return 1;
  500.         else
  501.             break;
  502.     }
  503.  
  504.     if(!wcscmp(tabla.polje[y][x - 1].figura, KRALJ) && tabla.polje[y][x - 1].bojaFigure == BELO && JelUnutarTable(x - 1, y))
  505.         return 1;
  506.  
  507.     if(!wcscmp(tabla.polje[y][x + 1].figura, KRALJ) && tabla.polje[y][x + 1].bojaFigure == BELO && JelUnutarTable(x + 1, y))
  508.         return 1;
  509.  
  510.     if(!wcscmp(tabla.polje[y - 1][x].figura, KRALJ) && tabla.polje[y - 1][x].bojaFigure == BELO && JelUnutarTable(x, y - 1))
  511.         return 1;
  512.  
  513.     if(!wcscmp(tabla.polje[y + 1][x].figura, KRALJ) && tabla.polje[y + 1][x].bojaFigure == BELO && JelUnutarTable(x, y + 1))
  514.         return 1;
  515.  
  516.     if(!wcscmp(tabla.polje[y - 1][x - 1].figura, KRALJ) && tabla.polje[y - 1][x - 1].bojaFigure == BELO && JelUnutarTable(x - 1, y - 1))
  517.         return 1;
  518.  
  519.     if(!wcscmp(tabla.polje[y - 1][x + 1].figura, KRALJ) && tabla.polje[y - 1][x + 1].bojaFigure == BELO && JelUnutarTable(x + 1, y - 1))
  520.         return 1;
  521.  
  522.     if(!wcscmp(tabla.polje[y + 1][x - 1].figura, KRALJ) && tabla.polje[y + 1][x - 1].bojaFigure == BELO && JelUnutarTable(x - 1, y + 1))
  523.         return 1;
  524.  
  525.     if(!wcscmp(tabla.polje[y + 1][x + 1].figura, KRALJ) && tabla.polje[y + 1][x + 1].bojaFigure == BELO && JelUnutarTable(x + 1, y + 1))
  526.         return 1;
  527.  
  528.     return 0;
  529. }
  530.  
  531. short PostaviKralja(Tabla &tabla, int x, int y)
  532. {
  533.     short ret = 0;
  534.  
  535.     tabla.polje[y][x].stanjePolja = IZABRANO;
  536.  
  537.     if(tabla.polje[y][x].bojaFigure == BELO)
  538.     {
  539.         if(!wcscmp(tabla.polje[y - 1][x - 1].figura, PRAZNO) && JelUnutarTable(x - 1, y - 1) && !JelSahBeli(tabla, -1, -1))
  540.         {
  541.             wcscpy(tabla.polje[y - 1][x - 1].figura, TACKA);
  542.             tabla.polje[y - 1][x - 1].bojaFigure = ZELENO;
  543.             ret = 1;
  544.         }
  545.         else if(wcscmp(tabla.polje[y - 1][x - 1].figura, PRAZNO) && tabla.polje[y - 1][x - 1].bojaFigure == CRNO && JelUnutarTable(x - 1, y - 1) && !JelSahBeli(tabla, -1, -1))
  546.         {
  547.             tabla.polje[y - 1][x - 1].stanjePolja = NAPADNUTO;
  548.             ret = 1;
  549.         }
  550.  
  551.         if(!wcscmp(tabla.polje[y - 1][x + 1].figura, PRAZNO) && JelUnutarTable(x + 1, y - 1) && !JelSahBeli(tabla, 1, -1))
  552.         {
  553.             wcscpy(tabla.polje[y - 1][x + 1].figura, TACKA);
  554.             tabla.polje[y - 1][x + 1].bojaFigure = ZELENO;
  555.             ret = 1;
  556.         }
  557.         else if(wcscmp(tabla.polje[y - 1][x + 1].figura, PRAZNO) && tabla.polje[y - 1][x + 1].bojaFigure == CRNO && JelUnutarTable(x + 1, y - 1) && !JelSahBeli(tabla, 1, -1))
  558.         {
  559.             tabla.polje[y - 1][x + 1].stanjePolja = NAPADNUTO;
  560.             ret = 1;
  561.         }
  562.  
  563.         if(!wcscmp(tabla.polje[y + 1][x - 1].figura, PRAZNO) && JelUnutarTable(x - 1, y + 1) && !JelSahBeli(tabla, -1, 1))
  564.         {
  565.             wcscpy(tabla.polje[y + 1][x - 1].figura, TACKA);
  566.             tabla.polje[y + 1][x - 1].bojaFigure = ZELENO;
  567.             ret = 1;
  568.         }
  569.         else if(wcscmp(tabla.polje[y + 1][x - 1].figura, PRAZNO) && tabla.polje[y + 1][x - 1].bojaFigure == CRNO && JelUnutarTable(x - 1, y + 1) && !JelSahBeli(tabla, -1, 1))
  570.         {
  571.             tabla.polje[y + 1][x - 1].stanjePolja = NAPADNUTO;
  572.             ret = 1;
  573.         }
  574.  
  575.         if(!wcscmp(tabla.polje[y + 1][x + 1].figura, PRAZNO) && JelUnutarTable(x + 1, y + 1) && !JelSahBeli(tabla, 1, 1))
  576.         {
  577.             wcscpy(tabla.polje[y + 1][x + 1].figura, TACKA);
  578.             tabla.polje[y + 1][x + 1].bojaFigure = ZELENO;
  579.             ret = 1;
  580.         }
  581.         else if(wcscmp(tabla.polje[y + 1][x + 1].figura, PRAZNO) && tabla.polje[y + 1][x + 1].bojaFigure == CRNO && JelUnutarTable(x + 1, y + 1) && !JelSahBeli(tabla, 1, 1))
  582.         {
  583.             tabla.polje[y + 1][x + 1].stanjePolja = NAPADNUTO;
  584.             ret = 1;
  585.         }
  586.  
  587.         if(!wcscmp(tabla.polje[y][x + 1].figura, PRAZNO) && JelUnutarTable(x + 1, y) && !JelSahBeli(tabla, 1, 0))
  588.         {
  589.             wcscpy(tabla.polje[y][x + 1].figura, TACKA);
  590.             tabla.polje[y][x + 1].bojaFigure = ZELENO;
  591.             ret = 1;
  592.         }
  593.         else if(wcscmp(tabla.polje[y][x + 1].figura, PRAZNO) && tabla.polje[y][x + 1].bojaFigure == CRNO && JelUnutarTable(x + 1, y) && !JelSahBeli(tabla, 1, 0))
  594.         {
  595.             tabla.polje[y][x + 1].stanjePolja = NAPADNUTO;
  596.             ret = 1;
  597.         }
  598.  
  599.         if(!wcscmp(tabla.polje[y + 1][x].figura, PRAZNO) && JelUnutarTable(x, y + 1) && !JelSahBeli(tabla, 0, 1))
  600.         {
  601.             wcscpy(tabla.polje[y + 1][x].figura, TACKA);
  602.             tabla.polje[y + 1][x].bojaFigure = ZELENO;
  603.             ret = 1;
  604.         }
  605.         else if(wcscmp(tabla.polje[y + 1][x].figura, PRAZNO) && tabla.polje[y + 1][x].bojaFigure == CRNO && JelUnutarTable(x, y + 1) && !JelSahBeli(tabla, 0, 1))
  606.         {
  607.             tabla.polje[y + 1][x].stanjePolja = NAPADNUTO;
  608.             ret = 1;
  609.         }
  610.  
  611.         if(!wcscmp(tabla.polje[y][x - 1].figura, PRAZNO) && JelUnutarTable(x - 1, y) && !JelSahBeli(tabla, -1, 0))
  612.         {
  613.             wcscpy(tabla.polje[y][x - 1].figura, TACKA);
  614.             tabla.polje[y][x - 1].bojaFigure = ZELENO;
  615.             ret = 1;
  616.         }
  617.         else if(wcscmp(tabla.polje[y][x - 1].figura, PRAZNO) && tabla.polje[y][x - 1].bojaFigure == CRNO && JelUnutarTable(x - 1, y) && !JelSahBeli(tabla, -1, 0))
  618.         {
  619.             tabla.polje[y][x - 1].stanjePolja = NAPADNUTO;
  620.             ret = 1;
  621.         }
  622.  
  623.         if(!wcscmp(tabla.polje[y - 1][x].figura, PRAZNO) && JelUnutarTable(x, y - 1) && !JelSahBeli(tabla, 0, -1))
  624.         {
  625.             wcscpy(tabla.polje[y - 1][x].figura, TACKA);
  626.             tabla.polje[y - 1][x].bojaFigure = ZELENO;
  627.             ret = 1;
  628.         }
  629.         else if(wcscmp(tabla.polje[y - 1][x].figura, PRAZNO) && tabla.polje[y - 1][x].bojaFigure == CRNO && JelUnutarTable(x, y - 1) && !JelSahBeli(tabla, 0, -1))
  630.         {
  631.             tabla.polje[y - 1][x].stanjePolja = NAPADNUTO;
  632.             ret = 1;
  633.         }
  634.  
  635.         if(tabla.malarbeli == UKLJUCENO && !wcscmp(tabla.polje[7][5].figura, TACKA) && !wcscmp(tabla.polje[7][6].figura, PRAZNO) && !JelSahBeli(tabla, 0, 0) && !JelSahBeli(tabla, 1, 0) && !JelSahBeli(tabla, 2, 0))
  636.         {
  637.             wcscpy(tabla.polje[7][6].figura, TACKA);
  638.             tabla.polje[7][6].bojaFigure = ZELENO;
  639.             ret = 1;
  640.         }
  641.  
  642.         if(tabla.velikarbeli == UKLJUCENO && !wcscmp(tabla.polje[7][3].figura, TACKA) && !wcscmp(tabla.polje[7][2].figura, PRAZNO) && !wcscmp(tabla.polje[7][1].figura, PRAZNO) && !JelSahBeli(tabla, 0, 0) && !JelSahBeli(tabla, -1, 0) && !JelSahBeli(tabla, -2, 0) && !JelSahBeli(tabla, -3, 0))
  643.         {
  644.             wcscpy(tabla.polje[7][1].figura, TACKA);
  645.             tabla.polje[7][1].bojaFigure = ZELENO;
  646.             ret = 1;
  647.         }
  648.  
  649.     }
  650.     else
  651.     {
  652.         if(!wcscmp(tabla.polje[y - 1][x - 1].figura, PRAZNO) && JelUnutarTable(x - 1, y - 1) && !JelSahCrni(tabla, -1, -1))
  653.         {
  654.             wcscpy(tabla.polje[y - 1][x - 1].figura, TACKA);
  655.             tabla.polje[y - 1][x - 1].bojaFigure = ZELENO;
  656.             ret = 1;
  657.         }
  658.         else if(wcscmp(tabla.polje[y - 1][x - 1].figura, PRAZNO) && tabla.polje[y - 1][x - 1].bojaFigure == BELO && JelUnutarTable(x - 1, y - 1) && !JelSahCrni(tabla, -1, -1))
  659.         {
  660.             tabla.polje[y - 1][x - 1].stanjePolja = NAPADNUTO;
  661.             ret = 1;
  662.         }
  663.  
  664.         if(!wcscmp(tabla.polje[y - 1][x + 1].figura, PRAZNO) && JelUnutarTable(x + 1, y - 1) && !JelSahCrni(tabla, 1, -1))
  665.         {
  666.             wcscpy(tabla.polje[y - 1][x + 1].figura, TACKA);
  667.             tabla.polje[y - 1][x + 1].bojaFigure = ZELENO;
  668.             ret = 1;
  669.         }
  670.         else if(wcscmp(tabla.polje[y - 1][x + 1].figura, PRAZNO) && tabla.polje[y - 1][x + 1].bojaFigure == BELO && JelUnutarTable(x + 1, y - 1) && !JelSahCrni(tabla, 1, -1))
  671.         {
  672.             tabla.polje[y - 1][x + 1].stanjePolja = NAPADNUTO;
  673.             ret = 1;
  674.         }
  675.  
  676.         if(!wcscmp(tabla.polje[y + 1][x - 1].figura, PRAZNO) && JelUnutarTable(x - 1, y + 1) && !JelSahCrni(tabla, -1, 1))
  677.         {
  678.             wcscpy(tabla.polje[y + 1][x - 1].figura, TACKA);
  679.             tabla.polje[y + 1][x - 1].bojaFigure = ZELENO;
  680.         }
  681.         else if(wcscmp(tabla.polje[y + 1][x - 1].figura, PRAZNO) && tabla.polje[y + 1][x - 1].bojaFigure == BELO && JelUnutarTable(x - 1, y + 1) && !JelSahCrni(tabla, -1, 1))
  682.         {
  683.             tabla.polje[y + 1][x - 1].stanjePolja = NAPADNUTO;
  684.             ret = 1;
  685.         }
  686.  
  687.         if(!wcscmp(tabla.polje[y + 1][x + 1].figura, PRAZNO) && JelUnutarTable(x + 1, y + 1) && !JelSahCrni(tabla, 1, 1))
  688.         {
  689.             wcscpy(tabla.polje[y + 1][x + 1].figura, TACKA);
  690.             tabla.polje[y + 1][x + 1].bojaFigure = ZELENO;
  691.             ret = 1;
  692.         }
  693.         else if(wcscmp(tabla.polje[y + 1][x + 1].figura, PRAZNO) && tabla.polje[y + 1][x + 1].bojaFigure == BELO && JelUnutarTable(x + 1, y + 1) && !JelSahCrni(tabla, 1, 1))
  694.         {
  695.             tabla.polje[y + 1][x + 1].stanjePolja = NAPADNUTO;
  696.             ret = 1;
  697.         }
  698.  
  699.         if(!wcscmp(tabla.polje[y][x + 1].figura, PRAZNO) && JelUnutarTable(x + 1, y) && !JelSahCrni(tabla, 1, 0))
  700.         {
  701.             wcscpy(tabla.polje[y][x + 1].figura, TACKA);
  702.             tabla.polje[y][x + 1].bojaFigure = ZELENO;
  703.             ret = 1;
  704.         }
  705.         else if(wcscmp(tabla.polje[y][x + 1].figura, PRAZNO) && tabla.polje[y][x + 1].bojaFigure == BELO && JelUnutarTable(x + 1, y) && !JelSahCrni(tabla, 1, 0))
  706.         {
  707.             tabla.polje[y][x + 1].stanjePolja = NAPADNUTO;
  708.             ret = 1;
  709.         }
  710.  
  711.         if(!wcscmp(tabla.polje[y + 1][x].figura, PRAZNO) && JelUnutarTable(x, y + 1) && !JelSahCrni(tabla, 0, 1))
  712.         {
  713.             wcscpy(tabla.polje[y + 1][x].figura, TACKA);
  714.             tabla.polje[y + 1][x].bojaFigure = ZELENO;
  715.             ret = 1;
  716.         }
  717.         else if(wcscmp(tabla.polje[y + 1][x].figura, PRAZNO) && tabla.polje[y + 1][x].bojaFigure == BELO && JelUnutarTable(x, y + 1) && !JelSahCrni(tabla, 0, 1))
  718.         {
  719.             tabla.polje[y + 1][x].stanjePolja = NAPADNUTO;
  720.             ret = 1;
  721.         }
  722.  
  723.         if(!wcscmp(tabla.polje[y][x - 1].figura, PRAZNO) && JelUnutarTable(x - 1, y) && !JelSahCrni(tabla, -1, 0))
  724.         {
  725.             wcscpy(tabla.polje[y][x - 1].figura, TACKA);
  726.             tabla.polje[y][x - 1].bojaFigure = ZELENO;
  727.             ret = 1;
  728.         }
  729.         else if(wcscmp(tabla.polje[y][x - 1].figura, PRAZNO) && tabla.polje[y][x - 1].bojaFigure == BELO && JelUnutarTable(x - 1, y) && !JelSahCrni(tabla, -1, 0))
  730.         {
  731.             tabla.polje[y][x - 1].stanjePolja = NAPADNUTO;
  732.             ret = 1;
  733.         }
  734.  
  735.         if(!wcscmp(tabla.polje[y - 1][x].figura, PRAZNO) && JelUnutarTable(x, y - 1) && !JelSahCrni(tabla, 0, -1))
  736.         {
  737.             wcscpy(tabla.polje[y - 1][x].figura, TACKA);
  738.             tabla.polje[y - 1][x].bojaFigure = ZELENO;
  739.             ret = 1;
  740.         }
  741.         else if(wcscmp(tabla.polje[y - 1][x].figura, PRAZNO) && tabla.polje[y - 1][x].bojaFigure == BELO && JelUnutarTable(x, y - 1) && !JelSahCrni(tabla, 0, -1))
  742.         {
  743.             tabla.polje[y - 1][x].stanjePolja = NAPADNUTO;
  744.             ret = 1;
  745.         }
  746.  
  747.         if(tabla.malarcrni == UKLJUCENO && !wcscmp(tabla.polje[0][5].figura, TACKA) && !wcscmp(tabla.polje[0][6].figura, PRAZNO) && !JelSahCrni(tabla, 0, 0) && !JelSahCrni(tabla, 1, 0) && !JelSahCrni(tabla, 2, 0))
  748.         {
  749.             wcscpy(tabla.polje[0][6].figura, TACKA);
  750.             tabla.polje[0][6].bojaFigure = ZELENO;
  751.             ret = 1;
  752.         }
  753.  
  754.         if(tabla.velikarcrni == UKLJUCENO && !wcscmp(tabla.polje[0][3].figura, TACKA) && !wcscmp(tabla.polje[0][2].figura, PRAZNO) && !wcscmp(tabla.polje[0][1].figura, PRAZNO) && !JelSahCrni(tabla, 0, 0) && !JelSahCrni(tabla, -1, 0) && !JelSahCrni(tabla, -2, 0) && !JelSahCrni(tabla, -3, 0))
  755.         {
  756.             wcscpy(tabla.polje[0][1].figura, TACKA);
  757.             tabla.polje[0][1].bojaFigure = ZELENO;
  758.             ret = 1;
  759.         }
  760.     }
  761.  
  762.     return ret;
  763. }
  764.  
  765.  
  766. short PostaviPijuna(Tabla &tabla, int x, int y)
  767. {
  768.     short ret = 0;
  769.  
  770.     tabla.polje[y][x].stanjePolja = IZABRANO;
  771.  
  772.     if(tabla.polje[y][x].bojaFigure == BELO)
  773.     {
  774.         if(!wcscmp(tabla.polje[y - 1][x].figura, PRAZNO) && JelUnutarTable(x, y - 1) && !JelSahBeli(StaviFiguruNaXY(tabla, x, y - 1), 0, 0))
  775.         {
  776.             wcscpy(tabla.polje[y - 1][x].figura, TACKA);
  777.             tabla.polje[y - 1][x].bojaFigure = ZELENO;
  778.             ret = 1;
  779.         }
  780.  
  781.         if(y == 6 && !wcscmp(tabla.polje[y - 2][x].figura, PRAZNO) && !wcscmp(tabla.polje[y - 1][x].figura, TACKA) && JelUnutarTable(x, y - 2) && !JelSahBeli(StaviFiguruNaXY(tabla, x, y - 2), 0, 0))
  782.         {
  783.             wcscpy(tabla.polje[y - 2][x].figura, TACKA);
  784.             tabla.polje[y - 2][x].bojaFigure = ZELENO;
  785.             ret = 1;
  786.         }
  787.  
  788.         if(wcscmp(tabla.polje[y - 1][x + 1].figura, PRAZNO) && tabla.polje[y - 1][x + 1].bojaFigure == CRNO && JelUnutarTable(x + 1, y - 1) && !JelSahBeli(StaviFiguruNaXY(tabla, x + 1, y - 1), 0, 0))
  789.         {
  790.             tabla.polje[y - 1][x + 1].stanjePolja = NAPADNUTO;
  791.             ret = 1;
  792.         }
  793.  
  794.         if(wcscmp(tabla.polje[y - 1][x - 1].figura, PRAZNO) && tabla.polje[y - 1][x - 1].bojaFigure == CRNO && JelUnutarTable(x - 1, y - 1) && !JelSahBeli(StaviFiguruNaXY(tabla, x - 1, y - 1), 0, 0))
  795.         {
  796.             tabla.polje[y - 1][x - 1].stanjePolja = NAPADNUTO;
  797.             ret = 1;
  798.         }
  799.  
  800.         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) && !JelSahBeli(StaviFiguruNaXY(tabla, x + 1, y - 1), 0, 0))
  801.         {
  802.             tabla.polje[y - 1][x + 1].stanjePolja = NAPADNUTO;
  803.             ret = 1;
  804.         }
  805.  
  806.         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) && !JelSahBeli(StaviFiguruNaXY(tabla, x - 1, y - 1), 0, 0))
  807.         {
  808.             tabla.polje[y - 1][x - 1].stanjePolja = NAPADNUTO;
  809.             ret = 1;
  810.         }
  811.     }
  812.     else
  813.     {
  814.         if(!wcscmp(tabla.polje[y + 1][x].figura, PRAZNO) && JelUnutarTable(x, y + 1) && !JelSahCrni(StaviFiguruNaXY(tabla, x, y + 1), 0, 0))
  815.         {
  816.             wcscpy(tabla.polje[y + 1][x].figura, TACKA);
  817.             tabla.polje[y + 1][x].bojaFigure = ZELENO;
  818.             ret = 1;
  819.         }
  820.  
  821.         if(y == 1 && !wcscmp(tabla.polje[y + 2][x].figura, PRAZNO) && !wcscmp(tabla.polje[y + 1][x].figura, TACKA) && JelUnutarTable(x, y + 2) && !JelSahCrni(StaviFiguruNaXY(tabla, x, y + 2), 0, 0))
  822.         {
  823.             wcscpy(tabla.polje[y + 2][x].figura, TACKA);
  824.             tabla.polje[y + 2][x].bojaFigure = ZELENO;
  825.             ret = 1;
  826.         }
  827.  
  828.         if(wcscmp(tabla.polje[y + 1][x + 1].figura, PRAZNO) && tabla.polje[y + 1][x + 1].bojaFigure == BELO && JelUnutarTable(x + 1, y + 1) && !JelSahCrni(StaviFiguruNaXY(tabla, x + 1, y + 1), 0, 0))
  829.         {
  830.             tabla.polje[y + 1][x + 1].stanjePolja = NAPADNUTO;
  831.             ret = 1;
  832.         }
  833.  
  834.         if(wcscmp(tabla.polje[y + 1][x - 1].figura, PRAZNO) && tabla.polje[y + 1][x - 1].bojaFigure == BELO && JelUnutarTable(x - 1, y + 1) && !JelSahCrni(StaviFiguruNaXY(tabla, x - 1, y + 1), 0, 0))
  835.         {
  836.             tabla.polje[y + 1][x - 1].stanjePolja = NAPADNUTO;
  837.             ret = 1;
  838.         }
  839.  
  840.         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) && !JelSahCrni(StaviFiguruNaXY(tabla, x - 1, y + 1), 0, 0))
  841.         {
  842.             tabla.polje[y + 1][x - 1].stanjePolja = NAPADNUTO;
  843.             ret = 1;
  844.         }
  845.  
  846.         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) && !JelSahCrni(StaviFiguruNaXY(tabla, x + 1, y + 1), 0, 0))
  847.         {
  848.             tabla.polje[y + 1][x + 1].stanjePolja = NAPADNUTO;
  849.             ret = 1;
  850.         }
  851.     }
  852.  
  853.     return ret;
  854. }
  855.  
  856. short PostaviKonja(Tabla &tabla, int x, int y)
  857. {
  858.     short ret = 0;
  859.     tabla.polje[y][x].stanjePolja = IZABRANO;
  860.  
  861.     if(!wcscmp(tabla.polje[y - 2][x - 1].figura, PRAZNO) && JelUnutarTable(x - 1, y - 2) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x - 1, y - 2), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x - 1, y - 2), 0, 0))))
  862.     {
  863.         wcscpy(tabla.polje[y - 2][x - 1].figura, TACKA);
  864.         tabla.polje[y - 2][x - 1].bojaFigure = ZELENO;
  865.         ret = 1;
  866.     }
  867.     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)  && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x - 1, y - 2), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x - 1, y - 2), 0, 0))))
  868.     {
  869.         tabla.polje[y - 2][x - 1].stanjePolja = NAPADNUTO;
  870.         ret = 1;
  871.     }
  872.  
  873.     if(!wcscmp(tabla.polje[y - 2][x + 1].figura, PRAZNO) && JelUnutarTable(x + 1, y - 2) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x + 1, y - 2), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x + 1, y - 2), 0, 0))))
  874.     {
  875.         wcscpy(tabla.polje[y - 2][x + 1].figura, TACKA);
  876.         tabla.polje[y - 2][x + 1].bojaFigure = ZELENO;
  877.         ret = 1;
  878.     }
  879.     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)  && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x + 1, y - 2), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x + 1, y - 2), 0, 0))))
  880.     {
  881.         tabla.polje[y - 2][x + 1].stanjePolja = NAPADNUTO;
  882.         ret = 1;
  883.     }
  884.  
  885.     if(!wcscmp(tabla.polje[y - 1][x + 2].figura, PRAZNO) && JelUnutarTable(x + 2, y - 1) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x + 2, y - 1), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x + 2, y - 1), 0, 0))))
  886.     {
  887.         wcscpy(tabla.polje[y - 1][x + 2].figura, TACKA);
  888.         tabla.polje[y - 1][x + 2].bojaFigure = ZELENO;
  889.         ret = 1;
  890.     }
  891.     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)  && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x + 2, y - 1), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x + 2, y - 1), 0, 0))))
  892.     {
  893.         tabla.polje[y - 1][x + 2].stanjePolja = NAPADNUTO;
  894.         ret = 1;
  895.     }
  896.  
  897.     if(!wcscmp(tabla.polje[y + 1][x + 2].figura, PRAZNO) && JelUnutarTable(x + 2, y + 1) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x + 2, y + 1), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x + 2, y + 1), 0, 0))))
  898.     {
  899.         wcscpy(tabla.polje[y + 1][x + 2].figura, TACKA);
  900.         tabla.polje[y + 1][x + 2].bojaFigure = ZELENO;
  901.         ret = 1;
  902.     }
  903.     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) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x + 2, y + 1), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x + 2, y + 1), 0, 0))))
  904.     {
  905.         tabla.polje[y + 1][x + 2].stanjePolja = NAPADNUTO;
  906.         ret = 1;
  907.     }
  908.  
  909.     if(!wcscmp(tabla.polje[y + 2][x + 1].figura, PRAZNO) && JelUnutarTable(x + 1, y + 2) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x + 1, y + 2), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x + 1, y + 2), 0, 0))))
  910.     {
  911.         wcscpy(tabla.polje[y + 2][x + 1].figura, TACKA);
  912.         tabla.polje[y + 2][x + 1].bojaFigure = ZELENO;
  913.         ret = 1;
  914.     }
  915.     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) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x + 1, y + 2), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x + 1, y + 2), 0, 0))))
  916.     {
  917.         tabla.polje[y + 2][x + 1].stanjePolja = NAPADNUTO;
  918.         ret = 1;
  919.     }
  920.  
  921.     if(!wcscmp(tabla.polje[y + 2][x - 1].figura, PRAZNO) && JelUnutarTable(x - 1, y + 2) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x - 1, y + 2), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x - 1, y + 2), 0, 0))))
  922.     {
  923.         wcscpy(tabla.polje[y + 2][x - 1].figura, TACKA);
  924.         tabla.polje[y + 2][x - 1].bojaFigure = ZELENO;
  925.         ret = 1;
  926.     }
  927.     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) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x - 1, y + 2), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x - 1, y + 2), 0, 0))))
  928.     {
  929.         tabla.polje[y + 2][x - 1].stanjePolja = NAPADNUTO;
  930.         ret = 1;
  931.     }
  932.  
  933.     if(!wcscmp(tabla.polje[y + 1][x - 2].figura, PRAZNO) && JelUnutarTable(x - 2, y + 1) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x - 2, y + 1), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x - 2, y + 1), 0, 0))))
  934.     {
  935.         wcscpy(tabla.polje[y + 1][x - 2].figura, TACKA);
  936.         tabla.polje[y + 1][x - 2].bojaFigure = ZELENO;
  937.         ret = 1;
  938.     }
  939.     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) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x - 2, y + 1), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x - 2, y + 1), 0, 0))))
  940.     {
  941.         tabla.polje[y + 1][x - 2].stanjePolja = NAPADNUTO;
  942.         ret = 1;
  943.     }
  944.  
  945.     if(!wcscmp(tabla.polje[y - 1][x - 2].figura, PRAZNO) && JelUnutarTable(x - 2, y - 1) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x - 2, y - 1), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x - 2, y - 1), 0, 0))))
  946.     {
  947.         wcscpy(tabla.polje[y - 1][x - 2].figura, TACKA);
  948.         tabla.polje[y - 1][x - 2].bojaFigure = ZELENO;
  949.         ret = 1;
  950.     }
  951.     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)  && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x - 2, y - 1), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x - 2, y - 1), 0, 0))))
  952.     {
  953.         tabla.polje[y - 1][x - 2].stanjePolja = NAPADNUTO;
  954.         ret = 1;
  955.     }
  956.  
  957.     return ret;
  958. }
  959.  
  960. short PostaviTopa(Tabla &tabla, int x, int y)
  961. {
  962.     short ret = 0;
  963.  
  964.     tabla.polje[y][x].stanjePolja = IZABRANO;
  965.  
  966.     for(int i = 1; i < 8; i++)
  967.     {
  968.         if(!wcscmp(tabla.polje[y][x - i].figura, PRAZNO) && JelUnutarTable(x - i, y) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x - i, y), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x - i, y), 0, 0))))
  969.         {
  970.             wcscpy(tabla.polje[y][x - i].figura, TACKA);
  971.             tabla.polje[y][x - i].bojaFigure = ZELENO;
  972.             ret = 1;
  973.         }
  974.         else if(wcscmp(tabla.polje[y][x - i].figura, PRAZNO) && ((tabla.polje[y][x].bojaFigure == BELO && tabla.polje[y][x - i].bojaFigure == CRNO) || (tabla.polje[y][x].bojaFigure == CRNO && tabla.polje[y][x - i].bojaFigure == BELO)) && JelUnutarTable(x - i, y) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x - i, y), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x - i, y), 0, 0))))
  975.         {
  976.             tabla.polje[y][x - i].stanjePolja = NAPADNUTO;
  977.             ret = 1;
  978.             break;
  979.         }
  980.         else if(wcscmp(tabla.polje[y][x - i].figura, PRAZNO) && ((tabla.polje[y][x].bojaFigure == BELO && tabla.polje[y][x - i].bojaFigure == BELO) || (tabla.polje[y][x].bojaFigure == CRNO && tabla.polje[y][x - i].bojaFigure == CRNO)) && JelUnutarTable(x - i, y))
  981.             break;
  982.     }
  983.  
  984.     for(int i = 1; i < 8; i++)
  985.     {
  986.         if(!wcscmp(tabla.polje[y][x + i].figura, PRAZNO) && JelUnutarTable(x + i, y) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x + i, y), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x + i, y), 0, 0))))
  987.         {
  988.             wcscpy(tabla.polje[y][x + i].figura, TACKA);
  989.             tabla.polje[y][x + i].bojaFigure = ZELENO;
  990.             ret = 1;
  991.         }
  992.         else if(wcscmp(tabla.polje[y][x + i].figura, PRAZNO) && ((tabla.polje[y][x].bojaFigure == BELO && tabla.polje[y][x + i].bojaFigure == CRNO) || (tabla.polje[y][x].bojaFigure == CRNO && tabla.polje[y][x + i].bojaFigure == BELO)) && JelUnutarTable(x + i, y) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x + i, y), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x + i, y), 0, 0))))
  993.         {
  994.             tabla.polje[y][x + i].stanjePolja = NAPADNUTO;
  995.             ret = 1;
  996.             break;
  997.         }
  998.         else if(wcscmp(tabla.polje[y][x + i].figura, PRAZNO) && ((tabla.polje[y][x].bojaFigure == BELO && tabla.polje[y][x + i].bojaFigure == BELO) || (tabla.polje[y][x].bojaFigure == CRNO && tabla.polje[y][x + i].bojaFigure == CRNO)) && JelUnutarTable(x + i, y))
  999.             break;
  1000.     }
  1001.  
  1002.     for(int i = 1; i < 8; i++)
  1003.     {
  1004.         if(!wcscmp(tabla.polje[y - i][x].figura, PRAZNO) && JelUnutarTable(x, y - i) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x, y - i), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x, y - i), 0, 0))))
  1005.         {
  1006.             wcscpy(tabla.polje[y - i][x].figura, TACKA);
  1007.             tabla.polje[y - i][x].bojaFigure = ZELENO;
  1008.             ret = 1;
  1009.         }
  1010.         else if(wcscmp(tabla.polje[y - i][x].figura, PRAZNO) && ((tabla.polje[y][x].bojaFigure == BELO && tabla.polje[y - i][x].bojaFigure == CRNO) || (tabla.polje[y][x].bojaFigure == CRNO && tabla.polje[y - i][x].bojaFigure == BELO)) && JelUnutarTable(x, y - i) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x, y - i), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x, y - i), 0, 0))))
  1011.         {
  1012.             tabla.polje[y - i][x].stanjePolja = NAPADNUTO;
  1013.             ret = 1;
  1014.             break;
  1015.         }
  1016.         else if(wcscmp(tabla.polje[y - i][x].figura, PRAZNO) && ((tabla.polje[y][x].bojaFigure == BELO && tabla.polje[y - i][x].bojaFigure == BELO) || (tabla.polje[y][x].bojaFigure == CRNO && tabla.polje[y - i][x].bojaFigure == CRNO)) && JelUnutarTable(x, y - i))
  1017.             break;
  1018.     }
  1019.  
  1020.     for(int i = 1; i < 8; i++)
  1021.     {
  1022.         if(!wcscmp(tabla.polje[y + i][x].figura, PRAZNO) && JelUnutarTable(x, y + i) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x, y + i), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x, y + i), 0, 0))))
  1023.         {
  1024.             wcscpy(tabla.polje[y + i][x].figura, TACKA);
  1025.             tabla.polje[y + i][x].bojaFigure = ZELENO;
  1026.             ret = 1;
  1027.         }
  1028.         else if(wcscmp(tabla.polje[y + i][x].figura, PRAZNO) && ((tabla.polje[y][x].bojaFigure == BELO && tabla.polje[y + i][x].bojaFigure == CRNO) || (tabla.polje[y][x].bojaFigure == CRNO && tabla.polje[y + i][x].bojaFigure == BELO)) && JelUnutarTable(x, y + i) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x, y + i), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x, y + i), 0, 0))))
  1029.         {
  1030.             tabla.polje[y + i][x].stanjePolja = NAPADNUTO;
  1031.             ret = 1;
  1032.             break;
  1033.         }
  1034.         else if(wcscmp(tabla.polje[y + i][x].figura, PRAZNO) && ((tabla.polje[y][x].bojaFigure == BELO && tabla.polje[y + i][x].bojaFigure == BELO) || (tabla.polje[y][x].bojaFigure == CRNO && tabla.polje[y + i][x].bojaFigure == CRNO)) && JelUnutarTable(x, y + i))
  1035.             break;
  1036.     }
  1037.  
  1038.     return ret;
  1039. }
  1040.  
  1041. short PostaviLovca(Tabla &tabla, int x, int y)
  1042. {
  1043.     short ret = 0;
  1044.  
  1045.     tabla.polje[y][x].stanjePolja = IZABRANO;
  1046.  
  1047.     for(int i = 1; i < 8; i++)
  1048.     {
  1049.         if(!wcscmp(tabla.polje[y - i][x - i].figura, PRAZNO) && JelUnutarTable(x - i, y - i) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x - i, y - i), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x - i, y - i), 0, 0))))
  1050.         {
  1051.             wcscpy(tabla.polje[y - i][x - i].figura, TACKA);
  1052.             tabla.polje[y - i][x - i].bojaFigure = ZELENO;
  1053.             ret = 1;
  1054.         }
  1055.         else if(wcscmp(tabla.polje[y - i][x - i].figura, PRAZNO) && ((tabla.polje[y][x].bojaFigure == BELO && tabla.polje[y - i][x - i].bojaFigure == CRNO) || (tabla.polje[y][x].bojaFigure == CRNO && tabla.polje[y - i][x - i].bojaFigure == BELO)) && JelUnutarTable(x - i, y - i) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x - i, y - i), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x - i, y - i), 0, 0))))
  1056.         {
  1057.             tabla.polje[y - i][x - i].stanjePolja = NAPADNUTO;
  1058.             ret = 1;
  1059.             break;
  1060.         }
  1061.         else if(wcscmp(tabla.polje[y - i][x - i].figura, PRAZNO) && ((tabla.polje[y][x].bojaFigure == BELO && tabla.polje[y - i][x - i].bojaFigure == BELO) || (tabla.polje[y][x].bojaFigure == CRNO && tabla.polje[y - i][x - i].bojaFigure == CRNO)) && JelUnutarTable(x - i, y - i))
  1062.             break;
  1063.     }
  1064.  
  1065.     for(int i = 1; i < 8; i++)
  1066.     {
  1067.         if(!wcscmp(tabla.polje[y - i][x + i].figura, PRAZNO) && JelUnutarTable(x + i, y - i) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x + i, y - i), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x + i, y - i), 0, 0))))
  1068.         {
  1069.             wcscpy(tabla.polje[y - i][x + i].figura, TACKA);
  1070.             tabla.polje[y - i][x + i].bojaFigure = ZELENO;
  1071.             ret = 1;
  1072.         }
  1073.         else if(wcscmp(tabla.polje[y - i][x + i].figura, PRAZNO) && ((tabla.polje[y][x].bojaFigure == BELO && tabla.polje[y - i][x + i].bojaFigure == CRNO) || (tabla.polje[y][x].bojaFigure == CRNO && tabla.polje[y - i][x + i].bojaFigure == BELO)) && JelUnutarTable(x + i, y - i) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x + i, y - i), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x + i, y - i), 0, 0))))
  1074.         {
  1075.             tabla.polje[y - i][x + i].stanjePolja = NAPADNUTO;
  1076.             ret = 1;
  1077.             break;
  1078.         }
  1079.         else if(wcscmp(tabla.polje[y - i][x + i].figura, PRAZNO) && ((tabla.polje[y][x].bojaFigure == BELO && tabla.polje[y - i][x + i].bojaFigure == BELO) || (tabla.polje[y][x].bojaFigure == CRNO && tabla.polje[y - i][x + i].bojaFigure == CRNO)) && JelUnutarTable(x + i, y - i))
  1080.             break;
  1081.     }
  1082.  
  1083.     for(int i = 1; i < 8; i++)
  1084.     {
  1085.         if(!wcscmp(tabla.polje[y + i][x - i].figura, PRAZNO) && JelUnutarTable(x - i, y + i) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x - i, y + i), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x - i, y + i), 0, 0))))
  1086.         {
  1087.             wcscpy(tabla.polje[y + i][x - i].figura, TACKA);
  1088.             tabla.polje[y + i][x - i].bojaFigure = ZELENO;
  1089.             ret = 1;
  1090.         }
  1091.         else if(wcscmp(tabla.polje[y + i][x - i].figura, PRAZNO) && ((tabla.polje[y][x].bojaFigure == BELO && tabla.polje[y + i][x - i].bojaFigure == CRNO) || (tabla.polje[y][x].bojaFigure == CRNO && tabla.polje[y + i][x - i].bojaFigure == BELO)) && JelUnutarTable(x - i, y + i) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x - i, y + i), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x - i, y + i), 0, 0))))
  1092.         {
  1093.             tabla.polje[y + i][x - i].stanjePolja = NAPADNUTO;
  1094.             ret = 1;
  1095.             break;
  1096.         }
  1097.         else if(wcscmp(tabla.polje[y + i][x - i].figura, PRAZNO) && ((tabla.polje[y][x].bojaFigure == BELO && tabla.polje[y + i][x - i].bojaFigure == BELO) || (tabla.polje[y][x].bojaFigure == CRNO && tabla.polje[y + i][x - i].bojaFigure == CRNO)) && JelUnutarTable(x - i, y + i))
  1098.             break;
  1099.     }
  1100.  
  1101.     for(int i = 1; i < 8; i++)
  1102.     {
  1103.         if(!wcscmp(tabla.polje[y + i][x +  i].figura, PRAZNO) && JelUnutarTable(x + i, y + i) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x + i, y + i), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x + i, y + i), 0, 0))))
  1104.         {
  1105.             wcscpy(tabla.polje[y + i][x + i].figura, TACKA);
  1106.             tabla.polje[y + i][x + i].bojaFigure = ZELENO;
  1107.             ret = 1;
  1108.         }
  1109.         else if(wcscmp(tabla.polje[y + i][x + i].figura, PRAZNO) && ((tabla.polje[y][x].bojaFigure == BELO && tabla.polje[y + i][x + i].bojaFigure == CRNO) || (tabla.polje[y][x].bojaFigure == CRNO && tabla.polje[y + i][x + i].bojaFigure == BELO)) && JelUnutarTable(x + i, y + i) && ((tabla.polje[y][x].bojaFigure == BELO && !JelSahBeli(StaviFiguruNaXY(tabla, x + i, y + i), 0, 0)) || (tabla.polje[y][x].bojaFigure == CRNO && !JelSahCrni(StaviFiguruNaXY(tabla, x + i, y + i), 0, 0))))
  1110.         {
  1111.             tabla.polje[y + i][x + i].stanjePolja = NAPADNUTO;
  1112.             ret = 1;
  1113.             break;
  1114.         }
  1115.         else if(wcscmp(tabla.polje[y + i][x + i].figura, PRAZNO) && ((tabla.polje[y][x].bojaFigure == BELO && tabla.polje[y + i][x + i].bojaFigure == BELO) || (tabla.polje[y][x].bojaFigure == CRNO && tabla.polje[y + i][x + i].bojaFigure == CRNO)) && JelUnutarTable(x + i, y + i))
  1116.             break;
  1117.     }
  1118.  
  1119.     return ret;
  1120. }
  1121.  
  1122. short PostaviKraljicu(Tabla &tabla, int x, int y)
  1123. {
  1124.     int ret = 0;
  1125.     ret += PostaviLovca(tabla, x, y);
  1126.     ret += PostaviTopa(tabla, x, y);
  1127.  
  1128.     if(ret != 0)
  1129.         ret = 1;
  1130.  
  1131.     return ret;
  1132. }
  1133.  
  1134. short JelMozeIgratiBeli(Tabla tabla)
  1135. {
  1136.     short ret = 0;
  1137.  
  1138.     for(int y = 0; y < 8; y++)
  1139.         for(int x = 0; x < 8; x++)
  1140.             if(tabla.polje[y][x].bojaFigure == BELO)
  1141.             {
  1142.                 if(!wcscmp(tabla.polje[y][x].figura, KRALJ))
  1143.                 {
  1144.                     ret += PostaviKralja(tabla, x, y);
  1145.  
  1146.                     NoviPotez(tabla);
  1147.                 }
  1148.                 else if(!wcscmp(tabla.polje[y][x].figura, PIJUN))
  1149.                 {
  1150.                     ret += PostaviPijuna(tabla, x, y);
  1151.  
  1152.                     NoviPotez(tabla);
  1153.                 }
  1154.                 else if(!wcscmp(tabla.polje[y][x].figura, KONJ))
  1155.                 {
  1156.                     ret += PostaviKonja(tabla, x, y);
  1157.  
  1158.                     NoviPotez(tabla);
  1159.                 }
  1160.                 else if(!wcscmp(tabla.polje[y][x].figura, TOP))
  1161.                 {
  1162.                     ret += PostaviTopa(tabla, x, y);
  1163.  
  1164.                     NoviPotez(tabla);
  1165.                 }
  1166.                 else if(!wcscmp(tabla.polje[y][x].figura, LOVAC))
  1167.                 {
  1168.                     ret += PostaviLovca(tabla, x, y);
  1169.  
  1170.                     NoviPotez(tabla);
  1171.                 }
  1172.                 else if(!wcscmp(tabla.polje[y][x].figura, KRALJICA))
  1173.                 {
  1174.                     ret += PostaviKraljicu(tabla, x, y);
  1175.  
  1176.                     NoviPotez(tabla);
  1177.                 }
  1178.             }
  1179.  
  1180.     if(ret != 0)
  1181.         ret = 1;
  1182.  
  1183.     return ret;
  1184. }
  1185.  
  1186. short JelMozeIgratiCrni(Tabla tabla)
  1187. {
  1188.     short ret = 0;
  1189.  
  1190.     for(int y = 0; y < 8; y++)
  1191.         for(int x = 0; x < 8; x++)
  1192.             if(tabla.polje[y][x].bojaFigure == CRNO)
  1193.             {
  1194.                 if(!wcscmp(tabla.polje[y][x].figura, KRALJ))
  1195.                 {
  1196.                     ret += PostaviKralja(tabla, x, y);
  1197.  
  1198.                     NoviPotez(tabla);
  1199.                 }
  1200.                 else if(!wcscmp(tabla.polje[y][x].figura, PIJUN))
  1201.                 {
  1202.                     ret += PostaviPijuna(tabla, x, y);
  1203.  
  1204.                     NoviPotez(tabla);
  1205.                 }
  1206.                 else if(!wcscmp(tabla.polje[y][x].figura, KONJ))
  1207.                 {
  1208.                     ret += PostaviKonja(tabla, x, y);
  1209.  
  1210.                     NoviPotez(tabla);
  1211.                 }
  1212.                 else if(!wcscmp(tabla.polje[y][x].figura, TOP))
  1213.                 {
  1214.                     ret += PostaviTopa(tabla, x, y);
  1215.  
  1216.                     NoviPotez(tabla);
  1217.                 }
  1218.                 else if(!wcscmp(tabla.polje[y][x].figura, LOVAC))
  1219.                 {
  1220.                     ret += PostaviLovca(tabla, x, y);
  1221.  
  1222.                     NoviPotez(tabla);
  1223.                 }
  1224.                 else if(!wcscmp(tabla.polje[y][x].figura, KRALJICA))
  1225.                 {
  1226.                     ret += PostaviKraljicu(tabla, x, y);
  1227.  
  1228.                     NoviPotez(tabla);
  1229.                 }
  1230.             }
  1231.  
  1232.     if(ret != 0)
  1233.         ret = 1;
  1234.  
  1235.     return ret;
  1236. }
  1237.  
  1238. short ZameniPijuna()
  1239. {
  1240.     int x, y, pom = 1, izb;
  1241.  
  1242.     HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);
  1243.     _setmode(_fileno(stdout), _O_U8TEXT);
  1244.  
  1245.     if(boja == SVETLO)
  1246.         SetConsoleTextAttribute(console, 82);
  1247.     else if(boja == TAMNO)
  1248.         SetConsoleTextAttribute(console, 101);
  1249.     else if(boja == SIVO)
  1250.         SetConsoleTextAttribute(console, 152);
  1251.  
  1252.     gotoxy(8, 14);
  1253.     wprintf(KRALJICA);
  1254.     wprintf(L"    ");
  1255.     wprintf(TOP);
  1256.     wprintf(L"    ");
  1257.     wprintf(LOVAC);
  1258.     wprintf(L"    ");
  1259.     wprintf(KONJ);
  1260.  
  1261.     while(pom)
  1262.     {
  1263.         pom = 0;
  1264.         UcitajKlik(x, y);
  1265.  
  1266.         if((x == 8 || x == 9) && y == 14)
  1267.             izb = 0;
  1268.         else if((x == 14 || x == 15) && y == 14)
  1269.             izb = 1;
  1270.         else if((x == 20 || x == 21) && y == 14)
  1271.             izb = 2;
  1272.         else if((x == 26 || x == 27) && y == 14)
  1273.             izb = 3;
  1274.         else
  1275.             pom = 1;
  1276.     }
  1277.  
  1278.     ObrisiTerminal();
  1279.  
  1280.     return izb;
  1281. }
  1282.  
  1283. void OsveziTablu(Tabla tabla)
  1284. {
  1285.     if((brPoteza % 2 && rotacija == UKLJUCENO && JelMozeIgratiCrni(tabla)) || (!JelMozeIgratiBeli(tabla) && rotacija == UKLJUCENO && brPoteza % 2 == 0))
  1286.     {
  1287.         if(sacekaj == UKLJUCENO && JelMozeIgratiBeli(tabla))
  1288.         {
  1289.             OdstampajTablu(tabla);
  1290.             Sleep(260);
  1291.         }
  1292.  
  1293.         ObrnutoOdstampajTablu(tabla);
  1294.     }
  1295.     else
  1296.     {
  1297.         if(sacekaj == UKLJUCENO && rotacija == UKLJUCENO && JelMozeIgratiCrni(tabla))
  1298.         {
  1299.             ObrnutoOdstampajTablu(tabla);
  1300.             Sleep(260);
  1301.         }
  1302.  
  1303.         OdstampajTablu(tabla);
  1304.     }
  1305. }
  1306.  
  1307. int FiguraUBroj(wchar_t figura[])
  1308. {
  1309.     _setmode(_fileno(stdout), _O_U8TEXT);
  1310.  
  1311.     if(!wcscmp(figura, KRALJ))
  1312.         return 0;
  1313.     else if(!wcscmp(figura, KRALJICA))
  1314.         return 1;
  1315.     else if(!wcscmp(figura, TOP))
  1316.         return 2;
  1317.     else if(!wcscmp(figura, LOVAC))
  1318.         return 3;
  1319.     else if(!wcscmp(figura, KONJ))
  1320.         return 4;
  1321.     else if(!wcscmp(figura, PIJUN))
  1322.         return 5;
  1323.     else if(!wcscmp(figura, PRAZNO))
  1324.         return 6;
  1325.     else if(!wcscmp(figura, TACKA))
  1326.         return 7;
  1327. }
  1328.  
  1329. wchar_t* BrojUFiguru(int broj)
  1330. {
  1331.     _setmode(_fileno(stdout), _O_U8TEXT);
  1332.  
  1333.     switch(broj)
  1334.     {
  1335.     case 0:
  1336.         return KRALJ;
  1337.  
  1338.     case 1:
  1339.         return KRALJICA;
  1340.  
  1341.     case 2:
  1342.         return TOP;
  1343.  
  1344.     case 3:
  1345.         return LOVAC;
  1346.  
  1347.     case 4:
  1348.         return KONJ;
  1349.  
  1350.     case 5:
  1351.         return PIJUN;
  1352.  
  1353.     case 6:
  1354.         return PRAZNO;
  1355.  
  1356.     case 7:
  1357.         return TACKA;
  1358.     }
  1359. }
  1360.  
  1361. void MemorijaUIstoriju(vector<short> memo, vector<Tabla> &istorija)
  1362. {
  1363.     istorija.clear();
  1364.  
  1365.     for(int a = 0; a < brPoteza; a++)
  1366.     {
  1367.         istorija[a].brlevo = memo[a * 295];
  1368.         istorija[a].brdesno = memo[a * 295 + 1];
  1369.         istorija[a].krajigre = memo[a * 295 + 2];
  1370.         istorija[a].malarbeli = memo[a * 295 + 3];
  1371.         istorija[a].malarcrni = memo[a * 295 + 4];
  1372.         istorija[a].velikarbeli = memo[a * 295 + 5];
  1373.         istorija[a].velikarcrni = memo[a * 295 + 6];
  1374.  
  1375.         for(int i = 0; i < 16; i++)
  1376.         {
  1377.             wcscpy(istorija[a].levo[i / 2][i % 2].figura, BrojUFiguru(memo[a * 295 + 7 + i]));
  1378.             wcscpy(istorija[a].desno[i / 2][i % 2].figura, BrojUFiguru(memo[a * 295 + 8 + i]));
  1379.         }
  1380.  
  1381.         for(int i = 0; i < 8; i++)
  1382.             for(int j = 0; j < 8; j++)
  1383.             {
  1384.                 istorija[a].polje[i][j].anpasan = memo[a * 295 + 16 + i * 8 + j];
  1385.                 istorija[a].polje[i][j].bojaFigure = memo[a * 295 + 16 + i * 8 + j];
  1386.                 wcscpy(istorija[a].polje[i][j].figura, BrojUFiguru(memo[a * 295 + 16 + i * 8 + j]));
  1387.                 istorija[a].polje[i][j].stanjePolja = memo[a * 295 + 16 + i * 8 + j];
  1388.             }
  1389.  
  1390.         for(int i = 0; i < 8; i++)
  1391.             for(int j = 0; j < 8; j++)
  1392.                 if((i + j) % 2 == 0)
  1393.                     istorija[a].polje[i][j].bojaPolja = BELO;
  1394.                 else
  1395.                     istorija[a].polje[i][j].bojaPolja = CRNO;
  1396.  
  1397.         for(int i = 0; i < 8; i++)
  1398.             for(int j = 0; j < 2; j++)
  1399.             {
  1400.                 istorija[a].levo[i][j].anpasan = ISKLJUCENO;
  1401.                 istorija[a].levo[i][j].bojaFigure = CRNO;
  1402.                 istorija[a].levo[i][j].stanjePolja = NEUTRALNO;
  1403.                 istorija[a].desno[i][j].anpasan = ISKLJUCENO;
  1404.                 istorija[a].desno[i][j].bojaFigure = BELO;
  1405.                 istorija[a].desno[i][j].stanjePolja = NEUTRALNO;
  1406.             }
  1407.  
  1408.     }
  1409.  
  1410. }
  1411.  
  1412. vector<short> NapraviSacuvaj(vector<Tabla> istorija)
  1413. {
  1414.     vector<short> memo;
  1415.     memo.clear();
  1416.  
  1417.     for(int a = 0; a < brPoteza; a++)
  1418.     {
  1419.         memo.push_back(istorija[a].brdesno);
  1420.         memo.push_back(istorija[a].brlevo);
  1421.         memo.push_back(istorija[a].krajigre);
  1422.         memo.push_back(istorija[a].malarbeli);
  1423.         memo.push_back(istorija[a].malarcrni);
  1424.         memo.push_back(istorija[a].velikarbeli);
  1425.         memo.push_back(istorija[a].velikarcrni);
  1426.  
  1427.         for(int i = 0; i < 16; i++)
  1428.         {
  1429.             memo.push_back(FiguraUBroj(istorija[a].levo[i / 2][i % 2].figura));
  1430.             memo.push_back(FiguraUBroj(istorija[a].desno[i / 2][i % 2].figura));
  1431.         }
  1432.  
  1433.         for(int i = 0; i < 8; i++)
  1434.             for(int j = 0; j < 8; j++)
  1435.             {
  1436.                 memo.push_back(istorija[a].polje[i][j].anpasan);
  1437.                 memo.push_back(istorija[a].polje[i][j].bojaFigure);
  1438.                 memo.push_back(FiguraUBroj(istorija[a].polje[i][j].figura));
  1439.                 memo.push_back(istorija[a].polje[i][j].stanjePolja);
  1440.             }
  1441.     }
  1442.  
  1443.     return memo;
  1444. }
  1445.  
  1446. void SacuvajIgru(vector<Tabla> istorija)
  1447. {
  1448.     char ime[18], zn;
  1449.     int pom;
  1450.     vector<short> memo;
  1451.     ObrisiTerminal();
  1452.     HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
  1453.     SetConsoleCursorInfo(hConsole, &kursor);
  1454.  
  1455.     if(boja == SVETLO)
  1456.         SetConsoleTextAttribute(hConsole, 82);
  1457.     else if(boja == TAMNO)
  1458.         SetConsoleTextAttribute(hConsole, 101);
  1459.     else if(boja == SIVO)
  1460.         SetConsoleTextAttribute(hConsole, 152);
  1461.  
  1462.     _setmode(_fileno(stdout), _O_TEXT);
  1463.  
  1464.     gotoxy(4, 14);
  1465.     printf("Ime igre:  ");
  1466.  
  1467.     for(int i = 0; i < 18; i++)
  1468.     {
  1469.         fflush(stdin);
  1470.         zn = getch();
  1471.         fflush(stdin);
  1472.  
  1473.         if((zn == 13 && i != 0) || i == 14)
  1474.         {
  1475.             Sleep(100);
  1476.             SakriKursor();
  1477.             ime[i] = '\0';
  1478.             break;
  1479.         }
  1480.         else if(zn == 8)
  1481.         {
  1482.             gotoxy(14 + i, 14);
  1483.             putch(' ');
  1484.             gotoxy(14 + i, 14);
  1485.             i -= 2;
  1486.         }
  1487.         else
  1488.         {
  1489.             gotoxy(15 + i, 14);
  1490.             putch(zn);
  1491.             ime[i] = zn;
  1492.         }
  1493.     }
  1494.  
  1495.     ObrisiTerminal();
  1496.     gotoxy(4, 14);
  1497.  
  1498.     memo = NapraviSacuvaj(istorija);
  1499.  
  1500.     ofstream izlaz (strcat(ime, ".igra"));
  1501.  
  1502.     if(izlaz.is_open())
  1503.     {
  1504.         izlaz << brPoteza;
  1505.  
  1506.         for(int i = 0; i < brPoteza * 295; i++)
  1507.         {
  1508.             if(!(i % 295))
  1509.                 izlaz << endl;
  1510.  
  1511.             izlaz << memo[i] << " ";
  1512.         }
  1513.  
  1514.         izlaz.close();
  1515.     }
  1516.  
  1517. }
  1518.  
  1519. void UcitajIgru(vector<Tabla> &istorija)
  1520. {
  1521.     vector<short> memo;
  1522.     char ime[18], zn;
  1523.     short pom;
  1524.     ObrisiTerminal();
  1525.     HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
  1526.     SetConsoleCursorInfo(hConsole, &kursor);
  1527.  
  1528.     if(boja == SVETLO)
  1529.         SetConsoleTextAttribute(hConsole, 82);
  1530.     else if(boja == TAMNO)
  1531.         SetConsoleTextAttribute(hConsole, 101);
  1532.     else if(boja == SIVO)
  1533.         SetConsoleTextAttribute(hConsole, 152);
  1534.  
  1535.     _setmode(_fileno(stdout), _O_TEXT);
  1536.  
  1537.     gotoxy(4, 14);
  1538.     printf("Ime igre:  ");
  1539.  
  1540.     for(int i = 0; i < 18; i++)
  1541.     {
  1542.         zn = getch();
  1543.  
  1544.         if((zn == 13 && i != 0) || i == 14)
  1545.         {
  1546.             Sleep(100);
  1547.             SakriKursor();
  1548.             ime[i] = '\0';
  1549.             break;
  1550.         }
  1551.         else if(zn == 8)
  1552.         {
  1553.             gotoxy(14 + i, 14);
  1554.             putch(' ');
  1555.             gotoxy(14 + i, 14);
  1556.             i -= 2;
  1557.         }
  1558.         else
  1559.         {
  1560.             gotoxy(15 + i, 14);
  1561.             putch(zn);
  1562.             ime[i] = zn;
  1563.         }
  1564.     }
  1565.  
  1566.     ObrisiTerminal();
  1567.     gotoxy(4, 14);
  1568.  
  1569.     ifstream ulaz (strcat(ime, ".igra"));
  1570.  
  1571.     if(ulaz.is_open())
  1572.     {
  1573.         ulaz >> brPoteza;
  1574.  
  1575.         istorija.clear();
  1576.  
  1577.         for(int a = 0; a < brPoteza; a++)
  1578.         {
  1579.             ulaz >> istorija[a].brlevo;
  1580.             ulaz >> istorija[a].brdesno;
  1581.             ulaz >> istorija[a].krajigre;
  1582.             ulaz >> istorija[a].malarbeli;
  1583.             ulaz >> istorija[a].malarcrni;
  1584.             ulaz >> istorija[a].velikarbeli;
  1585.             ulaz >> istorija[a].velikarcrni;
  1586.  
  1587.             for(int i = 0; i < 16; i++)
  1588.             {
  1589.                 ulaz >> pom;
  1590.                 wcscpy(istorija[a].levo[i / 2][i % 2].figura, BrojUFiguru(pom));
  1591.                 ulaz >> pom;
  1592.                 wcscpy(istorija[a].desno[i / 2][i % 2].figura, BrojUFiguru(pom));
  1593.             }
  1594.  
  1595.             for(int i = 0; i < 8; i++)
  1596.                 for(int j = 0; j < 8; j++)
  1597.                 {
  1598.                     ulaz >> istorija[a].polje[i][j].anpasan;
  1599.                     ulaz >> istorija[a].polje[i][j].bojaFigure;
  1600.                     ulaz >> pom;
  1601.                     wcscpy(istorija[a].polje[i][j].figura, BrojUFiguru(pom));
  1602.                     ulaz >> istorija[a].polje[i][j].stanjePolja;
  1603.                 }
  1604.  
  1605.             for(int i = 0; i < 8; i++)
  1606.                 for(int j = 0; j < 8; j++)
  1607.                     if((i + j) % 2 == 0)
  1608.                         istorija[a].polje[i][j].bojaPolja = BELO;
  1609.                     else
  1610.                         istorija[a].polje[i][j].bojaPolja = CRNO;
  1611.  
  1612.             for(int i = 0; i < 8; i++)
  1613.                 for(int j = 0; j < 2; j++)
  1614.                 {
  1615.                     istorija[a].levo[i][j].anpasan = ISKLJUCENO;
  1616.                     istorija[a].levo[i][j].bojaFigure = CRNO;
  1617.                     istorija[a].levo[i][j].stanjePolja = NEUTRALNO;
  1618.                     istorija[a].desno[i][j].anpasan = ISKLJUCENO;
  1619.                     istorija[a].desno[i][j].bojaFigure = BELO;
  1620.                     istorija[a].desno[i][j].stanjePolja = NEUTRALNO;
  1621.                 }
  1622.  
  1623.         }
  1624.  
  1625.         ulaz.close();
  1626.     }
  1627.  
  1628. //    MemorijaUIstoriju(memo, istorija);
  1629. //
  1630. //    FILE *ulaz;
  1631. //    ulaz = fopen(strcat(ime, ".igra"), "r");
  1632. //
  1633. //    fscanf(ulaz, "%lld ", brPoteza);
  1634. //
  1635. //    for(int u = 0; u < brPoteza; u++)
  1636. //    {
  1637. //        fscanf(ulaz, "%d %d %d %d %d %d %d ", istorija[u].brlevo, istorija[u].brdesno, istorija[u].malarbeli, istorija[u].velikarbeli, istorija[u].malarcrni, istorija[u].velikarcrni, istorija[u].krajigre);
  1638. //
  1639. //        for(int i = 0; i < 8; i++)
  1640. //            for(int j = 0; j < 2; j++)
  1641. //            {
  1642. //                fscanf(ulaz, "%d %d ", istorija[u].levo[i][j].bojaPolja, istorija[u].levo[i][j].stanjePolja);
  1643. //                fscanf(ulaz, "%d ", pom);
  1644. //                wcscpy(istorija[u].levo[i][j].figura, BrojUFiguru(pom));
  1645. //                fscanf(ulaz, "%d %d ", istorija[u].levo[i][j].bojaFigure, istorija[u].levo[i][j].anpasan);
  1646. //            }
  1647. //
  1648. //        for(int i = 0; i < 8; i++)
  1649. //            for(int j = 0; j < 2; j++)
  1650. //            {
  1651. //                fscanf(ulaz, "%d %d ", istorija[u].levo[i][j].bojaPolja, istorija[u].levo[i][j].stanjePolja);
  1652. //                fscanf(ulaz, "%d ", pom);
  1653. //                wcscpy(istorija[u].levo[i][j].figura, BrojUFiguru(pom));
  1654. //                fscanf(ulaz, "%d %d ", istorija[u].levo[i][j].bojaFigure, istorija[u].levo[i][j].anpasan);
  1655. //            }
  1656. //
  1657. //        for(int i = 0; i < 8; i++)
  1658. //            for(int j = 0; j < 8; j++)
  1659. //            {
  1660. //                fscanf(ulaz, "%d %d ", istorija[u].levo[i][j].bojaPolja, istorija[u].levo[i][j].stanjePolja);
  1661. //                fscanf(ulaz, "%d ", pom);
  1662. //                wcscpy(istorija[u].levo[i][j].figura, BrojUFiguru(pom));
  1663. //                fscanf(ulaz, "%d %d ", istorija[u].levo[i][j].bojaFigure, istorija[u].levo[i][j].anpasan);
  1664. //            }
  1665. //    }
  1666. //
  1667. //    fclose(ulaz);
  1668.  
  1669. }
  1670.  
  1671.  
  1672. int main()
  1673. {
  1674.     Tabla tabla;
  1675.     NapraviTablu(tabla);
  1676.     vector<Tabla> istorija(0);
  1677.     istorija.push_back(tabla);
  1678.  
  1679.     PodesiKonzolu();
  1680.     CentrirajKonzolu();
  1681.     PodesiKonzolu2();
  1682.     OdstampajKonzolu();
  1683.     OdstampajTablu(tabla);
  1684.  
  1685.     int x, y, xizb, yizb, i = 35;
  1686.     HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);
  1687.     _setmode(_fileno(stdout), _O_U8TEXT);
  1688.  
  1689.     while(1)
  1690.     {
  1691.         if(brPoteza % 2 == 1 && !JelMozeIgratiCrni(tabla) && JelSahCrni(tabla, 0, 0))
  1692.         {
  1693.             if(boja == SVETLO)
  1694.                 SetConsoleTextAttribute(console, 82);
  1695.             else if(boja == TAMNO)
  1696.                 SetConsoleTextAttribute(console, 101);
  1697.             else if(boja == SIVO)
  1698.                 SetConsoleTextAttribute(console, 152);
  1699.  
  1700.             tabla.krajigre = 1;
  1701.             gotoxy(10, 14);
  1702.             wprintf(L"Beli je pobednik");
  1703.         }
  1704.         else if (brPoteza % 2 == 0 && !JelMozeIgratiBeli(tabla) && JelSahBeli(tabla, 0, 0))
  1705.         {
  1706.             if(boja == SVETLO)
  1707.                 SetConsoleTextAttribute(console, 82);
  1708.             else if(boja == TAMNO)
  1709.                 SetConsoleTextAttribute(console, 101);
  1710.             else if(boja == SIVO)
  1711.                 SetConsoleTextAttribute(console, 152);
  1712.  
  1713.             tabla.krajigre = 1;
  1714.             gotoxy(10, 14);
  1715.             wprintf(L"Crni je pobednik");
  1716.         }
  1717.         else if(brPoteza % 2 == 1 && !JelMozeIgratiCrni(tabla))
  1718.         {
  1719.             if(boja == SVETLO)
  1720.                 SetConsoleTextAttribute(console, 82);
  1721.             else if(boja == TAMNO)
  1722.                 SetConsoleTextAttribute(console, 101);
  1723.             else if(boja == SIVO)
  1724.                 SetConsoleTextAttribute(console, 152);
  1725.  
  1726.             tabla.krajigre = 1;
  1727.             gotoxy(8, 14);
  1728.             wprintf(L"Beli je napravio pat");
  1729.         }
  1730.         else if (brPoteza % 2 == 0 && !JelMozeIgratiBeli(tabla))
  1731.         {
  1732.             if(boja == SVETLO)
  1733.                 SetConsoleTextAttribute(console, 82);
  1734.             else if(boja == TAMNO)
  1735.                 SetConsoleTextAttribute(console, 101);
  1736.             else if(boja == SIVO)
  1737.                 SetConsoleTextAttribute(console, 152);
  1738.  
  1739.             tabla.krajigre = 1;
  1740.             gotoxy(8, 14);
  1741.             wprintf(L"Crni je napravio pat");
  1742.         }
  1743.  
  1744.         sacekaj = ISKLJUCENO;
  1745.         SetConsoleTextAttribute(console, 82);
  1746.  
  1747.         UcitajKlik(x, y);
  1748.  
  1749.         if(y == 0 && (x == 4 || x == 5))
  1750.         {
  1751.             NapraviTablu(tabla);
  1752.             istorija.clear();
  1753.             istorija.push_back(tabla);
  1754.             brPoteza = 0;
  1755.             NoviPotez(tabla);
  1756.             ObrisiTerminal();
  1757.  
  1758.             OsveziTablu(tabla);
  1759.         }
  1760.         else if(y == 0 && (x == 0 || x == 1))
  1761.         {
  1762.             SacuvajIgru(istorija);
  1763.         }
  1764.         else if(y == 0 && (x == 2 || x == 3))
  1765.         {
  1766.             UcitajIgru(istorija);
  1767.             tabla = istorija[brPoteza];
  1768.             OsveziTablu(tabla);
  1769.         }
  1770.         else if(y == 0 && (x == 6 || x == 7))
  1771.         {
  1772.             boja++;
  1773.  
  1774.             if(boja == 3)
  1775.                 boja = 0;
  1776.  
  1777.             OdstampajKonzolu();
  1778.             NoviPotez(tabla);
  1779.  
  1780.             OsveziTablu(tabla);
  1781.         }
  1782.         else if(y == 0 && (x == 8 || x == 9))
  1783.         {
  1784.             PodesiVelicinu(i);
  1785.  
  1786.             if(i == 35)
  1787.                 i = 20;
  1788.             else if(i == 20)
  1789.                 i = 29;
  1790.             else if(i == 29)
  1791.                 i = 35;
  1792.  
  1793.             CentrirajKonzolu();
  1794.             CentrirajKonzolu();
  1795.             system("MODE 36, 18");
  1796.             PodesiKonzolu2();
  1797.             OdstampajKonzolu();
  1798.  
  1799.             OsveziTablu(tabla);
  1800.         }
  1801.         else if(y == 0 && (x == 10 || x == 11) && brPoteza > 0)
  1802.         {
  1803.             tabla = istorija[brPoteza - 1];
  1804.             brPoteza--;
  1805.             istorija.erase(istorija.begin() + brPoteza + 1);
  1806.             ObrisiTerminal();
  1807.  
  1808.             OsveziTablu(tabla);
  1809.         }
  1810.         else if(y == 0 && (x == 30 || x == 31))
  1811.         {
  1812.             if(rotacija == UKLJUCENO)
  1813.             {
  1814.                 rotacija = ISKLJUCENO;
  1815.  
  1816.                 if(boja == SVETLO)
  1817.                     SetConsoleTextAttribute(console, 36);
  1818.                 else if(boja == TAMNO)
  1819.                     SetConsoleTextAttribute(console, 87);
  1820.                 else if(boja == SIVO)
  1821.                     SetConsoleTextAttribute(console, 138);
  1822.  
  1823.                 gotoxy(30, 0);
  1824.                 wprintf(L"");
  1825.             }
  1826.             else
  1827.             {
  1828.                 rotacija = UKLJUCENO;
  1829.  
  1830.                 if(boja == SVETLO)
  1831.                     SetConsoleTextAttribute(console, 36);
  1832.                 else if(boja == TAMNO)
  1833.                     SetConsoleTextAttribute(console, 87);
  1834.                 else if(boja == SIVO)
  1835.                     SetConsoleTextAttribute(console, 138);
  1836.  
  1837.                 gotoxy(30, 0);
  1838.                 wprintf(L"");
  1839.             }
  1840.  
  1841.             NoviPotez(tabla);
  1842.  
  1843.             OsveziTablu(tabla);
  1844.         }
  1845.         else if(y == 0 && (x == 35 || x == 34))
  1846.         {
  1847.             ObrisiKonzoluPodesavanja();
  1848.             istorija.clear();
  1849.  
  1850.             return 0;
  1851.         }
  1852.         else if(y > 2 && y < 11 && x > 9 && x < 26 && tabla.krajigre == 0)
  1853.         {
  1854.             if(brPoteza % 2 && rotacija == UKLJUCENO && JelMozeIgratiCrni(tabla))
  1855.                 ObrnutaPozicijaNaTabli(x, y);
  1856.             else
  1857.                 PozicijaNaTabli(x, y);
  1858.  
  1859.             if(tabla.polje[y][x].stanjePolja == NAPADNUTO && wcscmp(tabla.polje[y][x].figura, KRALJ))
  1860.             {
  1861.                 PozicijaIzabranog(xizb, yizb, tabla);
  1862.  
  1863.                 if(tabla.polje[yizb][xizb].bojaFigure == BELO && tabla.brlevo < 8)
  1864.                 {
  1865.                     if(tabla.polje[y + 1][x].anpasan == UKLJUCENO)
  1866.                     {
  1867.                         wcscpy(tabla.levo[tabla.brlevo / 2][tabla.brlevo % 2].figura, PIJUN);
  1868.                         wcscpy(tabla.polje[y + 1][x].figura, PRAZNO);
  1869.                     }
  1870.                     else
  1871.                         wcscpy(tabla.levo[tabla.brlevo / 2][tabla.brlevo % 2].figura, tabla.polje[y][x].figura);
  1872.  
  1873.                     tabla.brlevo++;
  1874.                 }
  1875.                 else if(tabla.brdesno < 8)
  1876.                 {
  1877.                     if(tabla.polje[y - 1][x].anpasan == UKLJUCENO)
  1878.                     {
  1879.                         wcscpy(tabla.desno[tabla.brdesno / 2][tabla.brdesno % 2].figura, PIJUN);
  1880.                         wcscpy(tabla.polje[y - 1][x].figura, PRAZNO);
  1881.                     }
  1882.                     else
  1883.                         wcscpy(tabla.desno[tabla.brdesno / 2][tabla.brdesno % 2].figura, tabla.polje[y][x].figura);
  1884.  
  1885.                     tabla.brdesno++;
  1886.                 }
  1887.  
  1888.                 if((xizb == 7 && yizb == 7) || (x == 7 && y == 7))
  1889.                     tabla.malarbeli = ISKLJUCENO;
  1890.                 else if((xizb == 0 && yizb == 7) || (x == 0 && y == 7))
  1891.                     tabla.velikarbeli = ISKLJUCENO;
  1892.                 else if((xizb == 0 && yizb == 0) || (x == 0 && y == 0))
  1893.                     tabla.velikarcrni = ISKLJUCENO;
  1894.                 else if((xizb == 7 && yizb == 0) || (x == 7 && y == 0))
  1895.                     tabla.malarcrni = ISKLJUCENO;
  1896.                 else if(xizb == 4 && yizb == 7)
  1897.                 {
  1898.                     tabla.malarbeli = ISKLJUCENO;
  1899.                     tabla.velikarbeli = ISKLJUCENO;
  1900.                 }
  1901.                 else if(xizb == 4 && yizb == 0)
  1902.                 {
  1903.                     tabla.malarcrni = ISKLJUCENO;
  1904.                     tabla.velikarcrni = ISKLJUCENO;
  1905.                 }
  1906.  
  1907.                 wcscpy(tabla.polje[y][x].figura, tabla.polje[yizb][xizb].figura);
  1908.                 wcscpy(tabla.polje[yizb][xizb].figura, PRAZNO);
  1909.                 tabla.polje[y][x].bojaFigure = tabla.polje[yizb][xizb].bojaFigure;
  1910.                 NoviPotez(tabla);
  1911.                 ObrisiAnpasan(tabla);
  1912.  
  1913.                 if(!wcscmp(tabla.polje[y][x].figura, PIJUN) && ((tabla.polje[y][x].bojaFigure == BELO && y == 0) || (tabla.polje[y][x].bojaFigure == CRNO && y == 7)))
  1914.                 {
  1915.                     OdstampajTablu(tabla);
  1916.                     short zamena = ZameniPijuna();
  1917.  
  1918.                     switch(zamena)
  1919.                     {
  1920.                     case 0:
  1921.                         wcscpy(tabla.polje[y][x].figura, KRALJICA);
  1922.                         break;
  1923.  
  1924.                     case 1:
  1925.                         wcscpy(tabla.polje[y][x].figura, TOP);
  1926.                         break;
  1927.  
  1928.                     case 2:
  1929.                         wcscpy(tabla.polje[y][x].figura, LOVAC);
  1930.                         break;
  1931.  
  1932.                     case 3:
  1933.                         wcscpy(tabla.polje[y][x].figura, KONJ);
  1934.                     }
  1935.                 }
  1936.  
  1937.                 if(JelSahBeli(tabla, 0, 0))
  1938.                     for(int i = 0; i < 64; i++)
  1939.                         if(!wcscmp(tabla.polje[i / 8][i % 8].figura, KRALJ) && tabla.polje[i / 8][i % 8].bojaFigure == BELO)
  1940.                             tabla.polje[i / 8][i % 8].stanjePolja = NAPADNUTO;
  1941.  
  1942.                 if(JelSahCrni(tabla, 0, 0))
  1943.                     for(int i = 0; i < 64; i++)
  1944.                         if(!wcscmp(tabla.polje[i / 8][i % 8].figura, KRALJ) && tabla.polje[i / 8][i % 8].bojaFigure == CRNO)
  1945.                             tabla.polje[i / 8][i % 8].stanjePolja = NAPADNUTO;
  1946.  
  1947.                 Sleep(260);
  1948.  
  1949.                 OsveziTablu(tabla);
  1950.  
  1951.                 NoviPotez(tabla);
  1952.  
  1953.                 if(JelSahBeli(tabla, 0, 0))
  1954.                     for(int i = 0; i < 64; i++)
  1955.                         if(!wcscmp(tabla.polje[i / 8][i % 8].figura, KRALJ) && tabla.polje[i / 8][i % 8].bojaFigure == BELO)
  1956.                         {
  1957.                             tabla.polje[i / 8][i % 8].stanjePolja = NAPADNUTO;
  1958.                             OsveziTablu(tabla);
  1959.                             break;
  1960.                         }
  1961.  
  1962.                 if(JelSahCrni(tabla, 0, 0))
  1963.                     for(int i = 0; i < 64; i++)
  1964.                         if(!wcscmp(tabla.polje[i / 8][i % 8].figura, KRALJ) && tabla.polje[i / 8][i % 8].bojaFigure == CRNO)
  1965.                         {
  1966.                             tabla.polje[i / 8][i % 8].stanjePolja = NAPADNUTO;
  1967.                             OsveziTablu(tabla);
  1968.                             break;
  1969.                         }
  1970.  
  1971.                 istorija.push_back(tabla);
  1972.                 brPoteza++;
  1973.                 sacekaj = UKLJUCENO;
  1974.  
  1975.             }
  1976.             else if(!wcscmp(tabla.polje[y][x].figura, KRALJ))
  1977.             {
  1978.                 if((tabla.polje[y][x].bojaFigure == BELO && brPoteza % 2 == 0) || (tabla.polje[y][x].bojaFigure == CRNO && brPoteza % 2 == 1))
  1979.                 {
  1980.                     NoviPotez(tabla);
  1981.  
  1982.                     PostaviKralja(tabla, x, y);
  1983.                 }
  1984.                 else
  1985.                     NoviPotez(tabla);
  1986.             }
  1987.             else if(!wcscmp(tabla.polje[y][x].figura, PIJUN))
  1988.             {
  1989.                 if((tabla.polje[y][x].bojaFigure == BELO && brPoteza % 2 == 0) || (tabla.polje[y][x].bojaFigure == CRNO && brPoteza % 2 == 1))
  1990.                 {
  1991.                     NoviPotez(tabla);
  1992.                     PostaviPijuna(tabla, x, y);
  1993.                 }
  1994.                 else
  1995.                     NoviPotez(tabla);
  1996.             }
  1997.             else if(!wcscmp(tabla.polje[y][x].figura, KONJ))
  1998.             {
  1999.                 if((tabla.polje[y][x].bojaFigure == BELO && brPoteza % 2 == 0) || (tabla.polje[y][x].bojaFigure == CRNO && brPoteza % 2 == 1))
  2000.                 {
  2001.                     NoviPotez(tabla);
  2002.                     PostaviKonja(tabla, x, y);
  2003.                 }
  2004.                 else
  2005.                     NoviPotez(tabla);
  2006.             }
  2007.             else if(!wcscmp(tabla.polje[y][x].figura, TOP))
  2008.             {
  2009.                 if((tabla.polje[y][x].bojaFigure == BELO && brPoteza % 2 == 0) || (tabla.polje[y][x].bojaFigure == CRNO && brPoteza % 2 == 1))
  2010.                 {
  2011.                     NoviPotez(tabla);
  2012.                     PostaviTopa(tabla, x, y);
  2013.                 }
  2014.                 else
  2015.                     NoviPotez(tabla);
  2016.             }
  2017.             else if(!wcscmp(tabla.polje[y][x].figura, LOVAC))
  2018.             {
  2019.                 if((tabla.polje[y][x].bojaFigure == BELO && brPoteza % 2 == 0) || (tabla.polje[y][x].bojaFigure == CRNO && brPoteza % 2 == 1))
  2020.                 {
  2021.                     NoviPotez(tabla);
  2022.                     PostaviLovca(tabla, x, y);
  2023.                 }
  2024.                 else
  2025.                     NoviPotez(tabla);
  2026.             }
  2027.             else if(!wcscmp(tabla.polje[y][x].figura, KRALJICA))
  2028.             {
  2029.                 if((tabla.polje[y][x].bojaFigure == BELO && brPoteza % 2 == 0) || (tabla.polje[y][x].bojaFigure == CRNO && brPoteza % 2 == 1))
  2030.                 {
  2031.                     NoviPotez(tabla);
  2032.                     PostaviKraljicu(tabla, x, y);
  2033.                 }
  2034.                 else
  2035.                     NoviPotez(tabla);
  2036.             }
  2037.             else if(!wcscmp(tabla.polje[y][x].figura, PRAZNO))
  2038.                 NoviPotez(tabla);
  2039.             else if(!wcscmp(tabla.polje[y][x].figura, TACKA))
  2040.             {
  2041.                 PozicijaIzabranog(xizb, yizb, tabla);
  2042.                 wcscpy(tabla.polje[y][x].figura, tabla.polje[yizb][xizb].figura);
  2043.                 wcscpy(tabla.polje[yizb][xizb].figura, PRAZNO);
  2044.                 tabla.polje[y][x].bojaFigure = tabla.polje[yizb][xizb].bojaFigure;
  2045.  
  2046.                 ObrisiAnpasan(tabla);
  2047.  
  2048.                 if(tabla.malarbeli == UKLJUCENO && xizb == 4 && yizb == 7 && x == 6 && y == 7)
  2049.                 {
  2050.                     wcscpy(tabla.polje[7][7].figura, PRAZNO);
  2051.                     wcscpy(tabla.polje[7][5].figura, TOP);
  2052.                     tabla.polje[7][5].bojaFigure = BELO;
  2053.                 }
  2054.  
  2055.                 if(tabla.velikarbeli == UKLJUCENO && xizb == 4 && yizb == 7 && x == 1 && y == 7)
  2056.                 {
  2057.                     wcscpy(tabla.polje[7][0].figura, PRAZNO);
  2058.                     wcscpy(tabla.polje[7][2].figura, TOP);
  2059.                     tabla.polje[7][2].bojaFigure = BELO;
  2060.                 }
  2061.  
  2062.                 if(tabla.malarcrni == UKLJUCENO && xizb == 4 && yizb == 0 && x == 6 && y == 0)
  2063.                 {
  2064.                     wcscpy(tabla.polje[0][7].figura, PRAZNO);
  2065.                     wcscpy(tabla.polje[0][5].figura, TOP);
  2066.                     tabla.polje[0][5].bojaFigure = CRNO;
  2067.                 }
  2068.  
  2069.                 if(tabla.velikarcrni == UKLJUCENO && xizb == 4 && yizb == 0 && x == 1 && y == 0)
  2070.                 {
  2071.                     wcscpy(tabla.polje[0][0].figura, PRAZNO);
  2072.                     wcscpy(tabla.polje[0][2].figura, TOP);
  2073.                     tabla.polje[0][2].bojaFigure = CRNO;
  2074.                 }
  2075.  
  2076.                 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)))
  2077.                     tabla.polje[y][x].anpasan = UKLJUCENO;
  2078.  
  2079.                 if(xizb == 7 && yizb == 7)
  2080.                     tabla.malarbeli = ISKLJUCENO;
  2081.                 else if(xizb == 0 && yizb == 7)
  2082.                     tabla.velikarbeli = ISKLJUCENO;
  2083.                 else if(xizb == 0 && yizb == 0)
  2084.                     tabla.velikarcrni = ISKLJUCENO;
  2085.                 else if(xizb == 7 && yizb == 0)
  2086.                     tabla.malarcrni = ISKLJUCENO;
  2087.                 else if(xizb == 4 && yizb == 7)
  2088.                 {
  2089.                     tabla.malarbeli = ISKLJUCENO;
  2090.                     tabla.velikarbeli = ISKLJUCENO;
  2091.                 }
  2092.                 else if(xizb == 4 && yizb == 0)
  2093.                 {
  2094.                     tabla.malarcrni = ISKLJUCENO;
  2095.                     tabla.velikarcrni = ISKLJUCENO;
  2096.                 }
  2097.  
  2098.                 NoviPotez(tabla);
  2099.  
  2100.                 if(JelSahBeli(tabla, 0, 0))
  2101.                     for(int i = 0; i < 64; i++)
  2102.                         if(!wcscmp(tabla.polje[i / 8][i % 8].figura, KRALJ) && tabla.polje[i / 8][i % 8].bojaFigure == BELO)
  2103.                         {
  2104.                             tabla.polje[i / 8][i % 8].stanjePolja = NAPADNUTO;
  2105.                             OsveziTablu(tabla);
  2106.                             break;
  2107.                         }
  2108.  
  2109.                 if(JelSahCrni(tabla, 0, 0))
  2110.                     for(int i = 0; i < 64; i++)
  2111.                         if(!wcscmp(tabla.polje[i / 8][i % 8].figura, KRALJ) && tabla.polje[i / 8][i % 8].bojaFigure == CRNO)
  2112.                         {
  2113.                             tabla.polje[i / 8][i % 8].stanjePolja = NAPADNUTO;
  2114.                             OsveziTablu(tabla);
  2115.                             break;
  2116.                         }
  2117.  
  2118.                 istorija.push_back(tabla);
  2119.                 brPoteza++;
  2120.                 sacekaj = UKLJUCENO;
  2121.             }
  2122.  
  2123.             OsveziTablu(tabla);
  2124.         }
  2125.     }
  2126. }
  2127.  
  2128. void NapraviTablu(Tabla &tabla)
  2129. {
  2130.     tabla.brlevo = 0;
  2131.     tabla.brdesno = 0;
  2132.     tabla.krajigre = 0;
  2133.     tabla.malarbeli = UKLJUCENO;
  2134.     tabla.malarcrni = UKLJUCENO;
  2135.     tabla.velikarbeli = UKLJUCENO;
  2136.     tabla.velikarcrni = UKLJUCENO;
  2137.  
  2138.     for(int i = 0; i < 8; i++)
  2139.         for(int j = 0; j < 8; j++)
  2140.         {
  2141.             tabla.polje[i][j].stanjePolja = NEUTRALNO;
  2142.             tabla.polje[i][j].anpasan = ISKLJUCENO;
  2143.  
  2144.             if((i + j) % 2 == 0)
  2145.                 tabla.polje[i][j].bojaPolja = BELO;
  2146.             else
  2147.                 tabla.polje[i][j].bojaPolja = CRNO;
  2148.         }
  2149.  
  2150.     for(int i = 0; i < 2; i++)
  2151.         for(int j = 0; j < 8; j++)
  2152.         {
  2153.             tabla.polje[i][j].bojaFigure = CRNO;
  2154.             tabla.polje[i + 6][j].bojaFigure = BELO;
  2155.         }
  2156.  
  2157.     for(int j = 0; j < 8; j++)
  2158.     {
  2159.         wcscpy(tabla.polje[1][j].figura, PIJUN);
  2160.         wcscpy(tabla.polje[6][j].figura, PIJUN);
  2161.     }
  2162.  
  2163.     wcscpy(tabla.polje[0][0].figura, TOP);
  2164.     wcscpy(tabla.polje[0][7].figura, TOP);
  2165.     wcscpy(tabla.polje[7][0].figura, TOP);
  2166.     wcscpy(tabla.polje[7][7].figura, TOP);
  2167.  
  2168.     wcscpy(tabla.polje[0][1].figura, KONJ);
  2169.     wcscpy(tabla.polje[0][6].figura, KONJ);
  2170.     wcscpy(tabla.polje[7][1].figura, KONJ);
  2171.     wcscpy(tabla.polje[7][6].figura, KONJ);
  2172.  
  2173.     wcscpy(tabla.polje[0][2].figura, LOVAC);
  2174.     wcscpy(tabla.polje[0][5].figura, LOVAC);
  2175.     wcscpy(tabla.polje[7][2].figura, LOVAC);
  2176.     wcscpy(tabla.polje[7][5].figura, LOVAC);
  2177.  
  2178.     wcscpy(tabla.polje[0][3].figura, KRALJICA);
  2179.     wcscpy(tabla.polje[7][3].figura, KRALJICA);
  2180.  
  2181.     wcscpy(tabla.polje[0][4].figura, KRALJ);
  2182.     wcscpy(tabla.polje[7][4].figura, KRALJ);
  2183.  
  2184.     for(int i = 2; i < 6; i++)
  2185.         for(int j = 0; j < 8; j++)
  2186.         {
  2187.             tabla.polje[i][j].bojaFigure = ZELENO;
  2188.             wcscpy(tabla.polje[i][j].figura, PRAZNO);
  2189.         }
  2190.  
  2191.     for(int i = 0; i < 8; i++)
  2192.         for(int j = 0; j < 2; j++)
  2193.         {
  2194.             tabla.levo[i][j].anpasan = ISKLJUCENO;
  2195.             tabla.levo[i][j].bojaFigure = CRNO;
  2196.             tabla.levo[i][j].stanjePolja = NEUTRALNO;
  2197.             tabla.desno[i][j].anpasan = ISKLJUCENO;
  2198.             tabla.desno[i][j].bojaFigure = BELO;
  2199.             tabla.desno[i][j].stanjePolja = NEUTRALNO;
  2200.             wcscpy(tabla.levo[i][j].figura, PRAZNO);
  2201.             wcscpy(tabla.desno[i][j].figura, PRAZNO);
  2202.         }
  2203. }
  2204.  
  2205. void SakriKursor()
  2206. {
  2207.     HANDLE consoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);
  2208.  
  2209.     if(prviput3)
  2210.     {
  2211.         GetConsoleCursorInfo(consoleHandle, &kursor);
  2212.         prviput3 = 0;
  2213.     }
  2214.  
  2215.     CONSOLE_CURSOR_INFO info;
  2216.     info.dwSize = 100;
  2217.     info.bVisible = FALSE;
  2218.     SetConsoleCursorInfo(consoleHandle, &info);
  2219. }
  2220.  
  2221. void ObrisiEkran()
  2222. {
  2223.     HANDLE hStdOut;
  2224.     CONSOLE_SCREEN_BUFFER_INFO csbi;
  2225.     DWORD count;
  2226.     DWORD cellCount;
  2227.     COORD homeCoords = {0, 0};
  2228.  
  2229.     hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
  2230.  
  2231.     if (hStdOut == INVALID_HANDLE_VALUE)
  2232.         return;
  2233.  
  2234.     GetConsoleScreenBufferInfo(hStdOut, &csbi);
  2235.     cellCount = csbi.dwSize.X * csbi.dwSize.Y;
  2236.  
  2237.     FillConsoleOutputCharacter(hStdOut, (TCHAR) ' ', cellCount, homeCoords, &count);
  2238.     FillConsoleOutputAttribute(hStdOut, csbi.wAttributes, cellCount, homeCoords, &count);
  2239.     SetConsoleCursorPosition(hStdOut, homeCoords);
  2240. }
  2241.  
  2242. void gotoxy(int x, int y)
  2243. {
  2244.     COORD koordinate;
  2245.     koordinate.X = x;
  2246.     koordinate.Y = y;
  2247.     SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), koordinate);
  2248. }
  2249.  
  2250. int UcitajKlik(int &x, int &y)
  2251. {
  2252.     DWORD info;
  2253.     INPUT_RECORD input;
  2254.     HANDLE in = GetStdHandle(STD_INPUT_HANDLE);
  2255.     SetConsoleMode(in, ENABLE_PROCESSED_INPUT | ENABLE_MOUSE_INPUT);
  2256.     ReadConsoleInput(in, &input, 1, &info);
  2257.  
  2258.     if(input.Event.MouseEvent.dwButtonState !=  0x0001)
  2259.     {
  2260. GOBACK:
  2261.         ReadConsoleInput(in, &input, 1, &info);
  2262.  
  2263.         if(input.Event.MouseEvent.dwButtonState ==  0x0001)
  2264.         {
  2265. GOBACK2:
  2266.             ReadConsoleInput(in, &input, 1, &info);
  2267.  
  2268.             if(input.Event.MouseEvent.dwButtonState !=  0x0001)
  2269.             {
  2270.                 x = input.Event.MouseEvent.dwMousePosition.X;
  2271.                 y = input.Event.MouseEvent.dwMousePosition.Y;
  2272.             }
  2273.             else
  2274.                 goto GOBACK2;
  2275.         }
  2276.         else
  2277.             goto GOBACK;
  2278.     }
  2279.     else
  2280.         UcitajKlik(x, y);
  2281.  
  2282.     return 0;
  2283. }
  2284.  
  2285. void CentrirajKonzolu()
  2286. {
  2287.     RECT rectClient, rectWindow;
  2288.     HWND hWnd = GetConsoleWindow();
  2289.     GetClientRect(hWnd, &rectClient);
  2290.     GetWindowRect(hWnd, &rectWindow);
  2291.     int posx, posy;
  2292.     posx = GetSystemMetrics(SM_CXSCREEN) / 2 - (rectWindow.right - rectWindow.left) / 2;
  2293.     posy = GetSystemMetrics(SM_CYSCREEN) / 2 - (rectWindow.bottom - rectWindow.top) / 2;
  2294.  
  2295.     SetWindowPos(GetConsoleWindow(), HWND_TOP, posx, posy, 0, 0, SWP_NOSIZE);
  2296. }
  2297.  
  2298. void PodesiKonzolu()
  2299. {
  2300.     HWND consoleWindow = GetConsoleWindow();
  2301.  
  2302.     HMENU hmenu = GetSystemMenu(consoleWindow, FALSE);
  2303. //    EnableMenuItem(hmenu, SC_CLOSE, MF_GRAYED); ////////////////////////////////////////////////////////////////////////////////////////////
  2304.  
  2305.     if(prviput1)
  2306.     {
  2307.         winlog = GetWindowLong(consoleWindow, GWL_STYLE);
  2308.         SetWindowLong(consoleWindow, GWL_STYLE, winlog & ~WS_MAXIMIZEBOX & ~WS_SIZEBOX & ~WS_VSCROLL);
  2309.         prviput1 = 0;
  2310.     }
  2311.     else
  2312.         SetWindowLong(consoleWindow, GWL_STYLE, GetWindowLong(consoleWindow, GWL_STYLE) & ~WS_MAXIMIZEBOX & ~WS_SIZEBOX & ~WS_VSCROLL);
  2313.  
  2314.  
  2315.     SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE),  ENABLE_EXTENDED_FLAGS);
  2316.  
  2317.     _setmode(_fileno(stdout), _O_U8TEXT);
  2318.     SetConsoleTitleW(L"ŠAH");
  2319.     _setmode(_fileno(stdout), _O_TEXT);
  2320.  
  2321.     if(boja == SVETLO)
  2322.         system("color 23");
  2323.     else if(boja == TAMNO)
  2324.         system("color 56");
  2325.     else if(boja == SIVO)
  2326.         system("color 89");
  2327.  
  2328.     _CONSOLE_SCREEN_BUFFER_INFOEX info;
  2329.     info.cbSize = sizeof(info);
  2330.     HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
  2331.     GetConsoleScreenBufferInfoEx(hConsole, &info);
  2332.  
  2333.     if(prviput2)
  2334.     {
  2335.         screenbuffer = info;
  2336.         prviput2 = 0;
  2337.     }
  2338.  
  2339.     info.dwSize = {36, 19};
  2340.     info.ColorTable[0] = RGB(242, 242, 242);
  2341.     info.ColorTable[1] = RGB(10, 10, 10);
  2342.     info.ColorTable[2] = RGB(198, 175, 141);
  2343.     info.ColorTable[3] = RGB(114, 71, 56);
  2344.     info.ColorTable[4] = RGB(50, 31, 26);
  2345.     info.ColorTable[5] = RGB(132, 94, 73);
  2346.     info.ColorTable[6] = RGB(73, 47, 37);
  2347.     info.ColorTable[7] = RGB(22, 11, 4);
  2348.     info.ColorTable[8] = RGB(158, 158, 158);
  2349.     info.ColorTable[9] = RGB(102, 102, 102);
  2350.     info.ColorTable[10] = RGB(43, 43, 43);
  2351.     info.ColorTable[11] = RGB(0, 119, 65);
  2352.     info.ColorTable[12] = RGB(126, 33, 35);
  2353.     info.ColorTable[13] = RGB(10, 10, 130);
  2354.     info.ColorTable[14] = RGB(240, 191, 40);
  2355.     info.ColorTable[15] = RGB(255, 255, 255);
  2356.  
  2357.     SetConsoleScreenBufferInfoEx(hConsole, &info);
  2358.     PodesiVelicinu(29);
  2359.     SakriKursor();
  2360.     system("MODE 36, 18");
  2361. }
  2362.  
  2363. void PodesiKonzolu2()
  2364. {
  2365.     _CONSOLE_SCREEN_BUFFER_INFOEX info;
  2366.     info.cbSize = sizeof(info);
  2367.     HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
  2368.     GetConsoleScreenBufferInfoEx(hConsole, &info);
  2369.     info.dwSize = {36, 17};
  2370.     SetConsoleScreenBufferInfoEx(hConsole, &info);
  2371. }
  2372.  
  2373. void PodesiVelicinu(int i)
  2374. {
  2375.     CONSOLE_FONT_INFOEX cfi;
  2376.     cfi.cbSize = sizeof(cfi);
  2377.     cfi.nFont = 0;
  2378.     cfi.dwFontSize.X = 0;
  2379.     cfi.dwFontSize.Y = i;
  2380.     cfi.FontFamily = TMPF_TRUETYPE;
  2381.     cfi.FontWeight = FW_NORMAL;
  2382.     std::wcscpy(cfi.FaceName, L"MS Gothic");
  2383.     SetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE), FALSE, &cfi);
  2384. }
  2385.  
  2386. void OdstampajTablu(Tabla tabla)
  2387. {
  2388.     HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);
  2389.     _setmode(_fileno(stdout), _O_U8TEXT);
  2390.  
  2391.     for(int i = 0; i < 8; i++)
  2392.         for(int j = 0; j < 8; j++)
  2393.         {
  2394.             if(tabla.polje[i][j].stanjePolja == IZABRANO && tabla.polje[i][j].bojaFigure == CRNO)
  2395.                 SetConsoleTextAttribute(console, 177);
  2396.             else if(tabla.polje[i][j].stanjePolja == IZABRANO && tabla.polje[i][j].bojaFigure == BELO)
  2397.                 SetConsoleTextAttribute(console, 176);
  2398.             else if(tabla.polje[i][j].stanjePolja == NAPADNUTO && (tabla.polje[i][j].bojaFigure == CRNO || tabla.polje[i][j].bojaFigure == ZELENO))
  2399.                 SetConsoleTextAttribute(console, 193);
  2400.             else if(tabla.polje[i][j].stanjePolja == NAPADNUTO && tabla.polje[i][j].bojaFigure == BELO)
  2401.                 SetConsoleTextAttribute(console, 192);
  2402.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == BELO && boja == SVETLO && tabla.polje[i][j].bojaPolja == BELO)
  2403.                 SetConsoleTextAttribute(console, 32);
  2404.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == CRNO && boja == SVETLO && tabla.polje[i][j].bojaPolja == BELO)
  2405.                 SetConsoleTextAttribute(console, 33);
  2406.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == BELO && boja == TAMNO && tabla.polje[i][j].bojaPolja == BELO)
  2407.                 SetConsoleTextAttribute(console, 80);
  2408.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == CRNO && boja == TAMNO && tabla.polje[i][j].bojaPolja == BELO)
  2409.                 SetConsoleTextAttribute(console, 81);
  2410.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == BELO && boja == SIVO && tabla.polje[i][j].bojaPolja == BELO)
  2411.                 SetConsoleTextAttribute(console, 128);
  2412.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == CRNO && boja == SIVO && tabla.polje[i][j].bojaPolja == BELO)
  2413.                 SetConsoleTextAttribute(console, 129);
  2414.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == BELO && boja == SVETLO && tabla.polje[i][j].bojaPolja == CRNO)
  2415.                 SetConsoleTextAttribute(console, 48);
  2416.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == CRNO && boja == SVETLO && tabla.polje[i][j].bojaPolja == CRNO)
  2417.                 SetConsoleTextAttribute(console, 49);
  2418.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == BELO && boja == TAMNO && tabla.polje[i][j].bojaPolja == CRNO)
  2419.                 SetConsoleTextAttribute(console, 96);
  2420.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == CRNO && boja == TAMNO && tabla.polje[i][j].bojaPolja == CRNO)
  2421.                 SetConsoleTextAttribute(console, 97);
  2422.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == BELO && boja == SIVO && tabla.polje[i][j].bojaPolja == CRNO)
  2423.                 SetConsoleTextAttribute(console, 144);
  2424.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == CRNO && boja == SIVO && tabla.polje[i][j].bojaPolja == CRNO)
  2425.                 SetConsoleTextAttribute(console, 145);
  2426.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == ZELENO && boja == SVETLO && tabla.polje[i][j].bojaPolja == BELO)
  2427.                 SetConsoleTextAttribute(console, 43);
  2428.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == ZELENO && boja == TAMNO && tabla.polje[i][j].bojaPolja == BELO)
  2429.                 SetConsoleTextAttribute(console, 91);
  2430.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == ZELENO && boja == SIVO && tabla.polje[i][j].bojaPolja == BELO)
  2431.                 SetConsoleTextAttribute(console, 139);
  2432.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == ZELENO && boja == SVETLO && tabla.polje[i][j].bojaPolja == CRNO)
  2433.                 SetConsoleTextAttribute(console, 59);
  2434.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == ZELENO && boja == TAMNO && tabla.polje[i][j].bojaPolja == CRNO)
  2435.                 SetConsoleTextAttribute(console, 107);
  2436.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == ZELENO && boja == SIVO && tabla.polje[i][j].bojaPolja == CRNO)
  2437.                 SetConsoleTextAttribute(console, 155);
  2438.  
  2439.             gotoxy(10 + j * 2, 3 + i);
  2440.             wprintf(tabla.polje[i][j].figura);
  2441.         }
  2442.  
  2443.     OdstampajLevoDesno(tabla);
  2444. }
  2445.  
  2446. void ObrnutoOdstampajTablu(Tabla tabla)
  2447. {
  2448.     HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);
  2449.     _setmode(_fileno(stdout), _O_U8TEXT);
  2450.  
  2451.     for(int i = 0; i < 8; i++)
  2452.         for(int j = 0; j < 8; j++)
  2453.         {
  2454.             if(tabla.polje[i][j].stanjePolja == IZABRANO && tabla.polje[i][j].bojaFigure == CRNO)
  2455.                 SetConsoleTextAttribute(console, 177);
  2456.             else if(tabla.polje[i][j].stanjePolja == IZABRANO && tabla.polje[i][j].bojaFigure == BELO)
  2457.                 SetConsoleTextAttribute(console, 176);
  2458.             else if(tabla.polje[i][j].stanjePolja == NAPADNUTO && tabla.polje[i][j].bojaFigure == CRNO)
  2459.                 SetConsoleTextAttribute(console, 193);
  2460.             else if(tabla.polje[i][j].stanjePolja == NAPADNUTO && tabla.polje[i][j].bojaFigure == BELO)
  2461.                 SetConsoleTextAttribute(console, 192);
  2462.             else if(tabla.polje[i][j].stanjePolja == NAPADNUTO && !wcscmp(tabla.polje[i][j].figura, PRAZNO))
  2463.                 SetConsoleTextAttribute(console, 192);
  2464.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == BELO && boja == SVETLO && tabla.polje[i][j].bojaPolja == BELO)
  2465.                 SetConsoleTextAttribute(console, 32);
  2466.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == CRNO && boja == SVETLO && tabla.polje[i][j].bojaPolja == BELO)
  2467.                 SetConsoleTextAttribute(console, 33);
  2468.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == BELO && boja == TAMNO && tabla.polje[i][j].bojaPolja == BELO)
  2469.                 SetConsoleTextAttribute(console, 80);
  2470.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == CRNO && boja == TAMNO && tabla.polje[i][j].bojaPolja == BELO)
  2471.                 SetConsoleTextAttribute(console, 81);
  2472.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == BELO && boja == SIVO && tabla.polje[i][j].bojaPolja == BELO)
  2473.                 SetConsoleTextAttribute(console, 128);
  2474.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == CRNO && boja == SIVO && tabla.polje[i][j].bojaPolja == BELO)
  2475.                 SetConsoleTextAttribute(console, 129);
  2476.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == BELO && boja == SVETLO && tabla.polje[i][j].bojaPolja == CRNO)
  2477.                 SetConsoleTextAttribute(console, 48);
  2478.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == CRNO && boja == SVETLO && tabla.polje[i][j].bojaPolja == CRNO)
  2479.                 SetConsoleTextAttribute(console, 49);
  2480.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == BELO && boja == TAMNO && tabla.polje[i][j].bojaPolja == CRNO)
  2481.                 SetConsoleTextAttribute(console, 96);
  2482.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == CRNO && boja == TAMNO && tabla.polje[i][j].bojaPolja == CRNO)
  2483.                 SetConsoleTextAttribute(console, 97);
  2484.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == BELO && boja == SIVO && tabla.polje[i][j].bojaPolja == CRNO)
  2485.                 SetConsoleTextAttribute(console, 144);
  2486.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == CRNO && boja == SIVO && tabla.polje[i][j].bojaPolja == CRNO)
  2487.                 SetConsoleTextAttribute(console, 145);
  2488.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == ZELENO && boja == SVETLO && tabla.polje[i][j].bojaPolja == BELO)
  2489.                 SetConsoleTextAttribute(console, 43);
  2490.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == ZELENO && boja == TAMNO && tabla.polje[i][j].bojaPolja == BELO)
  2491.                 SetConsoleTextAttribute(console, 91);
  2492.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == ZELENO && boja == SIVO && tabla.polje[i][j].bojaPolja == BELO)
  2493.                 SetConsoleTextAttribute(console, 139);
  2494.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == ZELENO && boja == SVETLO && tabla.polje[i][j].bojaPolja == CRNO)
  2495.                 SetConsoleTextAttribute(console, 59);
  2496.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == ZELENO && boja == TAMNO && tabla.polje[i][j].bojaPolja == CRNO)
  2497.                 SetConsoleTextAttribute(console, 107);
  2498.             else if(tabla.polje[i][j].stanjePolja == NEUTRALNO && tabla.polje[i][j].bojaFigure == ZELENO && boja == SIVO && tabla.polje[i][j].bojaPolja == CRNO)
  2499.                 SetConsoleTextAttribute(console, 155);
  2500.  
  2501.             gotoxy(24 - j * 2, 10 - i);
  2502.             wprintf(tabla.polje[i][j].figura);
  2503.         }
  2504.  
  2505.     OdstampajLevoDesno(tabla);
  2506. }
  2507.  
  2508. void OdstampajLevoDesno(Tabla tabla)
  2509. {
  2510.     HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);
  2511.     _setmode(_fileno(stdout), _O_U8TEXT);
  2512.  
  2513.     for(int i = 0; i < 8; i++)
  2514.         for(int j = 0; j < 2; j++)
  2515.         {
  2516.             if(boja == SVETLO)
  2517.                 SetConsoleTextAttribute(console, 81);
  2518.             else if(boja == TAMNO)
  2519.                 SetConsoleTextAttribute(console, 97);
  2520.             else if(boja == SIVO)
  2521.                 SetConsoleTextAttribute(console, 145);
  2522.  
  2523.             gotoxy(2 + j * 2, 3 + i);
  2524.             wprintf(tabla.levo[i][j].figura);
  2525.         }
  2526.  
  2527.     for(int i = 0; i < 8; i++)
  2528.         for(int j = 0; j < 2; j++)
  2529.         {
  2530.             if(boja == SVETLO)
  2531.                 SetConsoleTextAttribute(console, 80);
  2532.             else if(boja == TAMNO)
  2533.                 SetConsoleTextAttribute(console, 96);
  2534.             else if(boja == SIVO)
  2535.                 SetConsoleTextAttribute(console, 144);
  2536.  
  2537.             gotoxy(30 + j * 2, 3 + i);
  2538.             wprintf(tabla.desno[i][j].figura);
  2539.         }
  2540.  
  2541.     if(boja == SVETLO)
  2542.         SetConsoleTextAttribute(console, 68);
  2543.     else if(boja == TAMNO)
  2544.         SetConsoleTextAttribute(console, 119);
  2545.     else if(boja == SIVO)
  2546.         SetConsoleTextAttribute(console, 170);
  2547.  
  2548.  
  2549.     gotoxy(26, 3);
  2550.     wprintf(L"██");
  2551.     gotoxy(26, 4);
  2552.     wprintf(L"██");
  2553.     gotoxy(26, 5);
  2554.     wprintf(L"██");
  2555.     gotoxy(26, 6);
  2556.     wprintf(L"██");
  2557.     gotoxy(26, 7);
  2558.     wprintf(L"██");
  2559.     gotoxy(26, 8);
  2560.     wprintf(L"██");
  2561.     gotoxy(26, 9);
  2562.     wprintf(L"██");
  2563.     gotoxy(26, 10);
  2564.     wprintf(L"██");
  2565. }
  2566.  
  2567. void PozicijaNaTabli(int &x, int &y)
  2568. {
  2569.     switch(x)
  2570.     {
  2571.     case 10:
  2572.     case 11:
  2573.         x = 0;
  2574.         break;
  2575.  
  2576.     case 12:
  2577.     case 13:
  2578.         x = 1;
  2579.         break;
  2580.  
  2581.     case 14:
  2582.     case 15:
  2583.         x = 2;
  2584.         break;
  2585.  
  2586.     case 16:
  2587.     case 17:
  2588.         x = 3;
  2589.         break;
  2590.  
  2591.     case 18:
  2592.     case 19:
  2593.         x = 4;
  2594.         break;
  2595.  
  2596.     case 20:
  2597.     case 21:
  2598.         x = 5;
  2599.         break;
  2600.  
  2601.     case 22:
  2602.     case 23:
  2603.         x = 6;
  2604.         break;
  2605.  
  2606.     case 24:
  2607.     case 25:
  2608.         x = 7;
  2609.     }
  2610.  
  2611.     switch(y)
  2612.     {
  2613.     case 10:
  2614.         y = 7;
  2615.         break;
  2616.  
  2617.     case 9:
  2618.         y = 6;
  2619.         break;
  2620.  
  2621.     case 8:
  2622.         y = 5;
  2623.         break;
  2624.  
  2625.     case 7:
  2626.         y = 4;
  2627.         break;
  2628.  
  2629.     case 6:
  2630.         y = 3;
  2631.         break;
  2632.  
  2633.     case 5:
  2634.         y = 2;
  2635.         break;
  2636.  
  2637.     case 4:
  2638.         y = 1;
  2639.         break;
  2640.  
  2641.     case 3:
  2642.         y = 0;
  2643.     }
  2644. }
  2645.  
  2646. void ObrnutaPozicijaNaTabli(int &x, int &y)
  2647. {
  2648.     switch(x)
  2649.     {
  2650.     case 10:
  2651.     case 11:
  2652.         x = 7;
  2653.         break;
  2654.  
  2655.     case 12:
  2656.     case 13:
  2657.         x = 6;
  2658.         break;
  2659.  
  2660.     case 14:
  2661.     case 15:
  2662.         x = 5;
  2663.         break;
  2664.  
  2665.     case 16:
  2666.     case 17:
  2667.         x = 4;
  2668.         break;
  2669.  
  2670.     case 18:
  2671.     case 19:
  2672.         x = 3;
  2673.         break;
  2674.  
  2675.     case 20:
  2676.     case 21:
  2677.         x = 2;
  2678.         break;
  2679.  
  2680.     case 22:
  2681.     case 23:
  2682.         x = 1;
  2683.         break;
  2684.  
  2685.     case 24:
  2686.     case 25:
  2687.         x = 0;
  2688.     }
  2689.  
  2690.     switch(y)
  2691.     {
  2692.     case 10:
  2693.         y = 0;
  2694.         break;
  2695.  
  2696.     case 9:
  2697.         y = 1;
  2698.         break;
  2699.  
  2700.     case 8:
  2701.         y = 2;
  2702.         break;
  2703.  
  2704.     case 7:
  2705.         y = 3;
  2706.         break;
  2707.  
  2708.     case 6:
  2709.         y = 4;
  2710.         break;
  2711.  
  2712.     case 5:
  2713.         y = 5;
  2714.         break;
  2715.  
  2716.     case 4:
  2717.         y = 6;
  2718.         break;
  2719.  
  2720.     case 3:
  2721.         y = 7;
  2722.     }
  2723. }
  2724.  
  2725. void NoviPotez(Tabla &tabla)
  2726. {
  2727.     for(int a = 0; a < 8; a++)
  2728.         for(int b = 0; b < 8; b++)
  2729.         {
  2730.             if(tabla.polje[a][b].stanjePolja == IZABRANO)
  2731.                 tabla.polje[a][b].stanjePolja = NEUTRALNO;
  2732.  
  2733.             if(tabla.polje[a][b].stanjePolja == NAPADNUTO)
  2734.                 tabla.polje[a][b].stanjePolja = NEUTRALNO;
  2735.  
  2736.             if(!wcscmp(tabla.polje[a][b].figura, TACKA))
  2737.                 wcscpy(tabla.polje[a][b].figura, PRAZNO);
  2738.  
  2739.             if(!wcscmp(tabla.polje[a][b].figura, PRAZNO))
  2740.                 tabla.polje[a][b].bojaFigure = ZELENO;
  2741.         }
  2742. }
  2743.  
  2744. void ObrisiAnpasan(Tabla &tabla)
  2745. {
  2746.     for(int a = 0; a < 8; a++)
  2747.         for(int b = 0; b < 8; b++)
  2748.             if(tabla.polje[a][b].anpasan == UKLJUCENO)
  2749.                 tabla.polje[a][b].anpasan = ISKLJUCENO;
  2750.  
  2751. }
  2752.  
  2753. void PozicijaIzabranog(int &xizb, int &yizb, Tabla tabla)
  2754. {
  2755.     for(int a = 0; a < 8; a++)
  2756.         for(int b = 0; b < 8; b++)
  2757.             if(tabla.polje[a][b].stanjePolja == IZABRANO)
  2758.             {
  2759.                 yizb = a;
  2760.                 xizb = b;
  2761.                 return;
  2762.             }
  2763. }
  2764.  
  2765. short JelUnutarTable(int x, int y)
  2766. {
  2767.     if(x >= 0 && x <= 7 && y >= 0 && y <= 7)
  2768.         return 1;
  2769.     else
  2770.         return 0;
  2771. }
  2772.  
  2773. void OdstampajKonzolu()
  2774. {
  2775.     HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);
  2776.     _setmode(_fileno(stdout), _O_U8TEXT);
  2777.  
  2778.     gotoxy(0, 0);
  2779.  
  2780.     if(boja == SVETLO)
  2781.         SetConsoleTextAttribute(console, 45);
  2782.     else if(boja == TAMNO)
  2783.         SetConsoleTextAttribute(console, 93);
  2784.     else if(boja == SIVO)
  2785.         SetConsoleTextAttribute(console, 141);
  2786.  
  2787.     wprintf(L"");  // save
  2788.  
  2789.     if(boja == SVETLO)
  2790.         SetConsoleTextAttribute(console, 46);
  2791.     else if(boja == TAMNO)
  2792.         SetConsoleTextAttribute(console, 94);
  2793.     else if(boja == SIVO)
  2794.         SetConsoleTextAttribute(console, 142);
  2795.  
  2796.     wprintf(L"");  // open
  2797.  
  2798.     if(boja == SVETLO)
  2799.         SetConsoleTextAttribute(console, 44);
  2800.     else if(boja == TAMNO)
  2801.         SetConsoleTextAttribute(console, 92);
  2802.     else if(boja == SIVO)
  2803.         SetConsoleTextAttribute(console, 140);
  2804.  
  2805.     wprintf(L"");  // restart      
  2806.  
  2807.     if(boja == SVETLO)
  2808.         SetConsoleTextAttribute(console, 36);
  2809.     else if(boja == TAMNO)
  2810.         SetConsoleTextAttribute(console, 87);
  2811.     else if(boja == SIVO)
  2812.         SetConsoleTextAttribute(console, 138);
  2813.  
  2814.     // gear 
  2815.     wprintf(L"");  // color
  2816.     wprintf(L"");  // resize
  2817.     wprintf(L"");  // back
  2818.     wprintf(L"                  "); // space
  2819.  
  2820.     if(rotacija == UKLJUCENO)
  2821.         wprintf(L"");  // rotation 
  2822.     else
  2823.         wprintf(L"");  // rotation 
  2824.  
  2825.     if(boja == SVETLO)
  2826.         SetConsoleTextAttribute(console, 47);
  2827.     else if(boja == TAMNO)
  2828.         SetConsoleTextAttribute(console, 95);
  2829.     else if(boja == SIVO)
  2830.         SetConsoleTextAttribute(console, 143);
  2831.  
  2832.     wprintf(L"");  // info
  2833.  
  2834.     if(boja == SVETLO)
  2835.         SetConsoleTextAttribute(console, 44);
  2836.     else if(boja == TAMNO)
  2837.         SetConsoleTextAttribute(console, 92);
  2838.     else if(boja == SIVO)
  2839.         SetConsoleTextAttribute(console, 140);
  2840.  
  2841.     wprintf(L"\n");  // quit
  2842.  
  2843.     if(boja == SVETLO)
  2844.         SetConsoleTextAttribute(console, 36);
  2845.     else if(boja == TAMNO)
  2846.         SetConsoleTextAttribute(console, 87);
  2847.     else if(boja == SIVO)
  2848.         SetConsoleTextAttribute(console, 138);
  2849.  
  2850.     wprintf(L"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n");
  2851.     wprintf(L"┏━━━━━┓                     ┏━━━━━┓ \n");
  2852.     wprintf(L"┃     ┃                     ┃     ┃ \n");
  2853.     wprintf(L"┃     ┃                     ┃     ┃ \n");
  2854.     wprintf(L"┃     ┃                     ┃     ┃ \n");
  2855.     wprintf(L"┃     ┃                     ┃     ┃ \n");
  2856.     wprintf(L"┃     ┃                     ┃     ┃ \n");
  2857.     wprintf(L"┃     ┃                     ┃     ┃ \n");
  2858.     wprintf(L"┃     ┃                     ┃     ┃ \n");
  2859.     wprintf(L"┃     ┃                     ┃     ┃ \n");
  2860.     wprintf(L"┗━━━━━┛                     ┗━━━━━┛ \n");
  2861.     wprintf(L"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ \n");
  2862.     wprintf(L"┃                                 ┃ \n");
  2863.     wprintf(L"┃                                 ┃ \n");
  2864.     wprintf(L"┃                                 ┃ \n");
  2865.     wprintf(L"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ");
  2866.  
  2867.     ObrisiTerminal();
  2868.  
  2869.     if(boja == SVETLO)
  2870.         SetConsoleTextAttribute(console, 68);
  2871.     else if(boja == TAMNO)
  2872.         SetConsoleTextAttribute(console, 119);
  2873.     else if(boja == SIVO)
  2874.         SetConsoleTextAttribute(console, 170);
  2875.  
  2876.     gotoxy(8, 2);
  2877.     wprintf(L"████████████████████");
  2878.     gotoxy(8, 3);
  2879.     wprintf(L"██");
  2880.     gotoxy(8, 4);
  2881.     wprintf(L"██");
  2882.     gotoxy(8, 5);
  2883.     wprintf(L"██");
  2884.     gotoxy(8, 6);
  2885.     wprintf(L"██");
  2886.     gotoxy(8, 7);
  2887.     wprintf(L"██");
  2888.     gotoxy(8, 8);
  2889.     wprintf(L"██");
  2890.     gotoxy(8, 9);
  2891.     wprintf(L"██");
  2892.     gotoxy(8, 10);
  2893.     wprintf(L"██");
  2894.     gotoxy(26, 3);
  2895.     wprintf(L"██");
  2896.     gotoxy(26, 4);
  2897.     wprintf(L"██");
  2898.     gotoxy(26, 5);
  2899.     wprintf(L"██");
  2900.     gotoxy(26, 6);
  2901.     wprintf(L"██");
  2902.     gotoxy(26, 7);
  2903.     wprintf(L"██");
  2904.     gotoxy(26, 8);
  2905.     wprintf(L"██");
  2906.     gotoxy(26, 9);
  2907.     wprintf(L"██");
  2908.     gotoxy(26, 10);
  2909.     wprintf(L"██");
  2910.     gotoxy(8, 11);
  2911.     wprintf(L"████████████████████");
  2912. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement