Snake: prevent that "ma sich seiba fressn ko".

This commit is contained in:
2023-09-25 22:22:44 +02:00
parent 7a4448c852
commit 9a19260a6c

View File

@@ -58,7 +58,7 @@ void Snake::loopCycle()
*/ */
void Snake::ctrlUp() void Snake::ctrlUp()
{ {
if ((system_get_time() / 1000) > _lastButtonClick + DEBOUNCE_TIME && _gameState == GAME_STATE_RUNNING) if (((system_get_time() / 1000) > (_lastButtonClick + DEBOUNCE_TIME)) && (_gameState == GAME_STATE_RUNNING) && (_userDirection != DIRECTION_UP))
{ {
_logger->log_string("Snake: UP"); _logger->log_string("Snake: UP");
_userDirection = DIRECTION_DOWN; // need to swap direction as field is rotated 180deg _userDirection = DIRECTION_DOWN; // need to swap direction as field is rotated 180deg
@@ -72,7 +72,7 @@ void Snake::ctrlUp()
*/ */
void Snake::ctrlDown() void Snake::ctrlDown()
{ {
if ((system_get_time() / 1000) > _lastButtonClick + DEBOUNCE_TIME && _gameState == GAME_STATE_RUNNING) if (((system_get_time() / 1000) > (_lastButtonClick + DEBOUNCE_TIME)) && (_gameState == GAME_STATE_RUNNING) && (_userDirection != DIRECTION_DOWN))
{ {
_logger->log_string("Snake: DOWN"); _logger->log_string("Snake: DOWN");
_userDirection = DIRECTION_UP; // need to swap direction as field is rotated 180deg _userDirection = DIRECTION_UP; // need to swap direction as field is rotated 180deg
@@ -86,7 +86,7 @@ void Snake::ctrlDown()
*/ */
void Snake::ctrlRight() void Snake::ctrlRight()
{ {
if ((system_get_time() / 1000) > _lastButtonClick + DEBOUNCE_TIME && _gameState == GAME_STATE_RUNNING) if (((system_get_time() / 1000) > (_lastButtonClick + DEBOUNCE_TIME)) && (_gameState == GAME_STATE_RUNNING) && (_userDirection != DIRECTION_RIGHT))
{ {
_logger->log_string("Snake: RIGHT"); _logger->log_string("Snake: RIGHT");
_userDirection = DIRECTION_LEFT; // need to swap direction as field is rotated 180deg _userDirection = DIRECTION_LEFT; // need to swap direction as field is rotated 180deg
@@ -100,7 +100,7 @@ void Snake::ctrlRight()
*/ */
void Snake::ctrlLeft() void Snake::ctrlLeft()
{ {
if ((system_get_time() / 1000) > _lastButtonClick + DEBOUNCE_TIME && _gameState == GAME_STATE_RUNNING) if (((system_get_time() / 1000) > (_lastButtonClick + DEBOUNCE_TIME)) && (_gameState == GAME_STATE_RUNNING) && (_userDirection != DIRECTION_LEFT))
{ {
_logger->log_string("Snake: LEFT"); _logger->log_string("Snake: LEFT");
_userDirection = DIRECTION_RIGHT; // need to swap direction as field is rotated 180deg _userDirection = DIRECTION_RIGHT; // need to swap direction as field is rotated 180deg