diff options
| author | Ray <[email protected]> | 2018-08-14 09:47:15 +0200 |
|---|---|---|
| committer | GitHub <[email protected]> | 2018-08-14 09:47:15 +0200 |
| commit | 477928dd0fc6c1a8e4abff9becfb584759297b1a (patch) | |
| tree | 7bbc62e7e15d3fe5b1ded915f95e078974b9963d | |
| parent | 34493ed2313f3d249ee914ba77423a4882b2cd38 (diff) | |
| parent | ab7acd6e3435b3443c8346ab495f05699a0e9750 (diff) | |
| download | raylib-477928dd0fc6c1a8e4abff9becfb584759297b1a.tar.gz raylib-477928dd0fc6c1a8e4abff9becfb584759297b1a.zip | |
Merge pull request #623 from Joefish/snake-fix
Games: Fixes bugs in Snake
| -rw-r--r-- | games/snake.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/games/snake.c b/games/snake.c index 40d66da8..23d1bd1d 100644 --- a/games/snake.c +++ b/games/snake.c @@ -203,7 +203,7 @@ void UpdateGame(void) if ((snake[0].position.x == snake[i].position.x) && (snake[0].position.y == snake[i].position.y)) gameOver = true; } - // TODO: review logic: fruit.position calculation + // fruit.position calculation if (!fruit.active) { fruit.active = true; @@ -211,17 +211,17 @@ void UpdateGame(void) for (int i = 0; i < counterTail; i++) { - while ((fruit.position.x == snake[i].position.x) && (fruit.position.y == snake[i].position.y)) - { - fruit.position = (Vector2){ GetRandomValue(0, (screenWidth/SQUARE_SIZE) - 1)*SQUARE_SIZE, GetRandomValue(0, (screenHeight/SQUARE_SIZE) - 1)*SQUARE_SIZE }; - i = 0; - } + while ((fruit.position.x == snake[i].position.x) && (fruit.position.y == snake[i].position.y)) + { + fruit.position = (Vector2){ GetRandomValue(0, (screenWidth/SQUARE_SIZE) - 1)*SQUARE_SIZE + offset.x/2, GetRandomValue(0, (screenHeight/SQUARE_SIZE) - 1)*SQUARE_SIZE + offset.y/2 }; + i = 0; + } } } // collision - if (CheckCollisionRecs((Rectangle){(int)snake[0].position.x, (int)snake[0].position.y, (int)snake[0].size.x, (int)snake[0].size.y}, - (Rectangle){(int)fruit.position.x, (int)fruit.position.y, (int)fruit.size.x, (int)fruit.size.y})) + if ((snake[0].position.x < (fruit.position.x + fruit.size.x) && (snake[0].position.x + snake[0].size.x) > fruit.position.x) && + (snake[0].position.y < (fruit.position.y + fruit.size.y) && (snake[0].position.y + snake[0].size.y) > fruit.position.y)) { snake[counterTail].position = snakePosition[counterTail - 1]; counterTail += 1; |
