浏览代码

Merge pull request #623 from Joefish/snake-fix

Games: Fixes bugs in Snake
Ray 7 年之前
父节点
当前提交
477928dd0f
共有 1 个文件被更改,包括 8 次插入8 次删除
  1. 8 8
      games/snake.c

+ 8 - 8
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;