@@ -50,6 +50,7 @@ Game* Game::getInstance() {
5050
5151Game::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
591592void 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 }
0 commit comments