HighScore System Added

This commit is contained in:
Asrın Doğan 2019-09-10 12:45:06 +03:00
parent 54dbf0346d
commit b9db1a4786
2 changed files with 69 additions and 7 deletions

1
.gitignore vendored
View File

@ -3,6 +3,7 @@
*.txt *.txt
*.a *.a
*.dll *.dll
*.syn
!allegro_acodec-5.0.10-md.dll !allegro_acodec-5.0.10-md.dll
!allegro_audio-5.0.10-md.dll !allegro_audio-5.0.10-md.dll
!allegro_image-5.0.10-md.dll !allegro_image-5.0.10-md.dll

View File

@ -4,6 +4,7 @@
Mail: asrindogan99@gmail.com Mail: asrindogan99@gmail.com
*/ */
#include <stdio.h> #include <stdio.h>
#include <stdlib.h>
#include <math.h> #include <math.h>
#include "allegro-5.0.10-mingw-4.7.0\include\allegro5\allegro.h" #include "allegro-5.0.10-mingw-4.7.0\include\allegro5\allegro.h"
#include "allegro-5.0.10-mingw-4.7.0\include\allegro5\allegro_audio.h" #include "allegro-5.0.10-mingw-4.7.0\include\allegro5\allegro_audio.h"
@ -79,6 +80,9 @@ void DrawObject(Vector2D position, ALLEGRO_BITMAP *image, int flag);
void DrawSizedObject(Vector2D position, ALLEGRO_BITMAP *image, int flag, float objectSizeMultiplier); void DrawSizedObject(Vector2D position, ALLEGRO_BITMAP *image, int flag, float objectSizeMultiplier);
void DrawScreen(); void DrawScreen();
void DrawScore(); void DrawScore();
void DrawHighScore();
void CheckHighScore();
void GetHighScore();
void DrawNumber(Vector2D position, int number); void DrawNumber(Vector2D position, int number);
void Inputs(); void Inputs();
void PlayerMovement(); void PlayerMovement();
@ -118,6 +122,7 @@ ALLEGRO_SAMPLE_ID enemyDieSoundID;
ALLEGRO_BITMAP *numberTable; ALLEGRO_BITMAP *numberTable;
const char *displayName = "Syn Game"; const char *displayName = "Syn Game";
const char *savePath = "Save.syn";
const Vector2D referenceScreenDimensions = {160, 90}; const Vector2D referenceScreenDimensions = {160, 90};
Vector2D screenDimensions = {0, 0}; Vector2D screenDimensions = {0, 0};
Vector2D scorePosition = {0, 0}; Vector2D scorePosition = {0, 0};
@ -127,6 +132,7 @@ float timeFromStart;
const float FPS = 60; const float FPS = 60;
double deltaTime; double deltaTime;
unsigned int enemyRespawnCounter = 0; unsigned int enemyRespawnCounter = 0;
unsigned int highScore = 0;
Vector2D input; Vector2D input;
byte isRestart = 0; byte isRestart = 0;
byte isRunning = 1; byte isRunning = 1;
@ -147,10 +153,6 @@ void Update()
printf("Inputs();\n"); printf("Inputs();\n");
Inputs(); Inputs();
if(al_key_down(&keyboardState, ALLEGRO_KEY_F))
player.score += 1000;
// enemies.enemyLimit++;
printf("PlayerMovement();\n"); printf("PlayerMovement();\n");
PlayerMovement(); PlayerMovement();
@ -172,7 +174,7 @@ void Update()
player.shootCooldown -= deltaTime; player.shootCooldown -= deltaTime;
timeFromStart += deltaTime; timeFromStart += deltaTime;
player.score = (int)(timeFromStart * timeFromStart) * player.killedEnemyCount; player.score = (int)(timeFromStart * timeFromStart) * (player.killedEnemyCount + 1);
if(enemies.enemyLimit != enemyLimiter) if(enemies.enemyLimit != enemyLimiter)
{ {
@ -315,7 +317,7 @@ char InitializeGameWindow()
screenDimensions = (Vector2D){x, y}; screenDimensions = (Vector2D){x, y};
scorePosition = (Vector2D){x * (float)0.05, y * (float)0.05}; scorePosition = (Vector2D){x * (float)0.05, y * (float)0.05};
highScorePosition = (Vector2D){x * (float)0.05, y * (float)0.95}; highScorePosition = (Vector2D){x * (float)0.95, y * (float)0.05};
sizeMultiplier = screenDimensions.x / referenceScreenDimensions.x; sizeMultiplier = screenDimensions.x / referenceScreenDimensions.x;
display = al_create_display(screenDimensions.x, screenDimensions.y); display = al_create_display(screenDimensions.x, screenDimensions.y);
@ -356,6 +358,7 @@ char InitializeGame()
enemyDieSound = al_load_sample("Sounds/Die.wav"); enemyDieSound = al_load_sample("Sounds/Die.wav");
InitializeEnemies(); InitializeEnemies();
GetHighScore();
/* Player Initialization */ /* Player Initialization */
player.position.x = screenDimensions.x / 2; player.position.x = screenDimensions.x / 2;
@ -553,6 +556,7 @@ void DrawScreen()
DrawObject(halfScreen, gameOverImage, 0); DrawObject(halfScreen, gameOverImage, 0);
DrawScore(); DrawScore();
DrawHighScore();
} }
void DrawScore() void DrawScore()
@ -575,6 +579,62 @@ void DrawScore()
} }
} }
void DrawHighScore()
{
unsigned int processedScore = highScore;
char digit;
Vector2D spawnPosition;
int i = 0;
/*while (processedScore >= 1 && i > 0)*/
while (i < scoreDigitLimit)
{
spawnPosition = highScorePosition;
/* numberImageSize + 1 is because 1 pixel space between digits */
spawnPosition.x -= sizeMultiplier * (numberImageSize + 1) * i;
digit = processedScore % 10;
processedScore = (int)(processedScore / 10);
DrawNumber(spawnPosition, digit);
i++;
}
}
void CheckHighScore()
{
FILE *saveFile;
printf("Checking Highscore = %d and Score = %d\n", highScore, player.score);
if(player.score < highScore)
return;
saveFile = fopen(savePath, "wb");
if(saveFile == NULL)
{
printf("!!!!Error Saving Highscore!!!!\n");
return;
}
highScore = player.score;
fwrite(&highScore, sizeof(highScore), 1, saveFile);
fclose(saveFile);
}
void GetHighScore()
{
printf("Getting Highscore\n");
FILE *saveFile = fopen(savePath, "rb");
if(saveFile == NULL)
{
printf("!!!!Error Reading Highscore!!!!\n");
highScore = 0;
return;
}
fread(&highScore, sizeof(highScore), 1, saveFile);
fclose(saveFile);
printf("Get Highscore = %d\n", highScore);
}
void Inputs() void Inputs()
{ {
input.x = 0; input.x = 0;
@ -768,6 +828,7 @@ void BulletCollisions()
void DestroyGame() void DestroyGame()
{ {
CheckHighScore();
al_destroy_bitmap(enemyImage); al_destroy_bitmap(enemyImage);
al_destroy_bitmap(enemyBulletImage); al_destroy_bitmap(enemyBulletImage);
al_destroy_bitmap(gameOverImage); al_destroy_bitmap(gameOverImage);