diff --git a/src/py2048/block.py b/src/py2048/block.py index 89195df..25bc339 100644 --- a/src/py2048/block.py +++ b/src/py2048/block.py @@ -3,7 +3,7 @@ from typing import Union import pygame -from .color import Color +from .color import ColorScheme from .config import Config from .utils import Direction, grid_pos @@ -14,9 +14,6 @@ class Block(pygame.sprite.Sprite): ): """Initialize a block""" super().__init__() - self.image = pygame.Surface((Config.BLOCK_SIZE, Config.BLOCK_SIZE)) - self.rect = self.image.get_rect() - self.rect.topleft = x, y self.value: int = ( value @@ -25,15 +22,57 @@ class Block(pygame.sprite.Sprite): if random.random() <= Config.BLOCK_VALUE_PROBABILITY else 4 ) + self.image = self._create_block_surface() + self.rect = self.image.get_rect() + self.rect.topleft = x, y self.font = pygame.font.SysFont(Config.FONT_FAMILY, Config.FONT_SIZE) self.group = group self.update() - def _draw_value(self) -> None: + def _draw_rounded_rect( + self, + surface: pygame.Surface, + color: ColorScheme | tuple[int, int, int, int], + rect: tuple[int, int, int, int], + border_radius: int, + width: int, + ) -> None: + """Draw a rounded rectangle with borders on the given surface.""" + pygame.draw.rect(surface, color, rect, border_radius=border_radius) + pygame.draw.rect( + surface, + (0, 0, 0, 0), + rect, + border_radius=border_radius, + width=width, + ) + + def _create_block_surface(self) -> pygame.Surface: + """Create a surface for the block.""" + block_surface = pygame.Surface( + (Config.BLOCK_SIZE, Config.BLOCK_SIZE), pygame.SRCALPHA + ) + self._draw_rounded_rect( + block_surface, + self._get_color(), + # (255, 255, 255, 0), + (0, 0, Config.BLOCK_SIZE, Config.BLOCK_SIZE), + Config.BLOCK_BORDER_RADIUS, + Config.BLOCK_BORDER_WIDTH, + ) + return block_surface + + def draw(self) -> None: """Draw the value of the block""" - text = self.font.render(str(self.value), True, Color.FG) - text_rect = text.get_rect(center=self.image.get_rect().center) - self.image.blit(text, text_rect) + text = self.font.render(str(self.value), True, Config.COLORSCHEME.DARK_TEXT) + block_surface = self._create_block_surface() + + block_center: tuple[int, int] = (Config.BLOCK_SIZE // 2, Config.BLOCK_SIZE // 2) + + text_rect: pygame.Rect = text.get_rect(center=self.image.get_rect().center) + block_surface.blit(text, text_rect) + + self.image.blit(block_surface, (0, 0)) def move(self, direction: Direction) -> None: """Move the block by `dx` and `dy`.""" @@ -99,8 +138,7 @@ class Block(pygame.sprite.Sprite): def update(self) -> None: """Update the block""" - self._change_color() - self._draw_value() + self.draw() def can_move(self) -> bool: """Check if the block can move""" @@ -114,22 +152,22 @@ class Block(pygame.sprite.Sprite): return True return False - def _change_color(self) -> None: + def _get_color(self) -> ColorScheme: """Change the color of the block based on its value""" color_map = { - 2: Color.BLUE, - 4: Color.BLUE0, - 8: Color.BLUE1, - 16: Color.BLUE2, - 32: Color.DARK3, - 64: Color.BORDER_HIGHLIGHT, - 128: Color.BLUE5, - 256: Color.BLUE6, - 512: Color.BLUE7, - 1024: Color.ORANGE, - 2048: Color.RED, + 2: Config.COLORSCHEME.BLOCK_2, + 4: Config.COLORSCHEME.BLOCK_4, + 8: Config.COLORSCHEME.BLOCK_8, + 16: Config.COLORSCHEME.BLOCK_16, + 32: Config.COLORSCHEME.BLOCK_32, + 64: Config.COLORSCHEME.BLOCK_64, + 128: Config.COLORSCHEME.BLOCK_128, + 256: Config.COLORSCHEME.BLOCK_256, + 512: Config.COLORSCHEME.BLOCK_512, + 1024: Config.COLORSCHEME.BLOCK_1024, + 2048: Config.COLORSCHEME.BLOCK_2048, } - self.image.fill(color_map.get(self.value, Color.ERROR)) + return color_map.get(self.value, Config.COLORSCHEME.BLOCK_ELSE) def __repr__(self) -> str: """Return a string representation of the block""" diff --git a/src/py2048/board.py b/src/py2048/board.py index d8a58ca..9ee954a 100644 --- a/src/py2048/board.py +++ b/src/py2048/board.py @@ -4,7 +4,6 @@ import pygame from loguru import logger from .block import Block -from .color import Color from .config import Config from .utils import Direction @@ -24,7 +23,7 @@ class Board(pygame.sprite.Group): def draw(self, screen: pygame.Surface) -> None: """Draw the board.""" block: Block - pygame.draw.rect(screen, Color.YELLOW, self.rect, 2) + pygame.draw.rect(screen, "#fff500", self.rect, 2) super().draw(screen) diff --git a/src/py2048/color.py b/src/py2048/color.py index 1a90cd6..ac9a0af 100644 --- a/src/py2048/color.py +++ b/src/py2048/color.py @@ -1,241 +1,26 @@ -class TokyoNightDay: - BG = "#E1E2E7" - BG_DARK = "#E9E9EC" - BG_FLOAT = "#E9E9EC" - BG_HIGHLIGHT = "#C4C8DA" - BG_POPUP = "#E9E9EC" - BG_SEARCH = "#7890DD" - BG_SIDEBAR = "#E9E9EC" - BG_STATUSLINE = "#E9E9EC" - BG_VISUAL = "#B6BFE2" - BLACK = "#E9E9ED" - BLUE = "#2E7DE9" - BLUE0 = "#7890DD" - BLUE1 = "#188092" - BLUE2 = "#07879D" - BLUE5 = "#006A83" - BLUE6 = "#2E5857" - BLUE7 = "#92A6D5" - BORDER = "#E9E9ED" - BORDER_HIGHLIGHT = "#2496AC" - COMMENT = "#848CB5" - CYAN = "#007197" - DARK3 = "#8990B3" - DARK5 = "#68709A" - DELTA_ADD = "#57A7BC" - DELTA_DELETE = "#D99EA2" - DIFF_ADD = "#AECDE6" - DIFF_CHANGE = "#D6D8E3" - DIFF_DELETE = "#DFCCD4" - DIFF_TEXT = "#92A6D5" - ERROR = "#C64343" - FG = "#3760BF" - FG_DARK = "#6172B0" - FG_FLOAT = "#3760BF" - FG_GUTTER = "#A8AECB" - FG_SIDEBAR = "#6172B0" - GIT_ADD = "#4197A4" - GIT_CHANGE = "#506D9C" - GIT_DELETE = "#C47981" - GIT_IGNORE = "#8990B3" - GIT_SIGNS_ADD = "#399A96" - GIT_SIGNS_CHANGE = "#6482BD" - GITSIGNS_DELETE = "#C25D64" - GREEN = "#587539" - GREEN1 = "#387068" - GREEN2 = "#38919F" - HINT = "#118C74" - INFO = "#07879D" - MAGENTA = "#9854F1" - MAGENTA2 = "#D20065" - ORANGE = "#B15C00" - PURPLE = "#7847BD" - RED = "#F52A65" - RED1 = "#C64343" - TEAL = "#118C74" - TERMINAL_BLACK = "#A1A6C5" - WARNING = "#8C6C3E" - YELLOW = "#8C6C3E" +from enum import Enum -class TokyoNightMoon: - BG = "#222436" - BG_DARK = "#1E2030" - BG_FLOAT = "#1E2030" - BG_HIGHLIGHT = "#2F334D" - BG_POPUP = "#1E2030" - BG_SEARCH = "#3E68D7" - BG_SIDEBAR = "#1E2030" - BG_STATUSLINE = "#1E2030" - BG_VISUAL = "#2D3F76" - BLACK = "#1B1D2B" - BLUE = "#82AAFF" - BLUE0 = "#3E68D7" - BLUE1 = "#65BCFF" - BLUE2 = "#0DB9D7" - BLUE5 = "#89DDFF" - BLUE6 = "#B4F9F8" - BLUE7 = "#394B70" - BORDER = "#1B1D2B" - BORDER_HIGHLIGHT = "#589ED7" - COMMENT = "#636DA6" - CYAN = "#86E1FC" - DARK3 = "#545C7E" - DARK5 = "#737AA2" - DELTA_ADD = "#305F6F" - DELTA_DELETE = "#6B2E43" - DIFF_ADD = "#273849" - DIFF_CHANGE = "#252A3F" - DIFF_DELETE = "#3A273A" - DIFF_TEXT = "#394B70" - ERROR = "#C53B53" - FG = "#C8D3F5" - FG_DARK = "#828BB8" - FG_FLOAT = "#C8D3F5" - FG_GUTTER = "#3B4261" - FG_SIDEBAR = "#828BB8" - GIT_ADD = "#B8DB87" - GIT_CHANGE = "#7CA1F2" - GIT_DELETE = "#E26A75" - GIT_IGNORE = "#545C7E" - GIT_SIGNS_ADD = "#627259" - GIT_SIGNS_CHANGE = "#485A86" - GIT_SIGNS_DELETE = "#B55A67" - GREEN = "#C3E88D" - GREEN1 = "#4FD6BE" - GREEN2 = "#41A6B5" - HINT = "#4FD6BE" - INFO = "#0DB9D7" - MAGENTA = "#C099FF" - MAGENTA2 = "#FF007C" - ORANGE = "#FF966C" - PURPLE = "#FCA7EA" - RED = "#FF757F" - RED1 = "#C53B53" - TEAL = "#4FD6BE" - TERMINAL_BLACK = "#444A73" - WARNING = "#FFC777" - YELLOW = "#FFC777" +class Original: + BLOCK_0 = "#ccc0b3" + BLOCK_2 = "#eee4da" + BLOCK_4 = "#ede0c8" + BLOCK_8 = "#f2b179" + BLOCK_16 = "#f59563" + BLOCK_32 = "#f67c5f" + BLOCK_64 = "#f65e3b" + BLOCK_128 = "#edcf72" + BLOCK_256 = "#edcc61" + BLOCK_512 = "#edc850" + BLOCK_1024 = "#edc53f" + BLOCK_2048 = "#edc22e" + BLOCK_ELSE = "#ff0000" + LIGHT_TEXT = "#f9f6f2" + DARK_TEXT = "#776e65" + OTHER = "#000000" + BG = "#bbada0" -class TokyoNightNight: - BG = "#1A1B26" - BG_DARK = "#16161E" - BG_FLOAT = "#16161E" - BG_HIGHLIGHT = "#292E42" - BG_POPUP = "#16161E" - BG_SEARCH = "#3D59A1" - BG_SIDEBAR = "#16161E" - BG_STATUSLINE = "#16161E" - BG_VISUAL = "#283457" - BLACK = "#15161E" - BLUE = "#7AA2F7" - BLUE0 = "#3D59A1" - BLUE1 = "#2AC3DE" - BLUE2 = "#0DB9D7" - BLUE5 = "#89DDFF" - BLUE6 = "#B4F9F8" - BLUE7 = "#394B70" - BORDER = "#15161E" - BORDER_HIGHLIGHT = "#27A1B9" - COMMENT = "#565F89" - CYAN = "#7DCFFF" - DARK3 = "#545C7E" - DARK5 = "#737AA2" - DELTA_ADD = "#2C5A66" - DELTA_DELETE = "#713137" - DIFF_ADD = "#20303B" - DIFF_CHANGE = "#1F2231" - DIFF_DELETE = "#37222C" - DIFF_TEXT = "#394B70" - ERROR = "#DB4B4B" - FG = "#C0CAF5" - FG_DARK = "#A9B1D6" - FG_FLOAT = "#C0CAF5" - FG_GUTTER = "#3B4261" - FG_SIDEBAR = "#A9B1D6" - GIT_ADD = "#449DAB" - GIT_CHANGE = "#6183BB" - GIT_DELETE = "#914C54" - GIT_IGNORE = "#545C7E" - GIT_SIGNS_ADD = "#266D6A" - GIT_SIGNS_CHANGE = "#536C9E" - GIT_SIGNS_DELETE = "#B2555B" - GREEN = "#9ECE6A" - GREEN1 = "#73DACA" - GREEN2 = "#41A6B5" - HINT = "#1ABC9C" - INFO = "#0DB9D7" - MAGENTA = "#BB9AF7" - MAGENTA2 = "#FF007C" - ORANGE = "#FF9E64" - PURPLE = "#9D7CD8" - RED = "#F7768E" - RED1 = "#DB4B4B" - TEAL = "#1ABC9C" - TERMINAL_BLACK = "#414868" - WARNING = "#E0AF68" - YELLOW = "#E0AF68" - - -class TokyoNightStorm: - BG = "#24283B" - BG_DARK = "#1F2335" - BG_FLOAT = "#1F2335" - BG_HIGHLIGHT = "#292E42" - BG_POPUP = "#1F2335" - BG_SEARCH = "#3D59A1" - BG_SIDEBAR = "#1F2335" - BG_STATUSLINE = "#1F2335" - BG_VISUAL = "#2E3C64" - BLACK = "#1D202F" - BLUE = "#7AA2F7" - BLUE0 = "#3D59A1" - BLUE1 = "#2AC3DE" - BLUE2 = "#0DB9D7" - BLUE5 = "#89DDFF" - BLUE6 = "#B4F9F8" - BLUE7 = "#394B70" - BORDER = "#1D202F" - BORDER_HIGHLIGHT = "#29A4BD" - COMMENT = "#565F89" - CYAN = "#7DCFFF" - DARK3 = "#545C7E" - DARK5 = "#737AA2" - DELTA_ADD = "#316172" - DELTA_DELETE = "#763842" - DIFF_ADD = "#283B4D" - DIFF_CHANGE = "#272D43" - DIFF_DELETE = "#3F2D3D" - DIFF_TEXT = "#394B70" - ERROR = "#DB4B4B" - FG = "#C0CAF5" - FG_DARK = "#A9B1D6" - FG_FLOAT = "#C0CAF5" - FG_GUTTER = "#3B4261" - FG_SIDEBAR = "#A9B1D6" - GIT_ADD = "#449DAB" - GIT_CHANGE = "#6183BB" - GIT_DELETE = "#914C54" - GIT_IGNORE = "#545C7E" - GIT_SIGNS_ADD = "#266D6A" - GIT_SIGNS_CHANGE = "#536C9E" - GIT_SIGNS_DELETE = "#B2555B" - GREEN = "#9ECE6A" - GREEN1 = "#73DACA" - GREEN2 = "#41A6B5" - HINT = "#1ABC9C" - INFO = "#0DB9D7" - MAGENTA = "#BB9AF7" - MAGENTA2 = "#FF007C" - ORANGE = "#FF9E64" - PURPLE = "#9D7CD8" - RED = "#F7768E" - RED1 = "#DB4B4B" - TEAL = "#1ABC9C" - TERMINAL_BLACK = "#414868" - WARNING = "#E0AF68" - YELLOW = "#E0AF68" - - -Color = TokyoNightNight +class ColorScheme(Enum): + ORIGINAL = Original + DARK = ... # TODO: Implement dark color scheme diff --git a/src/py2048/colors.py b/src/py2048/colors.py deleted file mode 100644 index 6057941..0000000 --- a/src/py2048/colors.py +++ /dev/null @@ -1,241 +0,0 @@ -class TokyoNightDay: - BG = "#E1E2E7" - BG_DARK = "#E9E9EC" - BG_FLOAT = "#E9E9EC" - BG_HIGHLIGHT = "#C4C8DA" - BG_POPUP = "#E9E9EC" - BG_SEARCH = "#7890DD" - BG_SIDEBAR = "#E9E9EC" - BG_STATUSLINE = "#E9E9EC" - BG_VISUAL = "#B6BFE2" - BLACK = "#E9E9ED" - BLUE = "#2E7DE9" - BLUE0 = "#7890DD" - BLUE1 = "#188092" - BLUE2 = "#07879D" - BLUE5 = "#006A83" - BLUE6 = "#2E5857" - BLUE7 = "#92A6D5" - BORDER = "#E9E9ED" - BORDER_HIGHLIGHT = "#2496AC" - COMMENT = "#848CB5" - CYAN = "#007197" - DARK3 = "#8990B3" - DARK5 = "#68709A" - DELTA_ADD = "#57A7BC" - DELTA_DELETE = "#D99EA2" - DIFF_ADD = "#AECDE6" - DIFF_CHANGE = "#D6D8E3" - DIFF_DELETE = "#DFCCD4" - DIFF_TEXT = "#92A6D5" - ERROR = "#C64343" - FG = "#3760BF" - FG_DARK = "#6172B0" - FG_FLOAT = "#3760BF" - FG_GUTTER = "#A8AECB" - FG_SIDEBAR = "#6172B0" - GIT_ADD = "#4197A4" - GIT_CHANGE = "#506D9C" - GIT_DELETE = "#C47981" - GIT_IGNORE = "#8990B3" - GIT_SIGNS_ADD = "#399A96" - GIT_SIGNS_CHANGE = "#6482BD" - GITSIGNS_DELETE = "#C25D64" - GREEN = "#587539" - GREEN1 = "#387068" - GREEN2 = "#38919F" - HINT = "#118C74" - INFO = "#07879D" - MAGENTA = "#9854F1" - MAGENTA2 = "#D20065" - ORANGE = "#B15C00" - PURPLE = "#7847BD" - RED = "#F52A65" - RED1 = "#C64343" - TEAL = "#118C74" - TERMINAL_BLACK = "#A1A6C5" - WARNING = "#8C6C3E" - YELLOW = "#8C6C3E" - - -class TokyoNightMoon: - BG = "#222436" - BG_DARK = "#1E2030" - BG_FLOAT = "#1E2030" - BG_HIGHLIGHT = "#2F334D" - BG_POPUP = "#1E2030" - BG_SEARCH = "#3E68D7" - BG_SIDEBAR = "#1E2030" - BG_STATUSLINE = "#1E2030" - BG_VISUAL = "#2D3F76" - BLACK = "#1B1D2B" - BLUE = "#82AAFF" - BLUE0 = "#3E68D7" - BLUE1 = "#65BCFF" - BLUE2 = "#0DB9D7" - BLUE5 = "#89DDFF" - BLUE6 = "#B4F9F8" - BLUE7 = "#394B70" - BORDER = "#1B1D2B" - BORDER_HIGHLIGHT = "#589ED7" - COMMENT = "#636DA6" - CYAN = "#86E1FC" - DARK3 = "#545C7E" - DARK5 = "#737AA2" - DELTA_ADD = "#305F6F" - DELTA_DELETE = "#6B2E43" - DIFF_ADD = "#273849" - DIFF_CHANGE = "#252A3F" - DIFF_DELETE = "#3A273A" - DIFF_TEXT = "#394B70" - ERROR = "#C53B53" - FG = "#C8D3F5" - FG_DARK = "#828BB8" - FG_FLOAT = "#C8D3F5" - FG_GUTTER = "#3B4261" - FG_SIDEBAR = "#828BB8" - GIT_ADD = "#B8DB87" - GIT_CHANGE = "#7CA1F2" - GIT_DELETE = "#E26A75" - GIT_IGNORE = "#545C7E" - GIT_SIGNS_ADD = "#627259" - GIT_SIGNS_CHANGE = "#485A86" - GIT_SIGNS_DELETE = "#B55A67" - GREEN = "#C3E88D" - GREEN1 = "#4FD6BE" - GREEN2 = "#41A6B5" - HINT = "#4FD6BE" - INFO = "#0DB9D7" - MAGENTA = "#C099FF" - MAGENTA2 = "#FF007C" - ORANGE = "#FF966C" - PURPLE = "#FCA7EA" - RED = "#FF757F" - RED1 = "#C53B53" - TEAL = "#4FD6BE" - TERMINAL_BLACK = "#444A73" - WARNING = "#FFC777" - YELLOW = "#FFC777" - - -class TokyoNightNight: - BG = "#1A1B26" - BG_DARK = "#16161E" - BG_FLOAT = "#16161E" - BG_HIGHLIGHT = "#292E42" - BG_POPUP = "#16161E" - BG_SEARCH = "#3D59A1" - BG_SIDEBAR = "#16161E" - BG_STATUSLINE = "#16161E" - BG_VISUAL = "#283457" - BLACK = "#15161E" - BLUE = "#7AA2F7" - BLUE0 = "#3D59A1" - BLUE1 = "#2AC3DE" - BLUE2 = "#0DB9D7" - BLUE5 = "#89DDFF" - BLUE6 = "#B4F9F8" - BLUE7 = "#394B70" - BORDER = "#15161E" - BORDER_HIGHLIGHT = "#27A1B9" - COMMENT = "#565F89" - CYAN = "#7DCFFF" - DARK3 = "#545C7E" - DARK5 = "#737AA2" - DELTA_ADD = "#2C5A66" - DELTA_DELETE = "#713137" - DIFF_ADD = "#20303B" - DIFF_CHANGE = "#1F2231" - DIFF_DELETE = "#37222C" - DIFF_TEXT = "#394B70" - ERROR = "#DB4B4B" - FG = "#C0CAF5" - FG_DARK = "#A9B1D6" - FG_FLOAT = "#C0CAF5" - FG_GUTTER = "#3B4261" - FG_SIDEBAR = "#A9B1D6" - GIT_ADD = "#449DAB" - GIT_CHANGE = "#6183BB" - GIT_DELETE = "#914C54" - GIT_IGNORE = "#545C7E" - GIT_SIGNS_ADD = "#266D6A" - GIT_SIGNS_CHANGE = "#536C9E" - GIT_SIGNS_DELETE = "#B2555B" - GREEN = "#9ECE6A" - GREEN1 = "#73DACA" - GREEN2 = "#41A6B5" - HINT = "#1ABC9C" - INFO = "#0DB9D7" - MAGENTA = "#BB9AF7" - MAGENTA2 = "#FF007C" - ORANGE = "#FF9E64" - PURPLE = "#9D7CD8" - RED = "#F7768E" - RED1 = "#DB4B4B" - TEAL = "#1ABC9C" - TERMINAL_BLACK = "#414868" - WARNING = "#E0AF68" - YELLOW = "#E0AF68" - - -class TokyoNightStorm: - BG = "#24283B" - BG_DARK = "#1F2335" - BG_FLOAT = "#1F2335" - BG_HIGHLIGHT = "#292E42" - BG_POPUP = "#1F2335" - BG_SEARCH = "#3D59A1" - BG_SIDEBAR = "#1F2335" - BG_STATUSLINE = "#1F2335" - BG_VISUAL = "#2E3C64" - BLACK = "#1D202F" - BLUE = "#7AA2F7" - BLUE0 = "#3D59A1" - BLUE1 = "#2AC3DE" - BLUE2 = "#0DB9D7" - BLUE5 = "#89DDFF" - BLUE6 = "#B4F9F8" - BLUE7 = "#394B70" - BORDER = "#1D202F" - BORDER_HIGHLIGHT = "#29A4BD" - COMMENT = "#565F89" - CYAN = "#7DCFFF" - DARK3 = "#545C7E" - DARK5 = "#737AA2" - DELTA_ADD = "#316172" - DELTA_DELETE = "#763842" - DIFF_ADD = "#283B4D" - DIFF_CHANGE = "#272D43" - DIFF_DELETE = "#3F2D3D" - DIFF_TEXT = "#394B70" - ERROR = "#DB4B4B" - FG = "#C0CAF5" - FG_DARK = "#A9B1D6" - FG_FLOAT = "#C0CAF5" - FG_GUTTER = "#3B4261" - FG_SIDEBAR = "#A9B1D6" - GIT_ADD = "#449DAB" - GIT_CHANGE = "#6183BB" - GIT_DELETE = "#914C54" - GIT_IGNORE = "#545C7E" - GIT_SIGNS_ADD = "#266D6A" - GIT_SIGNS_CHANGE = "#536C9E" - GIT_SIGNS_DELETE = "#B2555B" - GREEN = "#9ECE6A" - GREEN1 = "#73DACA" - GREEN2 = "#41A6B5" - HINT = "#1ABC9C" - INFO = "#0DB9D7" - MAGENTA = "#BB9AF7" - MAGENTA2 = "#FF007C" - ORANGE = "#FF9E64" - PURPLE = "#9D7CD8" - RED = "#F7768E" - RED1 = "#DB4B4B" - TEAL = "#1ABC9C" - TERMINAL_BLACK = "#414868" - WARNING = "#E0AF68" - YELLOW = "#E0AF68" - - -Colors = TokyoNightNight diff --git a/src/py2048/config.py b/src/py2048/config.py index e80e217..064fd47 100644 --- a/src/py2048/config.py +++ b/src/py2048/config.py @@ -1,12 +1,15 @@ +from .color import ColorScheme + + class Config: FONT_FAMILY = "Roboto" FONT_SIZE = 32 + COLORSCHEME = ColorScheme.ORIGINAL.value BOARD_SIZE = 4 BLOCK_SIZE = 50 - - # WIDTH = BOARD_SIZE * BLOCK_SIZE + BLOCK_SIZE - # HEIGHT = BOARD_SIZE * BLOCK_SIZE + BLOCK_SIZE * 2 + BLOCK_BORDER_WIDTH = 2 + BLOCK_BORDER_RADIUS = 5 BOARD_WIDTH = BOARD_SIZE * BLOCK_SIZE BOARD_HEIGHT = BOARD_SIZE * BLOCK_SIZE diff --git a/src/py2048/game.py b/src/py2048/game.py index 0497071..c6ae1b4 100644 --- a/src/py2048/game.py +++ b/src/py2048/game.py @@ -4,7 +4,6 @@ import pygame from loguru import logger from .board import Board -from .color import Color from .config import Config from .logger import setup_logger from .screens.header import Header @@ -35,7 +34,7 @@ class Game: def _render(self) -> None: """Render the game.""" - self.screen.fill(Color.BG) + self.screen.fill(Config.COLORSCHEME.BG) self.board.draw(self.screen) self.header.draw(self.screen) pygame.display.flip() diff --git a/src/py2048/screens/header.py b/src/py2048/screens/header.py index 619eb33..b0b98c9 100644 --- a/src/py2048/screens/header.py +++ b/src/py2048/screens/header.py @@ -1,6 +1,5 @@ import pygame -from ..color import Color from ..config import Config @@ -11,4 +10,4 @@ class Header: def draw(self, screen: pygame.Surface) -> None: """Draw the header.""" - pygame.draw.rect(screen, Color.MAGENTA, self.rect, 2) + pygame.draw.rect(screen, "#ff00ee", self.rect, 2)