Commit 391cbfe6 authored by Lila NICKLER's avatar Lila NICKLER

Ajout d'une 4eme vague d'enemies + declaration du boss

parent d8727672
...@@ -25,11 +25,12 @@ ...@@ -25,11 +25,12 @@
#define FIRST_WAVE 10 #define FIRST_WAVE 10
#define SECOND_WAVE 20 #define SECOND_WAVE 20
#define THIRD_WAVE 50 #define THIRD_WAVE 50
#define FOURTH_WAVE 100
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
// Types and Structures Definition // Types and Structures Definition
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
typedef enum { FIRST = 0, SECOND, THIRD } EnemyWave; typedef enum { FIRST = 0, SECOND, THIRD, FOURTH } EnemyWave;
typedef struct Player{ typedef struct Player{
Rectangle rec; Rectangle rec;
...@@ -51,6 +52,14 @@ typedef struct Shoot{ ...@@ -51,6 +52,14 @@ typedef struct Shoot{
Color color; Color color;
} Shoot; } Shoot;
typedef struct Boss{
Rectangle rec;
Vector2 speed;
bool active ;
Color color;
} Boss;
//------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------
// Global Variables Declaration // Global Variables Declaration
//------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------
...@@ -66,6 +75,8 @@ static Player player = { 0 }; ...@@ -66,6 +75,8 @@ static Player player = { 0 };
static Enemy enemy[NUM_MAX_ENEMIES] = { 0 }; static Enemy enemy[NUM_MAX_ENEMIES] = { 0 };
static Shoot shoot[NUM_SHOOTS] = { 0 }; static Shoot shoot[NUM_SHOOTS] = { 0 };
static EnemyWave wave = { 0 }; static EnemyWave wave = { 0 };
static Boss boss = { 0 };
static int shootRate = 0; static int shootRate = 0;
static float alpha = 0.0f; static float alpha = 0.0f;
...@@ -159,6 +170,15 @@ void InitGame(void) ...@@ -159,6 +170,15 @@ void InitGame(void)
enemy[i].active = true; enemy[i].active = true;
enemy[i].color = GRAY; enemy[i].color = GRAY;
} }
//Initialize boss
boss.rec.x = 50;
boss. rec.y = 50;
boss.rec.width = 20;
boss.rec.height = 20;
boss.speed.x = 2;
boss.speed.y= 2;
boss.color = GRAY;
// Initialize shoots // Initialize shoots
for (int i = 0; i < NUM_SHOOTS; i++) for (int i = 0; i < NUM_SHOOTS; i++)
...@@ -167,7 +187,7 @@ void InitGame(void) ...@@ -167,7 +187,7 @@ void InitGame(void)
shoot[i].rec.y = player.rec.y + player.rec.height/4; shoot[i].rec.y = player.rec.y + player.rec.height/4;
shoot[i].rec.width = 10; shoot[i].rec.width = 10;
shoot[i].rec.height = 5; shoot[i].rec.height = 5;
shoot[i].speed.x = 7; shoot[i].speed.x = 10;
shoot[i].speed.y = 0; shoot[i].speed.y = 0;
shoot[i].active = false; shoot[i].active = false;
shoot[i].color = MAROON; shoot[i].color = MAROON;
...@@ -248,9 +268,35 @@ void UpdateGame(void) ...@@ -248,9 +268,35 @@ void UpdateGame(void)
if (smooth) alpha -= 0.02f; if (smooth) alpha -= 0.02f;
if (enemiesKill == activeEnemies) victory = true; if (enemiesKill == activeEnemies)
{
enemiesKill = 0;
for (int i = 0; i < activeEnemies; i++)
{
if (!enemy[i].active) enemy[i].active = true;
}
activeEnemies = FOURTH_WAVE;
wave = FOURTH;
smooth = false;
alpha = 0.0f;
}
} break; } break;
case FOURTH:
{
if (!smooth)
{
alpha += 0.02f;
if (alpha >= 1.0f) smooth = true;
}
if (smooth) alpha -= 0.02f;
if (enemiesKill == activeEnemies) victory = true;
}
default: break; default: break;
} }
...@@ -263,7 +309,7 @@ void UpdateGame(void) ...@@ -263,7 +309,7 @@ void UpdateGame(void)
// Player collision with enemy // Player collision with enemy
for (int i = 0; i < activeEnemies; i++) for (int i = 0; i < activeEnemies; i++)
{ {
if (CheckCollisionRecs(player.rec, enemy[i].rec)) gameOver = true; if (CheckCollisionRecs(player.rec, enemy[i].rec)) gameOver = false;
} }
// Enemy behaviour // Enemy behaviour
...@@ -362,6 +408,7 @@ void DrawGame(void) ...@@ -362,6 +408,7 @@ void DrawGame(void)
if (wave == FIRST) DrawText("FIRST WAVE", screenWidth/2 - MeasureText("FIRST WAVE", 40)/2, screenHeight/2 - 40, 40, Fade(BLACK, alpha)); if (wave == FIRST) DrawText("FIRST WAVE", screenWidth/2 - MeasureText("FIRST WAVE", 40)/2, screenHeight/2 - 40, 40, Fade(BLACK, alpha));
else if (wave == SECOND) DrawText("SECOND WAVE", screenWidth/2 - MeasureText("SECOND WAVE", 40)/2, screenHeight/2 - 40, 40, Fade(BLACK, alpha)); else if (wave == SECOND) DrawText("SECOND WAVE", screenWidth/2 - MeasureText("SECOND WAVE", 40)/2, screenHeight/2 - 40, 40, Fade(BLACK, alpha));
else if (wave == THIRD) DrawText("THIRD WAVE", screenWidth/2 - MeasureText("THIRD WAVE", 40)/2, screenHeight/2 - 40, 40, Fade(BLACK, alpha)); else if (wave == THIRD) DrawText("THIRD WAVE", screenWidth/2 - MeasureText("THIRD WAVE", 40)/2, screenHeight/2 - 40, 40, Fade(BLACK, alpha));
else if (wave == FOURTH) DrawText("FOURTH WAVE", screenWidth/2 - MeasureText("FOURTH WAVE", 40)/2, screenHeight/2 - 40, 40, Fade(BLACK, alpha));
for (int i = 0; i < activeEnemies; i++) for (int i = 0; i < activeEnemies; i++)
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment