Momir

ČAH v1.2.4 (VS edition)

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