mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 21:27:34 +00:00
Snake: Show message box on game over
Previously the game would immediately reset on game over, but now it'll pause the game and show a message box with your score.
This commit is contained in:
parent
67300af248
commit
cb9b004ff8
2 changed files with 16 additions and 0 deletions
|
@ -9,6 +9,7 @@
|
||||||
#include "SnakeGame.h"
|
#include "SnakeGame.h"
|
||||||
#include <AK/Random.h>
|
#include <AK/Random.h>
|
||||||
#include <LibConfig/Client.h>
|
#include <LibConfig/Client.h>
|
||||||
|
#include <LibGUI/MessageBox.h>
|
||||||
#include <LibGUI/Painter.h>
|
#include <LibGUI/Painter.h>
|
||||||
#include <LibGfx/Bitmap.h>
|
#include <LibGfx/Bitmap.h>
|
||||||
#include <LibGfx/Font/Font.h>
|
#include <LibGfx/Font/Font.h>
|
||||||
|
@ -34,6 +35,7 @@ void SnakeGame::reset()
|
||||||
m_length = 2;
|
m_length = 2;
|
||||||
m_score = 0;
|
m_score = 0;
|
||||||
m_score_text = "Score: 0";
|
m_score_text = "Score: 0";
|
||||||
|
m_is_new_high_score = false;
|
||||||
m_velocity_queue.clear();
|
m_velocity_queue.clear();
|
||||||
stop_timer();
|
stop_timer();
|
||||||
start_timer(100);
|
start_timer(100);
|
||||||
|
@ -123,6 +125,7 @@ void SnakeGame::timer_event(Core::TimerEvent&)
|
||||||
++m_score;
|
++m_score;
|
||||||
m_score_text = String::formatted("Score: {}", m_score);
|
m_score_text = String::formatted("Score: {}", m_score);
|
||||||
if (m_score > m_high_score) {
|
if (m_score > m_high_score) {
|
||||||
|
m_is_new_high_score = true;
|
||||||
m_high_score = m_score;
|
m_high_score = m_score;
|
||||||
m_high_score_text = String::formatted("Best: {}", m_high_score);
|
m_high_score_text = String::formatted("Best: {}", m_high_score);
|
||||||
update(high_score_rect());
|
update(high_score_rect());
|
||||||
|
@ -214,6 +217,18 @@ void SnakeGame::paint_event(GUI::PaintEvent& event)
|
||||||
|
|
||||||
void SnakeGame::game_over()
|
void SnakeGame::game_over()
|
||||||
{
|
{
|
||||||
|
stop_timer();
|
||||||
|
|
||||||
|
StringBuilder text;
|
||||||
|
text.appendff("Your score was {}", m_score);
|
||||||
|
if (m_is_new_high_score) {
|
||||||
|
text.append("\nThat's a new high score!"sv);
|
||||||
|
}
|
||||||
|
GUI::MessageBox::show(window(),
|
||||||
|
text.to_string(),
|
||||||
|
"Game Over"sv,
|
||||||
|
GUI::MessageBox::Type::Information);
|
||||||
|
|
||||||
reset();
|
reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -68,6 +68,7 @@ private:
|
||||||
String m_score_text;
|
String m_score_text;
|
||||||
unsigned m_high_score { 0 };
|
unsigned m_high_score { 0 };
|
||||||
String m_high_score_text;
|
String m_high_score_text;
|
||||||
|
bool m_is_new_high_score { false };
|
||||||
|
|
||||||
NonnullRefPtrVector<Gfx::Bitmap> m_fruit_bitmaps;
|
NonnullRefPtrVector<Gfx::Bitmap> m_fruit_bitmaps;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue