mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 08:37:46 +00:00
2048: Make board size and target tile configurable
This adds a "settings" option that allows the user to configure the board size and target tile, and optionally save them to a config file. Closes #3219.
This commit is contained in:
parent
40c16b3ce5
commit
5619ed1dc6
8 changed files with 259 additions and 15 deletions
|
@ -30,7 +30,7 @@
|
|||
|
||||
class Game final {
|
||||
public:
|
||||
Game(size_t);
|
||||
Game(size_t board_size, size_t target_tile = 0);
|
||||
Game(const Game&) = default;
|
||||
|
||||
enum class MoveOutcome {
|
||||
|
@ -51,15 +51,26 @@ public:
|
|||
|
||||
size_t score() const { return m_score; }
|
||||
size_t turns() const { return m_turns; }
|
||||
u32 target_tile() const { return m_target_tile; }
|
||||
u32 largest_tile() const;
|
||||
|
||||
using Board = Vector<Vector<u32>>;
|
||||
|
||||
const Board& board() const { return m_board; }
|
||||
|
||||
static size_t max_power_for_board(size_t size)
|
||||
{
|
||||
if (size >= 6)
|
||||
return 31;
|
||||
|
||||
return size * size + 1;
|
||||
}
|
||||
|
||||
private:
|
||||
void add_random_tile();
|
||||
|
||||
size_t m_grid_size { 0 };
|
||||
u32 m_target_tile { 0 };
|
||||
|
||||
Board m_board;
|
||||
size_t m_score { 0 };
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue