Advertisement
Cassimus

check_move

Apr 16th, 2025
258
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.79 KB | None | 0 0
  1. bool check_move(int col_from, int row_from, int col_to, int row_to, int board[8][8], bool is_white_move)
  2. {
  3.     // czy ruch miesci sie w planszy
  4.     if (col_from < 0 || col_from > 7 || col_to < 0 || col_to > 7)
  5.         return false;
  6.     else if (row_from < 0 || row_from > 7 || row_to < 0 || row_to > 7)
  7.         return false;
  8.     // czy nie idziemy na biale pole
  9.     else if (board[row_to][col_to] == 0)
  10.         return false;
  11.     // czy na polu skad zaczynamy stoi nasz pion
  12.     else if (board[col_from][row_from] <= 1)
  13.         return false;
  14.     else if (board[col_from][row_from] == 2 && is_white_move)
  15.         return false;
  16.     else if (board[col_from][row_from] == 3 && !is_white_move)
  17.         return false;
  18.     // czy pole na ktore się ruszamy jest puste;
  19.     else if (board[col_to][row_to] != 1)
  20.         return false;
  21.     else if (col_from == col_to || row_from == row_to)
  22.         return false;
  23.  
  24.     // czy o jedno lub 2 pola po skosie
  25.     if (abs(col_from - col_to) == 1 && abs(row_from - col_to) == 1)
  26.         return true;
  27.     else if (abs(col_from - col_to) == 2 && abs(row_from - col_to) == 2)
  28.     {
  29.         if (is_white_move)
  30.         {
  31.             if (col_from - col_to > 0 && row_from - row_to > 0)
  32.             {
  33.                 if (board[row_from - 1][col_from - 1] == 2)
  34.                     return true;
  35.             }
  36.             else if (col_from - col_to < 0 && row_from - row_to > 0)
  37.             {
  38.                 if (board[row_from - 1][col_from + 1] == 2)
  39.                     return true;
  40.             }
  41.             else if (col_from - col_to > 0 && row_from - row_to < 0)
  42.             {
  43.                 if (board[row_from + 1][col_from - 1] == 2)
  44.                     return true;
  45.             }
  46.             else if (col_from - col_to < 0 && row_from - row_to < 0)
  47.             {
  48.                 if (board[row_from + 1][col_from + 1] == 2)
  49.                     return true;
  50.             }
  51.             return false;
  52.         }
  53.         else
  54.         {
  55.             if (col_from - col_to > 0 && row_from - row_to > 0)
  56.             {
  57.                 if (board[row_from - 1][col_from - 1] == 3)
  58.                     return true;
  59.             }
  60.             else if (col_from - col_to < 0 && row_from - row_to > 0)
  61.             {
  62.                 if (board[row_from - 1][col_from + 1] == 3)
  63.                     return true;
  64.             }
  65.             else if (col_from - col_to > 0 && row_from - row_to < 0)
  66.             {
  67.                 if (board[row_from + 1][col_from - 1] == 3)
  68.                     return true;
  69.             }
  70.             else if (col_from - col_to < 0 && row_from - row_to < 0)
  71.             {
  72.                 if (board[row_from + 1][col_from + 1] == 3)
  73.                     return true;
  74.             }
  75.             return false;
  76.         }
  77.         return false;
  78.     }
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement