mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 16:17:36 +00:00
2048: Generate more "2" tiles
This is how the original game does it.
This commit is contained in:
parent
8dd5b0af4e
commit
7861ebaad7
2 changed files with 8 additions and 8 deletions
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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 };
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue