Advertisement
Momir

ČAH v0.4.1

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