fixed out of board handling
This commit is contained in:
@@ -73,6 +73,10 @@ void Board::moveSnake(Direction direction) {
|
||||
m_snake->move(direction);
|
||||
const Vector2 newHeadPosition = m_snake->getHeadPosition();
|
||||
|
||||
if (isPositionOutside(newHeadPosition)) {
|
||||
exit(-2);
|
||||
}
|
||||
|
||||
Field bumpedField = getField(newHeadPosition);
|
||||
if (bumpedField == Field::Apple) {
|
||||
putAppleOnRandomPlace();
|
||||
@@ -80,9 +84,6 @@ void Board::moveSnake(Direction direction) {
|
||||
else if (bumpedField == Field::Tail) {
|
||||
exit(-1);
|
||||
}
|
||||
else if (isPositionOutside(newHeadPosition)) {
|
||||
exit(-2);
|
||||
}
|
||||
else {
|
||||
Vector2 lastInTailPosition = m_snake->removeLastFromTail();
|
||||
setField(lastInTailPosition, Field::Empty);
|
||||
@@ -132,6 +133,6 @@ void Board::setField(const Vector2 position, const Field field) const {
|
||||
}
|
||||
|
||||
bool Board::isPositionOutside(Vector2 position) const {
|
||||
return position.y < 0 || position.y >= m_sizeY
|
||||
|| position.x < 0 || position.x >= m_sizeX;
|
||||
return position.y < 0 || static_cast<int>(position.y) >= m_sizeY
|
||||
|| position.x < 0 || static_cast<int>(position.x) >= m_sizeX;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user