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