summaryrefslogtreecommitdiffhomepage
path: root/games/tetris.c
diff options
context:
space:
mode:
authorRay <[email protected]>2019-05-21 17:47:06 +0200
committerRay <[email protected]>2019-05-21 17:47:06 +0200
commit8b4f58b9e9d3deef9e1f1dfebece16a9aca1e62f (patch)
tree049e864ba695cc1a76fb29bf1c2785ce762e00a9 /games/tetris.c
parent0027868d1f4ba76043e1cdfbb5c172696ad0985b (diff)
downloadraylib-8b4f58b9e9d3deef9e1f1dfebece16a9aca1e62f.tar.gz
raylib-8b4f58b9e9d3deef9e1f1dfebece16a9aca1e62f.zip
Review sample games
Diffstat (limited to 'games/tetris.c')
-rw-r--r--games/tetris.c150
1 files changed, 55 insertions, 95 deletions
diff --git a/games/tetris.c b/games/tetris.c
index 3c9d5c5c..2b309184 100644
--- a/games/tetris.c
+++ b/games/tetris.c
@@ -44,8 +44,8 @@ typedef enum GridSquare { EMPTY, MOVING, FULL, BLOCK, FADING } GridSquare;
//------------------------------------------------------------------------------------
// Global Variables Declaration
//------------------------------------------------------------------------------------
-static int screenWidth = 800;
-static int screenHeight = 450;
+static const int screenWidth = 800;
+static const int screenHeight = 450;
static bool gameOver = false;
static bool pause = false;
@@ -99,7 +99,7 @@ static void ResolveFallingMovement();
static bool ResolveLateralMovement();
static bool ResolveTurnMovement();
static void CheckDetection();
-static void CheckCompletition();
+static void CheckCompletion();
static void DeleteCompleteLines();
//------------------------------------------------------------------------------------
@@ -116,7 +116,6 @@ int main(void)
#if defined(PLATFORM_WEB)
emscripten_set_main_loop(UpdateDrawFrame, 0, 1);
#else
-
SetTargetFPS(60);
//--------------------------------------------------------------------------------------
@@ -129,7 +128,6 @@ int main(void)
//----------------------------------------------------------------------------------
}
#endif
-
// De-Initialization
//--------------------------------------------------------------------------------------
UnloadGame(); // Unload loaded data (textures, sounds, models...)
@@ -239,7 +237,7 @@ void UpdateGame(void)
ResolveFallingMovement(&detection, &pieceActive);
// Check if we fullfilled a line and if so, erase the line and pull down the the lines above
- CheckCompletition(&lineToDelete);
+ CheckCompletion(&lineToDelete);
gravityMovementCounter = 0;
}
@@ -387,7 +385,7 @@ void DrawGame(void)
}
DrawText("INCOMING:", offset.x, offset.y - 100, 10, GRAY);
- DrawText(FormatText("LINES: %04i", lines), offset.x, offset.y + 20, 10, GRAY);
+ DrawText(TextFormat("LINES: %04i", lines), offset.x, offset.y + 20, 10, GRAY);
if (pause) DrawText("GAME PAUSED", screenWidth/2 - MeasureText("GAME PAUSED", 40)/2, screenHeight/2 - 40, 40, GRAY);
}
@@ -450,8 +448,7 @@ static bool Createpiece()
static void GetRandompiece()
{
- srand(time(NULL));
- int random = rand() % 7;
+ int random = GetRandomValue(0, 6);
for (int i = 0; i < 4; i++)
{
@@ -461,15 +458,15 @@ static void GetRandompiece()
}
}
- switch(random)
+ switch (random)
{
- case 0: { incomingPiece[1][1] = MOVING; incomingPiece[2][1] = MOVING; incomingPiece[1][2] = MOVING; incomingPiece[2][2] = MOVING; } break; //Cube
- case 1: { incomingPiece[1][0] = MOVING; incomingPiece[1][1] = MOVING; incomingPiece[1][2] = MOVING; incomingPiece[2][2] = MOVING; } break; //L
- case 2: { incomingPiece[1][2] = MOVING; incomingPiece[2][0] = MOVING; incomingPiece[2][1] = MOVING; incomingPiece[2][2] = MOVING; } break; //L inversa
- case 3: { incomingPiece[0][1] = MOVING; incomingPiece[1][1] = MOVING; incomingPiece[2][1] = MOVING; incomingPiece[3][1] = MOVING; } break; //Recta
- case 4: { incomingPiece[1][0] = MOVING; incomingPiece[1][1] = MOVING; incomingPiece[1][2] = MOVING; incomingPiece[2][1] = MOVING; } break; //Creu tallada
- case 5: { incomingPiece[1][1] = MOVING; incomingPiece[2][1] = MOVING; incomingPiece[2][2] = MOVING; incomingPiece[3][2] = MOVING; } break; //S
- case 6: { incomingPiece[1][2] = MOVING; incomingPiece[2][2] = MOVING; incomingPiece[2][1] = MOVING; incomingPiece[3][1] = MOVING; } break; //S inversa
+ case 0: { incomingPiece[1][1] = MOVING; incomingPiece[2][1] = MOVING; incomingPiece[1][2] = MOVING; incomingPiece[2][2] = MOVING; } break; //Cube
+ case 1: { incomingPiece[1][0] = MOVING; incomingPiece[1][1] = MOVING; incomingPiece[1][2] = MOVING; incomingPiece[2][2] = MOVING; } break; //L
+ case 2: { incomingPiece[1][2] = MOVING; incomingPiece[2][0] = MOVING; incomingPiece[2][1] = MOVING; incomingPiece[2][2] = MOVING; } break; //L inversa
+ case 3: { incomingPiece[0][1] = MOVING; incomingPiece[1][1] = MOVING; incomingPiece[2][1] = MOVING; incomingPiece[3][1] = MOVING; } break; //Recta
+ case 4: { incomingPiece[1][0] = MOVING; incomingPiece[1][1] = MOVING; incomingPiece[1][2] = MOVING; incomingPiece[2][1] = MOVING; } break; //Creu tallada
+ case 5: { incomingPiece[1][1] = MOVING; incomingPiece[2][1] = MOVING; incomingPiece[2][2] = MOVING; incomingPiece[3][2] = MOVING; } break; //S
+ case 6: { incomingPiece[1][2] = MOVING; incomingPiece[2][2] = MOVING; incomingPiece[2][1] = MOVING; incomingPiece[3][1] = MOVING; } break; //S inversa
}
}
@@ -491,8 +488,7 @@ static void ResolveFallingMovement(bool *detection, bool *pieceActive)
}
}
}
- // We move down the piece
- else
+ else // We move down the piece
{
for (int j = GRID_VERTICAL_SIZE - 2; j >= 0; j--)
{
@@ -505,6 +501,7 @@ static void ResolveFallingMovement(bool *detection, bool *pieceActive)
}
}
}
+
piecePositionY++;
}
}
@@ -513,8 +510,8 @@ static bool ResolveLateralMovement()
{
bool collision = false;
- // Move left
- if (IsKeyDown(KEY_LEFT))
+ // Piece movement
+ if (IsKeyDown(KEY_LEFT)) // Move left
{
// Check if is possible to move to left
for (int j = GRID_VERTICAL_SIZE - 2; j >= 0; j--)
@@ -528,6 +525,7 @@ static bool ResolveLateralMovement()
}
}
}
+
// If able, move left
if (!collision)
{
@@ -547,9 +545,7 @@ static bool ResolveLateralMovement()
piecePositionX--;
}
}
-
- // Move right
- else if (IsKeyDown(KEY_RIGHT))
+ else if (IsKeyDown(KEY_RIGHT)) // Move right
{
// Check if is possible to move to right
for (int j = GRID_VERTICAL_SIZE - 2; j >= 0; j--)
@@ -567,6 +563,7 @@ static bool ResolveLateralMovement()
}
}
}
+
// If able move right
if (!collision)
{
@@ -595,112 +592,73 @@ static bool ResolveTurnMovement()
// Input for turning the piece
if (IsKeyDown(KEY_UP))
{
- int aux;
+ int aux = 0;
bool checker = false;
// Check all turning possibilities
if ((grid[piecePositionX + 3][piecePositionY] == MOVING) &&
(grid[piecePositionX][piecePositionY] != EMPTY) &&
- (grid[piecePositionX][piecePositionY] != MOVING))
- {
- checker = true;
- }
+ (grid[piecePositionX][piecePositionY] != MOVING)) checker = true;
+
if ((grid[piecePositionX + 3][piecePositionY + 3] == MOVING) &&
(grid[piecePositionX + 3][piecePositionY] != EMPTY) &&
- (grid[piecePositionX + 3][piecePositionY] != MOVING))
- {
- checker = true;
- }
+ (grid[piecePositionX + 3][piecePositionY] != MOVING)) checker = true;
+
if ((grid[piecePositionX][piecePositionY + 3] == MOVING) &&
(grid[piecePositionX + 3][piecePositionY + 3] != EMPTY) &&
- (grid[piecePositionX + 3][piecePositionY + 3] != MOVING))
- {
- checker = true;
- }
+ (grid[piecePositionX + 3][piecePositionY + 3] != MOVING)) checker = true;
+
if ((grid[piecePositionX][piecePositionY] == MOVING) &&
(grid[piecePositionX][piecePositionY + 3] != EMPTY) &&
- (grid[piecePositionX][piecePositionY + 3] != MOVING))
- {
- checker = true;
- }
-
+ (grid[piecePositionX][piecePositionY + 3] != MOVING)) checker = true;
if ((grid[piecePositionX + 1][piecePositionY] == MOVING) &&
(grid[piecePositionX][piecePositionY + 2] != EMPTY) &&
- (grid[piecePositionX][piecePositionY + 2] != MOVING))
- {
- checker = true;
- }
+ (grid[piecePositionX][piecePositionY + 2] != MOVING)) checker = true;
+
if ((grid[piecePositionX + 3][piecePositionY + 1] == MOVING) &&
(grid[piecePositionX + 1][piecePositionY] != EMPTY) &&
- (grid[piecePositionX + 1][piecePositionY] != MOVING))
- {
- checker = true;
- }
+ (grid[piecePositionX + 1][piecePositionY] != MOVING)) checker = true;
+
if ((grid[piecePositionX + 2][piecePositionY + 3] == MOVING) &&
(grid[piecePositionX + 3][piecePositionY + 1] != EMPTY) &&
- (grid[piecePositionX + 3][piecePositionY + 1] != MOVING))
- {
- checker = true;
- }
+ (grid[piecePositionX + 3][piecePositionY + 1] != MOVING)) checker = true;
+
if ((grid[piecePositionX][piecePositionY + 2] == MOVING) &&
(grid[piecePositionX + 2][piecePositionY + 3] != EMPTY) &&
- (grid[piecePositionX + 2][piecePositionY + 3] != MOVING))
- {
- checker = true;
- }
-
+ (grid[piecePositionX + 2][piecePositionY + 3] != MOVING)) checker = true;
if ((grid[piecePositionX + 2][piecePositionY] == MOVING) &&
(grid[piecePositionX][piecePositionY + 1] != EMPTY) &&
- (grid[piecePositionX][piecePositionY + 1] != MOVING))
- {
- checker = true;
- }
+ (grid[piecePositionX][piecePositionY + 1] != MOVING)) checker = true;
+
if ((grid[piecePositionX + 3][piecePositionY + 2] == MOVING) &&
(grid[piecePositionX + 2][piecePositionY] != EMPTY) &&
- (grid[piecePositionX + 2][piecePositionY] != MOVING))
- {
- checker = true;
- }
+ (grid[piecePositionX + 2][piecePositionY] != MOVING)) checker = true;
+
if ((grid[piecePositionX + 1][piecePositionY + 3] == MOVING) &&
(grid[piecePositionX + 3][piecePositionY + 2] != EMPTY) &&
- (grid[piecePositionX + 3][piecePositionY + 2] != MOVING))
- {
- checker = true;
- }
+ (grid[piecePositionX + 3][piecePositionY + 2] != MOVING)) checker = true;
+
if ((grid[piecePositionX][piecePositionY + 1] == MOVING) &&
(grid[piecePositionX + 1][piecePositionY + 3] != EMPTY) &&
- (grid[piecePositionX + 1][piecePositionY + 3] != MOVING))
- {
- checker = true;
- }
+ (grid[piecePositionX + 1][piecePositionY + 3] != MOVING)) checker = true;
if ((grid[piecePositionX + 1][piecePositionY + 1] == MOVING) &&
(grid[piecePositionX + 1][piecePositionY + 2] != EMPTY) &&
- (grid[piecePositionX + 1][piecePositionY + 2] != MOVING))
- {
- checker = true;
- }
-
+ (grid[piecePositionX + 1][piecePositionY + 2] != MOVING)) checker = true;
+
if ((grid[piecePositionX + 2][piecePositionY + 1] == MOVING) &&
(grid[piecePositionX + 1][piecePositionY + 1] != EMPTY) &&
- (grid[piecePositionX + 1][piecePositionY + 1] != MOVING))
- {
- checker = true;
- }
+ (grid[piecePositionX + 1][piecePositionY + 1] != MOVING)) checker = true;
+
if ((grid[piecePositionX + 2][piecePositionY + 2] == MOVING) &&
(grid[piecePositionX + 2][piecePositionY + 1] != EMPTY) &&
- (grid[piecePositionX + 2][piecePositionY + 1] != MOVING))
- {
- checker = true;
- }
+ (grid[piecePositionX + 2][piecePositionY + 1] != MOVING)) checker = true;
+
if ((grid[piecePositionX + 1][piecePositionY + 2] == MOVING) &&
(grid[piecePositionX + 2][piecePositionY + 2] != EMPTY) &&
- (grid[piecePositionX + 2][piecePositionY + 2] != MOVING))
- {
- checker = true;
- }
+ (grid[piecePositionX + 2][piecePositionY + 2] != MOVING)) checker = true;
if (!checker)
{
@@ -750,6 +708,7 @@ static bool ResolveTurnMovement()
}
}
}
+
return true;
}
@@ -767,9 +726,9 @@ static void CheckDetection(bool *detection)
}
}
-static void CheckCompletition(bool *lineToDelete)
+static void CheckCompletion(bool *lineToDelete)
{
- int calculator;
+ int calculator = 0;
for (int j = GRID_VERTICAL_SIZE - 2; j >= 0; j--)
{
@@ -801,7 +760,7 @@ static void CheckCompletition(bool *lineToDelete)
static void DeleteCompleteLines()
{
- // erase the completed line
+ // Erase the completed line
for (int j = GRID_VERTICAL_SIZE - 2; j >= 0; j--)
{
while (grid[1][j] == FADING)
@@ -810,6 +769,7 @@ static void DeleteCompleteLines()
{
grid[i][j] = EMPTY;
}
+
for (int j2 = j-1; j2 >= 0; j2--)
{
for (int i2 = 1; i2 < GRID_HORIZONTAL_SIZE - 1; i2++)