void Move::movingDelay(long duration) { long startTime = millis(); long elapsedTime = 0; while (elapsedTime < duration) { // function in Look module checks for obstacle in direction of movement if (isPathClear()) { if (state != MOV_ROTATE) { // rotate is only valid movement #ifdef MOVE_DEBUG Serial.println(P("Stopping in moving Delay()")); #endif brake(); } } elapsedTime = millis() - startTime; } }
int isMoveValid() { if (dx == 0 && dy == 0) { cout<<endl<<"Null move not permitted."; return 0; } else if (mIsMoveDiagonal == 0 && mIsMoveStraight == 0 && ci != 'N') { cout<<endl<<"Invalid move."; return 0; } else if (isPathClear() == 0 && ci != 'N') { cout<<endl<<"Can't jump over another piece."; return 0; } else if (cf != ' ' && cf < 96) { cout<<endl<<"Can't capture your own piece."; return 0; } switch (ci) { case 'P': if ((turn == 1 ? yf - yi: yi - yf) > 0) { if (dx == 0 && cf == ' ') { if (dy == 1) { return 1; } else if (dy == 2 && turn == 1 ? yi == 1 : yi == 6) { return 1; } } else if (dx == 1 && dy == 1 && cf > 96) { return 1; } } break; case 'N': if (dx == 1 && dy == 2 || dx == 2 && dy == 1) { return 1; } break; case 'B': if (mIsMoveDiagonal == 1) { return 1; } break; case 'R': if (mIsMoveStraight == 1) { return 1; } break; case 'Q': if (mIsMoveDiagonal == 1 || mIsMoveStraight == 1) { return 1; } break; case 'K': if (dx <= 1 && dy <= 1) { return 1; } break; } cout<<endl<<"Invalid move!"; return 0; }