diff --git a/Bomber.cpp b/Bomber.cpp index 5dcbf5c8f6bcb2e42b6047c7857ed04ab669d842..5ff99b9b4385c0226c967f77fba0f4b001663221 100644 --- a/Bomber.cpp +++ b/Bomber.cpp @@ -120,8 +120,8 @@ const PixelBuffer& Bomber::getSprite() { switch (dir) { - case direction::BACK: - return back[animationstep]; + case direction::FRONT: + return front[animationstep]; break; case direction::LEFT: return left[animationstep]; @@ -131,7 +131,7 @@ const PixelBuffer& Bomber::getSprite() break; default: - return front[animationstep]; + return back[animationstep]; } }; @@ -149,7 +149,7 @@ void Bomber::move(FloatSeconds const & Frametime, [[maybe_unused]] Level &level) /*replace with Pathfinding*/ switch ( this->dir ) { case direction::FRONT: //front - this->topleft.Y -= 10*Frametime.count(); + this->topleft.Y += 10*Frametime.count(); break; case direction::LEFT: //left this->topleft.X -= 10*Frametime.count(); @@ -158,7 +158,7 @@ void Bomber::move(FloatSeconds const & Frametime, [[maybe_unused]] Level &level) this->topleft.X += 10*Frametime.count(); break; default: - this->topleft.Y += 10*Frametime.count(); + this->topleft.Y -= 10*Frametime.count(); break; //exception break; diff --git a/Enemy.cpp b/Enemy.cpp index f3a4b2840018bcea4104dd024b1ad250549138e2..fb3a02610a9d069ee959e2df0de6ca6fa3077a42 100644 --- a/Enemy.cpp +++ b/Enemy.cpp @@ -17,17 +17,17 @@ void Enemy::shoot(Level &level) switch ( this->dir ) { case direction::FRONT: //Up { - level.addEnemyProjectile({this->topleft.X+sprite.w()/2-1,this->topleft.Y-sprite.h()/2,dir}); + level.addEnemyProjectile({this->topleft.X+sprite.w()/2-1,this->topleft.Y+sprite.h()/2,dir}); break; } case direction::LEFT: //left - level.addEnemyProjectile({this->topleft.X,this->topleft.Y+sprite.h()/2-1,dir}); + level.addEnemyProjectile({this->topleft.X,this->topleft.Y+sprite.h()/2,dir}); break; case direction::RIGHT: //right - level.addEnemyProjectile({this->topleft.X,this->topleft.Y+sprite.h()/2-1,dir}); + level.addEnemyProjectile({this->topleft.X+sprite.w(),this->topleft.Y+sprite.h()/2,dir}); break; default: //Down - level.addEnemyProjectile({this->topleft.X+sprite.w()/2-1,this->topleft.Y+(sprite.h()/2),dir}); + level.addEnemyProjectile({this->topleft.X+sprite.w()/2-1,this->topleft.Y,dir}); break; } timetillreload = 5; @@ -148,12 +148,12 @@ bool Enemy::playerdetected(float PlayerX, float PlayerY, Level &level) { if(lookdown(PlayerY, level)) { - dir = direction::BACK; + dir = direction::FRONT; return true; } else if(lookup(PlayerY, level)) { - dir = direction::FRONT; + dir = direction::BACK; return true; } else diff --git a/Scoreb.cpp b/Scoreb.cpp index 6e2088e0561b936b4b0734eddb484652fccb0da4..ceedfee2d9f9eb312b8ab1ee166ede37bb54fc99 100644 --- a/Scoreb.cpp +++ b/Scoreb.cpp @@ -1,21 +1,21 @@ #include "Scoreb.hpp" -Score::Score() +Score::Score(int W,int H) { - GameOverPos.X = 110; - GameOverPos.Y = 110; - ScoreBoard[5].ScorePos.X = 95; - ScoreBoard[5].ScorePos.Y = 140; - ScoreBoard[4].ScorePos.X = 105; - ScoreBoard[4].ScorePos.Y = 140; - ScoreBoard[3].ScorePos.X = 115; - ScoreBoard[3].ScorePos.Y = 140; - ScoreBoard[2].ScorePos.X = 125; - ScoreBoard[2].ScorePos.Y = 140; - ScoreBoard[1].ScorePos.X = 135; - ScoreBoard[1].ScorePos.Y = 140; - ScoreBoard[0].ScorePos.X = 145; - ScoreBoard[0].ScorePos.Y = 140; + GameOverPos.X = W/2-16; + GameOverPos.Y = H/2-9; + ScoreBoard[5].ScorePos.X = W-70; + ScoreBoard[5].ScorePos.Y = 20; + ScoreBoard[4].ScorePos.X = W-60; + ScoreBoard[4].ScorePos.Y = 20; + ScoreBoard[3].ScorePos.X = W-50; + ScoreBoard[3].ScorePos.Y = 20; + ScoreBoard[2].ScorePos.X = W-40; + ScoreBoard[2].ScorePos.Y = 20; + ScoreBoard[1].ScorePos.X = W-30; + ScoreBoard[1].ScorePos.Y = 20; + ScoreBoard[0].ScorePos.X = W-20; + ScoreBoard[0].ScorePos.Y = 20; } ScoreB::ScoreB() { diff --git a/Scoreb.hpp b/Scoreb.hpp index d944613196ac41d3adff3d7677f117edcc9dd092..43a4097b51882a93b7590096989704aa77ac20d5 100644 --- a/Scoreb.hpp +++ b/Scoreb.hpp @@ -19,11 +19,13 @@ private: class Score { public: - Score(); + Score(int screenwidth,int screenheight); Position GameOverPos; const PixelBuffer& getGameOverSprite(); void SetScoreSprite(int Score); ScoreB ScoreBoard[6]; + int screenwidth = 0; + int screenheight = 0; }; diff --git a/main.cpp b/main.cpp index 15bff3458bf9a60cd824cc18654055b101e7d2ba..22ca2f6d1f943f1619d2dc9877e42968b585f136 100644 --- a/main.cpp +++ b/main.cpp @@ -32,6 +32,7 @@ int screenWidth = 320; int screenHeigth = 320; int difficulty = 0; + // global helper funktion to add "buildings" void addBuilding(float x, float y, int size, Level &level_ptr) { @@ -51,7 +52,7 @@ class GameLoop { float GameOverTime = 0.0f; DynamicPixelBuffer framebuffer = {screenWidth, screenHeigth}; - + Score Highscore = {screenWidth,screenHeigth}; public: void run(Platform& platform, FloatSeconds const &frame_time, Level &level, Player &player_) { for(int y = 0; y < framebuffer.h(); ++y) { @@ -110,15 +111,15 @@ public: float bombY; int offset = 20; switch (dir) { - case direction::FRONT: //Up + case direction::BACK: //Up bombX = player_.getTopLeft().X; bombY = static_cast<float>(screenHeigth + offset); break; - case direction::LEFT: //left + case direction::RIGHT: //left bombX = static_cast<float>(screenWidth + offset); bombY = player_.getTopLeft().Y; break; - case direction::RIGHT: //right + case direction::LEFT: //right bombX = static_cast<float>(-offset); bombY = player_.getTopLeft().Y; break; @@ -210,18 +211,25 @@ public: // Output to the console, Gamelogic should happen before this auto const &levelBuffer = level.draw(); + Highscore.SetScoreSprite(level.getScore()); if(GameOverFlag) { DiagonalFadeoutShader dfs = {levelBuffer, (GameOverTime / 2.0f)}; framebuffer.blit_topleft({ 0, 0 }, dfs); - Score Highscore; - Highscore.SetScoreSprite(level.getScore()); framebuffer.blit_topleft(Highscore.GameOverPos,Highscore.getGameOverSprite()); + int c = 0; for(auto & i : Highscore.ScoreBoard){ + + i.ScorePos.X = screenWidth/2+25-c*10; + i.ScorePos.Y = screenHeigth/2+20; + c++; framebuffer.blit_topleft(i.ScorePos,i.getScoreSprite()); } } else { framebuffer.blit_topleft({ 0, 0 }, levelBuffer); + for(auto & i : Highscore.ScoreBoard){ + framebuffer.blit_topleft(i.ScorePos,i.getScoreSprite()); + } } // kruegerzo72182> // <hoffmanncl72341 diff --git a/player.cpp b/player.cpp index ceb32c7cc0ea6a3b985f39e12b23d7e0574f2835..700dbbd316d7d2f91e86440ae114441dd38bc48b 100644 --- a/player.cpp +++ b/player.cpp @@ -199,19 +199,19 @@ void Player::shoot(Level &level) { auto const &sprite = this->getSprite(); switch ( this->dir ) { - case direction::FRONT: //front + case direction::FRONT: //Up { level.addPlayerProjectile({this->topleft.X+sprite.w()/2-1,this->topleft.Y+sprite.h()/2,dir}); break; } case direction::LEFT: //left - level.addPlayerProjectile({this->topleft.X,this->topleft.Y+(sprite.h()/2-1),dir}); + level.addPlayerProjectile({this->topleft.X,this->topleft.Y+sprite.h()/2,dir}); break; case direction::RIGHT: //right - level.addPlayerProjectile({this->topleft.X,this->topleft.Y+(sprite.h()/2-1),dir}); + level.addPlayerProjectile({this->topleft.X+sprite.w(),this->topleft.Y+sprite.h()/2,dir}); break; - default: //back - level.addPlayerProjectile({this->topleft.X+sprite.w()/2-1,this->topleft.Y-(sprite.h()/2),dir}); + default: //Down + level.addPlayerProjectile({this->topleft.X+sprite.w()/2-1,this->topleft.Y,dir}); break; } timetillreload = 1;