fixed out of board handling

This commit is contained in:
2026-05-10 15:46:21 +02:00
parent c2278ec740
commit ac758f62ad

View File

@@ -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;
} }