reworked loops and removed unnecessary vars

This commit is contained in:
AdmiralEmser
2022-10-29 12:43:35 +02:00
parent c4b5e69cac
commit e5cb9a23c0
+33 -48
View File
@@ -221,38 +221,33 @@ void FCC::Chess::checkMovesKnight()
void FCC::Chess::checkMovesKing() void FCC::Chess::checkMovesKing()
{ {
// creating variables for x and y
uint8_t i, j;
// checking possible moves // checking possible moves
i = selX - 1, j = selY + 1; // rows above and below
for (; i <= selX + 1; i++) for (int8_t i = selX - 1; i <= selX + 1; i++)
{ {
if (checkIsPosInBounds(i, j)) // row above
if (checkIsPosInBounds(i, selY + 1))
{ {
if (!checkIsFriendlyOnField(i, j)) posPossible[i][j] = true; if (!checkIsFriendlyOnField(i, selY + 1)) posPossible[i][selY + 1] = true;
}
// row below
if (checkIsPosInBounds(i, selY - 1))
{
if (!checkIsFriendlyOnField(i, selY - 1)) posPossible[i][selY - 1] = true;
} }
} }
i = selX - 1, j = selY - 1; // left
for (; i <= selX + 1; i++) if (checkIsPosInBounds(selX - 1, selY))
{ {
if (checkIsPosInBounds(i, j)) if (!checkIsFriendlyOnField(selX - 1, selY)) posPossible[selX - 1][selY] = true;
{
if (!checkIsFriendlyOnField(i, j)) posPossible[i][j] = true;
}
} }
i = selX - 1, j = selY; // right
if (checkIsPosInBounds(i, j)) if (checkIsPosInBounds(selX + 1, selY))
{ {
if (!checkIsFriendlyOnField(i, j)) posPossible[i][j] = true; if (!checkIsFriendlyOnField(selX + 1, selY)) posPossible[selX + 1][selY] = true;
}
i = selX + 1, j = selY;
if (checkIsPosInBounds(i, j))
{
if (!checkIsFriendlyOnField(i, j)) posPossible[i][j] = true;
} }
} }
@@ -261,48 +256,40 @@ void FCC::Chess::checkMovesPawn()
// black pieces // black pieces
if (posColor[selX][selY] == FCC::PiecesColors::BLACK) if (posColor[selX][selY] == FCC::PiecesColors::BLACK)
{ {
// creating variables for x and y
uint8_t i, j;
// checking possible moves // checking possible moves
i = selX - 1, j = selY - 1; // left and right for enemy pieces
for (; i <= selX + 1;) for (uint8_t i = selX - 1; i <= selX + 1; i += 2)
{ {
if (checkIsPosInBounds(i, j)) if (checkIsPosInBounds(i, selY - 1))
{ {
if (checkIsEnemyOnField(i, j)) posPossible[i][j] = true; if (checkIsEnemyOnField(i, selY - 1)) posPossible[i][selY - 1] = true;
} }
i += 2;
} }
i = selX, j = selY - 1; // standard move to the front
if (checkIsPosInBounds(i, j)) if (checkIsPosInBounds(selX, selY - 1))
{ {
if (checkIsPositionClear(i, j)) posPossible[i][j] = true; if (checkIsPositionClear(selX, selY - 1)) posPossible[selX][selY - 1] = true;
} }
} }
// white pieces // white pieces
if (posColor[selX][selY] == FCC::PiecesColors::WHITE) if (posColor[selX][selY] == FCC::PiecesColors::WHITE)
{ {
// creating variables for x and y
uint8_t i, j;
// checking possible moves // checking possible moves
i = selX - 1, j = selY + 1; // left and right for enemy pieces
for (; i <= selX + 1;) for (uint8_t i = selX - 1; i <= selX + 1; i += 2)
{ {
if (checkIsPosInBounds(i, j)) if (checkIsPosInBounds(i, selY + 1))
{ {
if (checkIsEnemyOnField(i, j)) posPossible[i][j] = true; if (checkIsEnemyOnField(i, selY + 1)) posPossible[i][selY + 1] = true;
} }
i += 2;
} }
i = selX, j = selY + 1; // standard move to the front
if (checkIsPosInBounds(i, j)) if (checkIsPosInBounds(selX, selY + 1))
{ {
if (checkIsPositionClear(i, j)) posPossible[i][j] = true; if (checkIsPositionClear(selX, selY + 1)) posPossible[selX][selY + 1] = true;
} }
} }
} }
@@ -313,14 +300,12 @@ bool FCC::Chess::checkIsPawnChangingToQueen()
if (posColor[selX][selY] == FCC::PiecesColors::BLACK) if (posColor[selX][selY] == FCC::PiecesColors::BLACK)
{ {
if (selY == 0) return true; if (selY == 0) return true;
return false; } else {
}
// white pieces // white pieces
if (posColor[selX][selY] == FCC::PiecesColors::WHITE) if (posColor[selX][selY] == FCC::PiecesColors::WHITE)
{ {
if (selY == 7) return true; if (selY == 7) return true;
return false; }
} }
// no piece at all // no piece at all