1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 16:27:35 +00:00

2048: Generate more "2" tiles

This is how the original game does it.
This commit is contained in:
Sergey Bugaev 2020-08-18 16:30:25 +03:00 committed by Andreas Kling
parent 8dd5b0af4e
commit 7861ebaad7
2 changed files with 8 additions and 8 deletions

View file

@ -25,6 +25,7 @@
*/ */
#include "Game.h" #include "Game.h"
#include <stdlib.h>
Game::Game(size_t rows, size_t columns) Game::Game(size_t rows, size_t columns)
: m_rows(rows) : m_rows(rows)
@ -37,11 +38,11 @@ Game::Game(size_t rows, size_t columns)
row.append(0); row.append(0);
} }
add_tile(2); add_random_tile();
add_tile(2); add_random_tile();
} }
void Game::add_tile(u32 max_tile_value) void Game::add_random_tile()
{ {
int row; int row;
int column; int column;
@ -50,9 +51,8 @@ void Game::add_tile(u32 max_tile_value)
column = rand() % m_columns; column = rand() % m_columns;
} while (m_board[row][column] != 0); } while (m_board[row][column] != 0);
int value = rand() % max_tile_value; size_t value = rand() < RAND_MAX * 0.9 ? 2 : 4;
value = round_up_to_power_of_two(value, max_tile_value); m_board[row][column] = value;
m_board[row][column] = max(2, value);
} }
static Game::Board transpose(const Game::Board& board) static Game::Board transpose(const Game::Board& board)
@ -198,7 +198,7 @@ Game::MoveOutcome Game::attempt_move(Direction direction)
if (moved) { if (moved) {
m_board = new_board; m_board = new_board;
m_turns++; m_turns++;
add_tile(4); add_random_tile();
m_score += successful_merge_score; m_score += successful_merge_score;
} }

View file

@ -57,7 +57,7 @@ public:
const Board& board() const { return m_board; } const Board& board() const { return m_board; }
private: private:
void add_tile(u32 max_tile_value); void add_random_tile();
size_t m_rows { 0 }; size_t m_rows { 0 };
size_t m_columns { 0 }; size_t m_columns { 0 };