mirror of
https://github.com/kristoferssolo/2048.git
synced 2025-10-21 15:20:35 +00:00
fix(game): movement sorting
This commit is contained in:
parent
54787e727b
commit
abdecc36d2
@ -3,7 +3,6 @@ import random
|
|||||||
from typing import Union
|
from typing import Union
|
||||||
|
|
||||||
import pygame
|
import pygame
|
||||||
from loguru import logger
|
|
||||||
|
|
||||||
from .colors import COLORS
|
from .colors import COLORS
|
||||||
from .config import Config
|
from .config import Config
|
||||||
@ -75,7 +74,6 @@ class Block(pygame.sprite.Sprite):
|
|||||||
self.group.remove(self)
|
self.group.remove(self)
|
||||||
self.value += other.value
|
self.value += other.value
|
||||||
self.update()
|
self.update()
|
||||||
logger.debug(f"Merging block({id(self)}) with block({id(other)})")
|
|
||||||
self.group.add(self)
|
self.group.add(self)
|
||||||
|
|
||||||
def update(self) -> None:
|
def update(self) -> None:
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
import random
|
import random
|
||||||
|
|
||||||
import pygame
|
import pygame
|
||||||
|
from loguru import logger
|
||||||
|
|
||||||
from .block import Block
|
from .block import Block
|
||||||
from .config import Config
|
from .config import Config
|
||||||
@ -12,8 +13,15 @@ class Board(pygame.sprite.Group):
|
|||||||
blocks = self.sprites()
|
blocks = self.sprites()
|
||||||
block: Block
|
block: Block
|
||||||
|
|
||||||
if direction in {Direction.DOWN, Direction.RIGHT}:
|
match direction:
|
||||||
blocks.sort(key=lambda block: (block.rect.x, block.rect.y), reverse=True)
|
case Direction.UP:
|
||||||
|
blocks.sort(key=lambda block: block.rect.y)
|
||||||
|
case Direction.DOWN:
|
||||||
|
blocks.sort(key=lambda block: block.rect.y, reverse=True)
|
||||||
|
case Direction.LEFT:
|
||||||
|
blocks.sort(key=lambda block: block.rect.x)
|
||||||
|
case Direction.RIGHT:
|
||||||
|
blocks.sort(key=lambda block: block.rect.x, reverse=True)
|
||||||
|
|
||||||
for block in blocks:
|
for block in blocks:
|
||||||
block.move(direction)
|
block.move(direction)
|
||||||
@ -39,4 +47,5 @@ class Board(pygame.sprite.Group):
|
|||||||
|
|
||||||
if not colliding_blocks:
|
if not colliding_blocks:
|
||||||
self.add(block)
|
self.add(block)
|
||||||
|
logger.debug(f"Created block at {block.pos()}")
|
||||||
break
|
break
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user