Skip to content

Commit 4edda07

Browse files
committed
Calculate and show score
1 parent a70d793 commit 4edda07

File tree

3 files changed

+14
-8
lines changed

3 files changed

+14
-8
lines changed

OpenRocket/OpenRocket/Game.cpp

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ Game* Game::getInstance() {
5050

5151
Game::Game(int initial_pos_x, int initial_pos_y) :
5252
nrOfStars(Constants::nrOfStars),
53+
score(0),
5354
width(Constants::maxX),
5455
height(Constants::maxY),
5556
maxX(Constants::maxX),
@@ -205,8 +206,11 @@ void Game::RenderFunction(void) {
205206

206207
float posX = rocket->getPositionX();
207208
float posY = rocket->getPositionY();
209+
glm::mat4 scaleMatrix = glm::scale(glm::mat4(1.0f), glm::vec3(1.0f / maxX, 1.0f / maxY, 1.0f));
210+
glm::mat4 translateMatrix = glm::translate(glm::mat4(1.0f), glm::vec3(-maxX, -maxY, 0.0f));
208211
glm::mat4 rocketTranslateMatrix = glm::translate(glm::mat4(1.0f), glm::vec3(posX, posY, 0.0f));
209-
glm::mat4 matrix = backgroundScaleMatrix * backgroundTranslateMatrix * rocketTranslateMatrix;
212+
213+
glm::mat4 matrix = scaleMatrix * translateMatrix * rocketTranslateMatrix;
210214
rocket->setRocketMatrix(matrix);
211215

212216
myMatrixLocation = glGetUniformLocation(ProgramId, "myMatrix");
@@ -232,8 +236,7 @@ void Game::RenderFunction(void) {
232236
glBindTexture(GL_TEXTURE_2D, Game::textures[asteroid->getTextureIndex()]);
233237
glm::mat4 asteroidMatrix = glm::scale(glm::mat4(1.0f), glm::vec3(asteroid->getRadius(), asteroid->getRadius(), 1.0));
234238
glm::mat4 animateMatrix = glm::translate(glm::mat4(1.0f), glm::vec3(0.0, - asteroid->getTranslatedDistance(), 0.0)); // controleaza translatia de-a lungul lui Oy
235-
glm::mat4 asteroidTranslateMatrix = glm::translate(glm::mat4(1.0f), glm::vec3(asteroid->getX(), asteroid->getY(), 0.0));
236-
asteroidMatrix = backgroundMatrix * animateMatrix * asteroidTranslateMatrix * asteroidMatrix;
239+
asteroidMatrix = backgroundMatrix * animateMatrix * glm::translate(glm::mat4(1.0f), glm::vec3(asteroid->getX(), asteroid->getY(), 0.0)) * asteroidMatrix;
237240
asteroid->setAsteroidMatrix(asteroidMatrix);
238241
glUniformMatrix4fv(myMatrixLocation, 1, GL_FALSE, &asteroidMatrix[0][0]);
239242
glBindVertexArray(asteroidVao);
@@ -242,16 +245,14 @@ void Game::RenderFunction(void) {
242245

243246
glDisable(GL_TEXTURE_2D);
244247
glUseProgram(ProgramId);
245-
246248
myMatrixLocation = glGetUniformLocation(ProgramId, "myMatrix");
247249

248250
Game::UpdateBullets();
249251

250252
for (auto& bullet : bullets) {
251253
glm::mat4 bulletMatrix = glm::scale(glm::mat4(1.0f), glm::vec3(bullet->getRadius(), bullet->getRadius(), 1.0f));
252254
glm::mat4 animateMatrix = glm::translate(glm::mat4(1.0f), glm::vec3(0.0, bullet->getY(), 0.0));
253-
glm::mat4 bulletTranslateMatrix = glm::translate(glm::mat4(1.0f), glm::vec3(bullet->getX(), bullet->getY(), 0.0));
254-
bulletMatrix = backgroundMatrix * animateMatrix * bulletTranslateMatrix * bulletMatrix;
255+
bulletMatrix = backgroundMatrix * animateMatrix * glm::translate(glm::mat4(1.0f), glm::vec3(bullet->getX(), bullet->getY(), 0.0)) * bulletMatrix;
255256

256257
bullet->bulletMatrix = bulletMatrix;
257258
glUniformMatrix4fv(myMatrixLocation, 1, GL_FALSE, &bulletMatrix[0][0]);
@@ -589,8 +590,7 @@ double distance(glm::vec4 p1, glm::vec4 p2) {
589590
}
590591

591592
void Game::BulletAsteroidCollision() {
592-
vector<int> eraseAsteroids;
593-
vector<int> eraseBullets;
593+
594594
for (int i = 0; i < int(bullets.size()); i++) {
595595
for (int j = 0; j < int(asteroids.size()); j++) {
596596
glm::vec4 currentBulletCenter = bullets[i]->bulletMatrix * Bullet::bulletCenter;
@@ -605,6 +605,7 @@ void Game::BulletAsteroidCollision() {
605605
if (distance(currentAsteroidCenter, currentBulletCenter) < currentBulletRadius + currentAsteroidRadius) {
606606
bullets[i]->setToBeDeleted(true);
607607
asteroids[j]->setToBeDeleted(true);
608+
score++;
608609
}
609610
}
610611
}

OpenRocket/OpenRocket/Game.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ class Game {
8080
GLuint TextureProgramId;
8181

8282
int nrOfStars;
83+
int score;
8384

8485
int colorCode;
8586
int initPosX;
@@ -116,6 +117,7 @@ class Game {
116117
int getWidth() const { return width; }
117118
int getInitPosX() const { return initPosX; }
118119
int getInitPosY() const { return initPosY; }
120+
int getScore() const { return score; }
119121

120122
void CreateBackgroundBuffers();
121123
void CreateRocketBuffers();

OpenRocket/OpenRocket/Rocket.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,9 @@ void Rocket::RocketAsteroidsCollision(vector<Asteroid*> asteroids)
234234

235235
if (remainingLives == 0) {
236236
isDead = true;
237+
238+
Game* game = Game::getInstance();
239+
std::cout << "Your score is: " << game->getScore() / 2 << "\n";
237240
}
238241
}
239242

0 commit comments

Comments
 (0)