From ac758f62ad6df0005921ca144ee89dd7bf4e8f08 Mon Sep 17 00:00:00 2001 From: Andrija Stevanovic Date: Sun, 10 May 2026 15:46:21 +0200 Subject: [PATCH] fixed out of board handling --- src/core/Board.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/core/Board.cpp b/src/core/Board.cpp index 15d353e..39a344f 100644 --- a/src/core/Board.cpp +++ b/src/core/Board.cpp @@ -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(position.y) >= m_sizeY + || position.x < 0 || static_cast(position.x) >= m_sizeX; }