Skip to content

Snake & Ladders — Detailed#

classDiagram
  direction TB

  class Game {
    -board: Board
    -players: Queue~Player~
    -dice: Dice
    -rules: Rules
    -winner
    +playTurn() TurnResult
    +start()
  }

  class Board {
    +size: int
    -snakes: List~Snake~
    -ladders: List~Ladder~
    +nextPosition(curr, roll)
  }

  class Player {
    +id
    +name
    +position: int
  }

  class Dice {
    +sides: int
    +count: int
    +roll() int
  }

  class Snake {
    +head
    +tail
  }
  class Ladder {
    +bottom
    +top
  }

  class Rules {
    +diceForExtraTurn
    +mustLandExactlyAtEnd
    +killOnSameCell
  }

  Game *-- Board
  Game *-- "many" Player
  Game --> Dice
  Game --> Rules
  Board *-- "many" Snake
  Board *-- "many" Ladder

Glossary & fundamentals#

Concept What it is Fundamentals
Idempotency retried turn ops in multiplayer idempotency-retries
Pub/Sub turn events pub-sub-pattern