Table of Contents
Overview
Designing a snake and ladder game is a low-level design problem and it should be solved that way only. In this question, the interview is looking to test your Object Oriented skills.
You can learn more about the Snake and Ladders game here – https://en.wikipedia.org/wiki/Snakes_and_ladders
In this tutorial, we will discuss the low-level design of the Snake and Ladder Game. Along with that, we will also look into the full working code for the Snake and Ladder Game. Here is the table of contents for this tutorial
- All Actors in Snake and Ladder Game
- Requirements Analysis
- UML Diagram
- The low-level design represented in Go Programming Language
- Full Working Code in Go
- Full Working Code in One file
All Actors in Snake and Ladder Game
Let’s identify all the main actors which exist in the design
- Board –Â The board will be numbered from 1 to 100 and simply represents the board in the game.
- Game – it is the main class that controls the overall flow of the game.
- Player – It is an interface that represents the player. Two concrete class is going to implement this interface.
- Human Player
- Computer Player
- Snake – It represents a ladder
- Ladder – It represents a ladder
Requirements Analysis
Other than the rules of the snake and ladder game as mentioned here https://en.wikipedia.org/wiki/Snakes_and_ladders , we are also going to design in an extensible way where –
- The game could be played between any number of players
- The system should support any number of ladders and snakes.
- The game should support any number of dice rolled
UML Diagram
Below is the UML diagram for the Snake and Ladder game.
Let’s understand this UML diagram
The simplest component in the above UML diagram is the iPlayer interface. It defines the following functions
- Roll Dice – a player is going to roll dice and return the dice number. It will take the number of dice to roll as an argument
- Set Position – A player position is set in this method. The player position will be from 1 to n*n where n is the dimension of the board
- Get Position – A utility method to get the position.
- Get ID – A simple function to get the ID of the player
This interface is implemented by two classes
- Human Player
- Computer Player
Next are the Snake and Ladder classes. These classes only exist for creating and validating the snake and ladder respectively. By validation, we mean that for the snake we are going to verify that the snake start is greater than the snake end. For the ladder, we are going to verify that the ladder start is less than the ladder end.
Both snake and ladder created are in turn passed into the creation of a board that internally implements the snake and ladder as a map.
Next is the board class itself. It will hold the below fields
- A square of n*n where each square is of type Symbol class. The symbol class only holds the player Id map. For example, let’s say there are two players playing the game. During the game, both the player could be at square 5. Both the players are present at position 5 is represented by the player’s Id map in the Symbol class
- Dimension – dimension of the the board
- Snake Map – Represents the snake on the board. The key in the map is the start point and the value is the endpoint of the snake
- Ladder Map– It Represents the ladder on the board. The key in the map is the start point and the value is the endpoint of the ladder
There is a Game Status Enum class that defines the different states of the game. A game can be either in GameInProgress or GameFinished state.
Next is the Game Class which is the driver class. It has below components
- Board – The board itself
- Players – the list of players that are playing the game
- Num Moves – Number of moves that have happened till now
- Game Status – What is the game status at this moment
- Winning Player – Who is the winning player at the end.
- Num Dice – With how many dice is the game player with.
Let’s look at low level design now expressed in Go Programming Language
Low-Level Design
Below is the low-level design expressed in Go Programming Language
iPlayer interface
type iPlayer interface {
rollDice(numDice int) (diceValue int)
getID() (playerId string)
setPosition(newPosition int)
getPosition() (currPosition int)
}
Human Player Class
type humanPlayer struct {
position int
id string
}
func (h *humanPlayer) rollDice(numDice int) int {}
func (h *humanPlayer) getID() string {}
func (h *humanPlayer) setPosition(newPosition int) {}
func (h *humanPlayer) getPosition() int {}
Computer Player Class
type computerPlayer struct {
position int
id string
}
func (h *computerPlayer) rollDice(numDice int) int {}
func (h *computerPlayer) getID() string {}
func (h *computerPlayer) setPosition(newPosition int) {}
func (h *computerPlayer) getPosition() int {}
Game Status Enum
type GameStatus uint8
const (
GameInProgress GameStatus = iota
GameFinished
)
Snake Class (Only used for creation and validation of snake)
type snake struct {
start int
end int
}
func createSnake(start, end int) (snake, error) {}
Ladder Class (Only used for creation and validation of ladder)
type ladder struct {
start int
end int
}
func createLadder(start, end int) (ladder, error) {}
Symbol Class
type Symbol struct {
playersIdMap map[string]bool
}
func (s Symbol) getRepresentation(x, y, dimension int) string {}
Board Class
type board struct {
square [][]Symbol
dimension int
snakeMap map[int]int
ladderMap map[int]int
}
func (b *board) makeMove(player iPlayer, diceNum int) (playerWon bool) {}
func (b *board) removePlayerFromPosition(player iPlayer, position int) {}
func (b *board) addPlayerToPosition(player iPlayer, position int) {}
func (b *board) printBoard() {
line := "-------------------------------------------------------------"
fmt.Println(line)
for i := b.dimension - 1; i >= 0; i-- {
fmt.Print("|")
for j := b.dimension - 1; j >= 0; j-- {
fmt.Print(b.square[i][j].getRepresentation(i, j, b.dimension))
}
fmt.Println()
}
fmt.Println(line)
fmt.Println()
}
Game Class
type game struct {
board *board
players []iPlayer
numMoves int
gameStatus GameStatus
winningPlayer iPlayer
numDice int
}
func initGame(b *board, players []iPlayer, numDice int) *game {
game := &game{
board: b,
players: players,
gameStatus: GameInProgress,
numDice: numDice,
numMoves: 0,
}
return game
}
func (g *game) play() error {}
func (g *game) printResult() {}
Full Working Code
Here is the full working code
iPlayer.go
package main
type iPlayer interface {
rollDice(numDice int) (diceValue int)
getID() (playerId string)
setPosition(newPosition int)
getPosition() (currPosition int)
}
humanPlayer.go
package main
import (
"math/rand"
"time"
)
type humanPlayer struct {
position int
id string
}
func (h *humanPlayer) rollDice(numDice int) int {
diceValue := 0
for i := 0; i < numDice; i++ {
rand.Seed(time.Now().UnixNano())
diceValue += rand.Intn(6) + 1
}
return diceValue
}
func (h *humanPlayer) getID() string {
return h.id
}
func (h *humanPlayer) setPosition(newPosition int) {
h.position = newPosition
}
func (h *humanPlayer) getPosition() int {
return h.position
}
computerPlayer.go
package main
import (
"math/rand"
"time"
)
type computerPlayer struct {
position int
id string
}
func (h *computerPlayer) rollDice(numDice int) int {
diceValue := 0
for i := 0; i < numDice; i++ {
rand.Seed(time.Now().UnixNano())
diceValue += rand.Intn(6) + 1
}
return diceValue
}
func (h *computerPlayer) getID() string {
return h.id
}
func (h *computerPlayer) setPosition(newPosition int) {
h.position = newPosition
}
func (h *computerPlayer) getPosition() int {
return h.position
}
gameStatus.go
package main
type GameStatus uint8
const (
GameInProgress GameStatus = iota
GameFinished
)
symbol.go
package main
import (
"strconv"
"strings"
)
type Symbol struct {
playersIdMap map[string]bool
}
func (s Symbol) getRepresentation(x, y, dimension int) string {
val := ""
playerIds := make([]string, 0)
for k, v := range s.playersIdMap {
if v {
playerIds = append(playerIds, k)
}
}
if len(playerIds) > 0 {
val = strings.Join(playerIds, ",")
} else {
val = "."
}
num := x*dimension + y + 1
strr := strconv.Itoa(num)
rem := 3 - len(strr)
for i := 0; i < rem; i++ {
strr = strr + " "
}
strr = strr + " " + val + "|"
return strr
}
snake.go
package main
import "fmt"
type snake struct {
start int
end int
}
func createSnake(start, end int) (snake, error) {
if end >= start {
return snake{}, fmt.Errorf("End cannot be greater than Start for a snake")
}
snake := snake{
start: start,
end: end,
}
return snake, nil
}
ladder.go
package main
import "fmt"
type ladder struct {
start int
end int
}
func createLadder(start, end int) (ladder, error) {
if start >= end {
return ladder{}, fmt.Errorf("Start cannot be greater than End for a ladder")
}
ladder := ladder{
start: start,
end: end,
}
return ladder, nil
}
board.go
package main
import (
"fmt"
"strconv"
"strings"
)
type board struct {
square [][]Symbol
dimension int
snakeMap map[int]int
ladderMap map[int]int
}
func createBoard(snakes []snake, ladders []ladder, dimension int, players []iPlayer) *board {
snakeMap := make(map[int]int)
ladderMap := make(map[int]int)
for i := 0; i < len(snakes); i++ {
snakeMap[snakes[i].start] = snakes[i].end
}
for i := 0; i < len(ladders); i++ {
ladderMap[ladders[i].start] = ladders[i].end
}
square := make([][]Symbol, dimension)
for i := 0; i < dimension; i++ {
square[i] = make([]Symbol, dimension)
}
for i := 0; i < dimension; i++ {
for j := 0; j < dimension; j++ {
square[i][j] = Symbol{
playersIdMap: make(map[string]bool),
}
}
}
playersIdMap := make(map[string]bool)
for i := 0; i < len(players); i++ {
player := players[i]
playersIdMap[player.getID()] = true
}
square[0][0] = Symbol{
playersIdMap: playersIdMap,
}
return &board{
square: square,
dimension: dimension,
snakeMap: snakeMap,
ladderMap: ladderMap,
}
}
func (b *board) markPosition(player iPlayer, currPosition, newPosition int) {
player.setPosition(newPosition)
b.removePlayerFromPosition(player, currPosition)
b.addPlayerToPosition(player, newPosition)
}
func (b *board) removePlayerFromPosition(player iPlayer, position int) {
x := (position - 1) / b.dimension
y := (position - 1) % b.dimension
currSymbol := b.square[x][y]
delete(currSymbol.playersIdMap, player.getID())
b.square[x][y] = currSymbol
}
func (b *board) addPlayerToPosition(player iPlayer, position int) {
x := (position - 1) / b.dimension
y := (position - 1) % b.dimension
currSymbol := b.square[x][y]
currSymbol.playersIdMap[player.getID()] = true
b.square[x][y] = currSymbol
}
func (b *board) makeMove(player iPlayer, diceNum int) (playerWon bool) {
currPosition := player.getPosition()
newPosition := currPosition + diceNum
if newPosition == b.dimension*b.dimension {
b.printMoveNormal(player, currPosition, newPosition, diceNum)
b.markPosition(player, currPosition, newPosition)
playerWon = true
return playerWon
}
if newPosition > b.dimension*b.dimension {
newPosition = currPosition
b.printMoveNormal(player, currPosition, newPosition, diceNum)
b.markPosition(player, currPosition, newPosition)
return false
}
end, ok := b.snakeMap[newPosition]
if ok {
snakeBitPosition := newPosition
newPosition = end
b.markPosition(player, currPosition, newPosition)
b.printMoveSnake(player, currPosition, snakeBitPosition, diceNum, snakeBitPosition, b.snakeMap[snakeBitPosition])
return false
}
end, ok = b.ladderMap[newPosition]
if ok {
ladderClimbPosition := newPosition
newPosition = end
b.markPosition(player, currPosition, newPosition)
b.printMoveLadder(player, currPosition, ladderClimbPosition, diceNum, ladderClimbPosition, b.ladderMap[ladderClimbPosition])
return false
}
b.printMoveNormal(player, currPosition, newPosition, diceNum)
b.markPosition(player, currPosition, newPosition)
player.setPosition(newPosition)
return false
}
func (g *board) printMoveNormal(player iPlayer, currPosition, newPosition, diceNum int) {
fmt.Printf("Player with Id:%s moved from position:%d to position:%d after rolling dice with num:%d\n", player.getID(), currPosition, newPosition, diceNum)
}
func (g *board) printMoveSnake(player iPlayer, currPosition, snakeBitPosition, diceNum, snakeStart, snakeEnd int) {
fmt.Printf("Player with Id:%s moved from position:%d to position:%d after rolling dice with num:%d and then to position:%d. Bit by snake, snakeStart:%d snakeEnd:%d\n", player.getID(), currPosition, snakeBitPosition, diceNum, snakeEnd, snakeStart, snakeEnd)
}
func (g *board) printMoveLadder(player iPlayer, currPosition, ladderClimbPosition, diceNum, ladderStart, ladderEnd int) {
fmt.Printf("Player with Id:%s moved from position:%d to position:%d after rolling dice with num:%d and then to position:%d. Climbed by ladder, ladderStart:%d ladderEnd:%d\n", player.getID(), currPosition, ladderClimbPosition, diceNum, ladderEnd, ladderStart, ladderEnd)
}
func (b *board) printBoard() {
line := "-------------------------------------------------------------"
fmt.Println(line)
for i := b.dimension - 1; i >= 0; i-- {
fmt.Print("|")
for j := b.dimension - 1; j >= 0; j-- {
fmt.Print(b.square[i][j].getRepresentation(i, j, b.dimension))
}
fmt.Println()
}
fmt.Println(line)
fmt.Println()
}
func IntArrayToString(a []int) string {
b := make([]string, len(a))
for i, v := range a {
b[i] = strconv.Itoa(v)
}
return strings.Join(b, ",")
}
game.go
package main
import "fmt"
type game struct {
board *board
players []iPlayer
numMoves int
gameStatus GameStatus
winningPlayer iPlayer
numDice int
}
func initGame(b *board, players []iPlayer, numDice int) *game {
game := &game{
board: b,
players: players,
gameStatus: GameInProgress,
numDice: numDice,
numMoves: 0,
}
return game
}
func (g *game) play() error {
fmt.Println("Initial Board")
g.board.printBoard()
for {
for i := 0; i < len(g.players); i++ {
currPlayer := g.players[i]
diceNum := currPlayer.rollDice(g.numDice)
playerWon := g.board.makeMove(currPlayer, diceNum)
if playerWon {
g.winningPlayer = currPlayer
g.gameStatus = GameFinished
break
}
g.board.printBoard()
}
g.numMoves = g.numMoves + 1
if g.gameStatus != GameInProgress {
break
}
}
return nil
}
func (g *game) printResult() {
switch g.gameStatus {
case GameInProgress:
fmt.Println("Game in Progress")
case GameFinished:
fmt.Println("Game Finished")
fmt.Printf("Players with ID:%s won\n", g.winningPlayer.getID())
default:
fmt.Println("Invalid Game Status")
}
g.board.printBoard()
}
main.go
package main
import "fmt"
func main() {
//Create 4 ladder
snakes, err := createSnakes()
if err != nil {
fmt.Println(err)
}
ladders, err := createLadders()
if err != nil {
fmt.Println(err)
}
player1 := &humanPlayer{
position: 1,
id: "a",
}
player2 := &computerPlayer{
position: 1,
id: "b",
}
board := createBoard(snakes, ladders, 10, []iPlayer{player1, player2})
game := initGame(board, []iPlayer{player1, player2}, 1)
game.play()
game.printResult()
}
func createSnakes() ([]snake, error) {
// Create 4 snakes
s1, err := createSnake(35, 25)
if err != nil {
fmt.Println(err)
return nil, err
}
s2, err := createSnake(56, 36)
if err != nil {
fmt.Println(err)
return nil, err
}
s3, err := createSnake(77, 57)
if err != nil {
fmt.Println(err)
return nil, err
}
s4, err := createSnake(98, 78)
if err != nil {
fmt.Println(err)
return nil, err
}
snakes := []snake{s1, s2, s3, s4}
return snakes, nil
}
func createLadders() ([]ladder, error) {
// Create 4 snakes
s1, err := createLadder(26, 36)
if err != nil {
fmt.Println(err)
return nil, err
}
s2, err := createLadder(37, 57)
if err != nil {
fmt.Println(err)
return nil, err
}
s3, err := createLadder(58, 78)
if err != nil {
fmt.Println(err)
return nil, err
}
s4, err := createLadder(74, 94)
if err != nil {
fmt.Println(err)
return nil, err
}
ladders := []ladder{s1, s2, s3, s4}
return ladders, nil
}
Let’s run this program
Note that the output will be different every time you run this program
Output
Initial Board
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 a,b|
-------------------------------------------------------------
Player with Id:a moved from position:1 to position:6 after rolling dice with num:5
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 a|5 .|4 .|3 .|2 .|1 b|
-------------------------------------------------------------
Player with Id:b moved from position:1 to position:3 after rolling dice with num:2
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 a|5 .|4 .|3 b|2 .|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:6 to position:8 after rolling dice with num:2
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 a|7 .|6 .|5 .|4 .|3 b|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:3 to position:5 after rolling dice with num:2
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 a|7 .|6 .|5 b|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:8 to position:10 after rolling dice with num:2
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 a|9 .|8 .|7 .|6 .|5 b|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:5 to position:10 after rolling dice with num:5
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 a,b|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:10 to position:13 after rolling dice with num:3
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 a|12 .|11 .|
|10 b|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:10 to position:14 after rolling dice with num:4
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 b|13 a|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:13 to position:16 after rolling dice with num:3
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 a|15 .|14 b|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:14 to position:15 after rolling dice with num:1
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 a|15 b|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:16 to position:20 after rolling dice with num:4
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 a|19 .|18 .|17 .|16 .|15 b|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:15 to position:20 after rolling dice with num:5
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 b,a|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:20 to position:23 after rolling dice with num:3
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 a|22 .|21 .|
|20 b|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:20 to position:22 after rolling dice with num:2
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 a|22 b|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:23 to position:28 after rolling dice with num:5
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 a|27 .|26 .|25 .|24 .|23 .|22 b|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:22 to position:27 after rolling dice with num:5
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 a|27 b|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:28 to position:32 after rolling dice with num:4
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 a|31 .|
|30 .|29 .|28 .|27 b|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:27 to position:33 after rolling dice with num:6
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 b|32 a|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:32 to position:35 after rolling dice with num:3 and then to position:25. Bit by snake, snakeStart:35 snakeEnd:25
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 b|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 a|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:33 to position:37 after rolling dice with num:4 and then to position:57. Climbed by ladder, ladderStart:37 ladderEnd:57
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 b|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 a|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:25 to position:29 after rolling dice with num:4
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 b|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 a|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:57 to position:61 after rolling dice with num:4
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 b|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 a|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:29 to position:34 after rolling dice with num:5
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 b|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 a|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:61 to position:63 after rolling dice with num:2
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 b|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 a|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:34 to position:39 after rolling dice with num:5
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 b|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 a|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:63 to position:64 after rolling dice with num:1
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 b|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 a|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:39 to position:44 after rolling dice with num:5
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 b|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 a|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:64 to position:69 after rolling dice with num:5
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 b|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 a|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:44 to position:46 after rolling dice with num:2
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 b|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 a|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:69 to position:70 after rolling dice with num:1
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 b|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 a|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:46 to position:48 after rolling dice with num:2
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 b|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 a|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:70 to position:71 after rolling dice with num:1
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 b|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 a|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:48 to position:50 after rolling dice with num:2
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 b|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 a|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:71 to position:75 after rolling dice with num:4
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 b|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 a|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:50 to position:55 after rolling dice with num:5
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 b|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 a|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:75 to position:79 after rolling dice with num:4
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 b|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 a|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:55 to position:60 after rolling dice with num:5
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 b|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 a|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:79 to position:83 after rolling dice with num:4
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 b|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 a|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:60 to position:64 after rolling dice with num:4
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 b|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 a|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:83 to position:86 after rolling dice with num:3
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 b|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 a|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:64 to position:66 after rolling dice with num:2
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 b|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 a|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:86 to position:88 after rolling dice with num:2
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 b|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 a|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:66 to position:72 after rolling dice with num:6
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 b|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 a|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:88 to position:90 after rolling dice with num:2
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 b|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 a|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:72 to position:76 after rolling dice with num:4
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 b|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 a|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:90 to position:93 after rolling dice with num:3
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 b|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 a|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:76 to position:80 after rolling dice with num:4
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 b|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 a|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:93 to position:97 after rolling dice with num:4
-------------------------------------------------------------
|100 .|99 .|98 .|97 b|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 a|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:80 to position:86 after rolling dice with num:6
-------------------------------------------------------------
|100 .|99 .|98 .|97 b|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 a|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:97 to position:99 after rolling dice with num:2
-------------------------------------------------------------
|100 .|99 b|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 a|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:86 to position:87 after rolling dice with num:1
-------------------------------------------------------------
|100 .|99 b|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 a|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:99 to position:100 after rolling dice with num:1
Game Finished
Players with ID:b won
-------------------------------------------------------------
|100 b|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 a|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Full Working Code in One File
Here is the full working code in one file
package main
import (
"fmt"
"math/rand"
"strconv"
"strings"
"time"
)
type iPlayer interface {
rollDice(numDice int) (diceValue int)
getID() (playerId string)
setPosition(newPosition int)
getPosition() (currPosition int)
}
type humanPlayer struct {
position int
id string
}
func (h *humanPlayer) rollDice(numDice int) int {
diceValue := 0
for i := 0; i < numDice; i++ {
rand.Seed(time.Now().UnixNano())
diceValue += rand.Intn(6) + 1
}
return diceValue
}
func (h *humanPlayer) getID() string {
return h.id
}
func (h *humanPlayer) setPosition(newPosition int) {
h.position = newPosition
}
func (h *humanPlayer) getPosition() int {
return h.position
}
type computerPlayer struct {
position int
id string
}
func (h *computerPlayer) rollDice(numDice int) int {
diceValue := 0
for i := 0; i < numDice; i++ {
rand.Seed(time.Now().UnixNano())
diceValue += rand.Intn(6) + 1
}
return diceValue
}
func (h *computerPlayer) getID() string {
return h.id
}
func (h *computerPlayer) setPosition(newPosition int) {
h.position = newPosition
}
func (h *computerPlayer) getPosition() int {
return h.position
}
type GameStatus uint8
const (
GameInProgress GameStatus = iota
GameFinished
)
type Symbol struct {
playersIdMap map[string]bool
}
func (s Symbol) getRepresentation(x, y, dimension int) string {
val := ""
playerIds := make([]string, 0)
for k, v := range s.playersIdMap {
if v {
playerIds = append(playerIds, k)
}
}
if len(playerIds) > 0 {
val = strings.Join(playerIds, ",")
} else {
val = "."
}
num := x*dimension + y + 1
strr := strconv.Itoa(num)
rem := 3 - len(strr)
for i := 0; i < rem; i++ {
strr = strr + " "
}
strr = strr + " " + val + "|"
return strr
}
type snake struct {
start int
end int
}
func createSnake(start, end int) (snake, error) {
if end >= start {
return snake{}, fmt.Errorf("End cannot be greater than Start for a snake")
}
snake := snake{
start: start,
end: end,
}
return snake, nil
}
type ladder struct {
start int
end int
}
func createLadder(start, end int) (ladder, error) {
if start >= end {
return ladder{}, fmt.Errorf("Start cannot be greater than End for a ladder")
}
ladder := ladder{
start: start,
end: end,
}
return ladder, nil
}
type board struct {
square [][]Symbol
dimension int
snakeMap map[int]int
ladderMap map[int]int
}
func createBoard(snakes []snake, ladders []ladder, dimension int, players []iPlayer) *board {
snakeMap := make(map[int]int)
ladderMap := make(map[int]int)
for i := 0; i < len(snakes); i++ {
snakeMap[snakes[i].start] = snakes[i].end
}
for i := 0; i < len(ladders); i++ {
ladderMap[ladders[i].start] = ladders[i].end
}
square := make([][]Symbol, dimension)
for i := 0; i < dimension; i++ {
square[i] = make([]Symbol, dimension)
}
for i := 0; i < dimension; i++ {
for j := 0; j < dimension; j++ {
square[i][j] = Symbol{
playersIdMap: make(map[string]bool),
}
}
}
playersIdMap := make(map[string]bool)
for i := 0; i < len(players); i++ {
player := players[i]
playersIdMap[player.getID()] = true
}
square[0][0] = Symbol{
playersIdMap: playersIdMap,
}
return &board{
square: square,
dimension: dimension,
snakeMap: snakeMap,
ladderMap: ladderMap,
}
}
func (b *board) markPosition(player iPlayer, currPosition, newPosition int) {
player.setPosition(newPosition)
b.removePlayerFromPosition(player, currPosition)
b.addPlayerToPosition(player, newPosition)
}
func (b *board) removePlayerFromPosition(player iPlayer, position int) {
x := (position - 1) / b.dimension
y := (position - 1) % b.dimension
currSymbol := b.square[x][y]
delete(currSymbol.playersIdMap, player.getID())
b.square[x][y] = currSymbol
}
func (b *board) addPlayerToPosition(player iPlayer, position int) {
x := (position - 1) / b.dimension
y := (position - 1) % b.dimension
currSymbol := b.square[x][y]
currSymbol.playersIdMap[player.getID()] = true
b.square[x][y] = currSymbol
}
func (b *board) makeMove(player iPlayer, diceNum int) (playerWon bool) {
currPosition := player.getPosition()
newPosition := currPosition + diceNum
if newPosition == b.dimension*b.dimension {
b.printMoveNormal(player, currPosition, newPosition, diceNum)
b.markPosition(player, currPosition, newPosition)
playerWon = true
return playerWon
}
if newPosition > b.dimension*b.dimension {
newPosition = currPosition
b.printMoveNormal(player, currPosition, newPosition, diceNum)
b.markPosition(player, currPosition, newPosition)
return false
}
end, ok := b.snakeMap[newPosition]
if ok {
snakeBitPosition := newPosition
newPosition = end
b.markPosition(player, currPosition, newPosition)
b.printMoveSnake(player, currPosition, snakeBitPosition, diceNum, snakeBitPosition, b.snakeMap[snakeBitPosition])
return false
}
end, ok = b.ladderMap[newPosition]
if ok {
ladderClimbPosition := newPosition
newPosition = end
b.markPosition(player, currPosition, newPosition)
b.printMoveLadder(player, currPosition, ladderClimbPosition, diceNum, ladderClimbPosition, b.ladderMap[ladderClimbPosition])
return false
}
b.printMoveNormal(player, currPosition, newPosition, diceNum)
b.markPosition(player, currPosition, newPosition)
player.setPosition(newPosition)
return false
}
func (g *board) printMoveNormal(player iPlayer, currPosition, newPosition, diceNum int) {
fmt.Printf("Player with Id:%s moved from position:%d to position:%d after rolling dice with num:%d\n", player.getID(), currPosition, newPosition, diceNum)
}
func (g *board) printMoveSnake(player iPlayer, currPosition, snakeBitPosition, diceNum, snakeStart, snakeEnd int) {
fmt.Printf("Player with Id:%s moved from position:%d to position:%d after rolling dice with num:%d and then to position:%d. Bit by snake, snakeStart:%d snakeEnd:%d\n", player.getID(), currPosition, snakeBitPosition, diceNum, snakeEnd, snakeStart, snakeEnd)
}
func (g *board) printMoveLadder(player iPlayer, currPosition, ladderClimbPosition, diceNum, ladderStart, ladderEnd int) {
fmt.Printf("Player with Id:%s moved from position:%d to position:%d after rolling dice with num:%d and then to position:%d. Climbed by ladder, ladderStart:%d ladderEnd:%d\n", player.getID(), currPosition, ladderClimbPosition, diceNum, ladderEnd, ladderStart, ladderEnd)
}
func (b *board) printBoard() {
line := "-------------------------------------------------------------"
fmt.Println(line)
for i := b.dimension - 1; i >= 0; i-- {
fmt.Print("|")
for j := b.dimension - 1; j >= 0; j-- {
fmt.Print(b.square[i][j].getRepresentation(i, j, b.dimension))
}
fmt.Println()
}
fmt.Println(line)
fmt.Println()
}
func IntArrayToString(a []int) string {
b := make([]string, len(a))
for i, v := range a {
b[i] = strconv.Itoa(v)
}
return strings.Join(b, ",")
}
type game struct {
board *board
players []iPlayer
numMoves int
gameStatus GameStatus
winningPlayer iPlayer
numDice int
}
func initGame(b *board, players []iPlayer, numDice int) *game {
game := &game{
board: b,
players: players,
gameStatus: GameInProgress,
numDice: numDice,
numMoves: 0,
}
return game
}
func (g *game) play() error {
fmt.Println("Initial Board")
g.board.printBoard()
for {
for i := 0; i < len(g.players); i++ {
currPlayer := g.players[i]
diceNum := currPlayer.rollDice(g.numDice)
playerWon := g.board.makeMove(currPlayer, diceNum)
if playerWon {
g.winningPlayer = currPlayer
g.gameStatus = GameFinished
break
}
g.board.printBoard()
}
g.numMoves = g.numMoves + 1
if g.gameStatus != GameInProgress {
break
}
}
return nil
}
func (g *game) printResult() {
switch g.gameStatus {
case GameInProgress:
fmt.Println("Game in Progress")
case GameFinished:
fmt.Println("Game Finished")
fmt.Printf("Players with ID:%s won\n", g.winningPlayer.getID())
default:
fmt.Println("Invalid Game Status")
}
g.board.printBoard()
}
func main() {
//Create 4 ladder
snakes, err := createSnakes()
if err != nil {
fmt.Println(err)
}
ladders, err := createLadders()
if err != nil {
fmt.Println(err)
}
player1 := &humanPlayer{
position: 1,
id: "a",
}
player2 := &computerPlayer{
position: 1,
id: "b",
}
board := createBoard(snakes, ladders, 10, []iPlayer{player1, player2})
game := initGame(board, []iPlayer{player1, player2}, 1)
game.play()
game.printResult()
}
func createSnakes() ([]snake, error) {
// Create 4 snakes
s1, err := createSnake(35, 25)
if err != nil {
fmt.Println(err)
return nil, err
}
s2, err := createSnake(56, 36)
if err != nil {
fmt.Println(err)
return nil, err
}
s3, err := createSnake(77, 57)
if err != nil {
fmt.Println(err)
return nil, err
}
s4, err := createSnake(98, 78)
if err != nil {
fmt.Println(err)
return nil, err
}
snakes := []snake{s1, s2, s3, s4}
return snakes, nil
}
func createLadders() ([]ladder, error) {
// Create 4 snakes
s1, err := createLadder(26, 36)
if err != nil {
fmt.Println(err)
return nil, err
}
s2, err := createLadder(37, 57)
if err != nil {
fmt.Println(err)
return nil, err
}
s3, err := createLadder(58, 78)
if err != nil {
fmt.Println(err)
return nil, err
}
s4, err := createLadder(74, 94)
if err != nil {
fmt.Println(err)
return nil, err
}
ladders := []ladder{s1, s2, s3, s4}
return ladders, nil
}
Let’s run this program
Note that the output will be different every time you run this program
Output
Initial Board
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 a,b|
-------------------------------------------------------------
Player with Id:a moved from position:1 to position:2 after rolling dice with num:1
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 a|1 b|
-------------------------------------------------------------
Player with Id:b moved from position:1 to position:6 after rolling dice with num:5
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 b|5 .|4 .|3 .|2 a|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:2 to position:5 after rolling dice with num:3
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 b|5 a|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:6 to position:11 after rolling dice with num:5
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 b|
|10 .|9 .|8 .|7 .|6 .|5 a|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:5 to position:10 after rolling dice with num:5
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 b|
|10 a|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:11 to position:15 after rolling dice with num:4
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 b|14 .|13 .|12 .|11 .|
|10 a|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:10 to position:14 after rolling dice with num:4
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 b|14 a|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:15 to position:21 after rolling dice with num:6
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 b|
|20 .|19 .|18 .|17 .|16 .|15 .|14 a|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:14 to position:20 after rolling dice with num:6
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 b|
|20 a|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:21 to position:24 after rolling dice with num:3
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 b|23 .|22 .|21 .|
|20 a|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:20 to position:25 after rolling dice with num:5
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 a|24 b|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:24 to position:26 after rolling dice with num:2 and then to position:36. Climbed by ladder, ladderStart:26 ladderEnd:36
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 b|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 a|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:25 to position:27 after rolling dice with num:2
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 b|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 a|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:36 to position:37 after rolling dice with num:1 and then to position:57. Climbed by ladder, ladderStart:37 ladderEnd:57
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 b|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 a|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:27 to position:28 after rolling dice with num:1
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 b|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 a|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:57 to position:62 after rolling dice with num:5
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 b|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 a|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:28 to position:31 after rolling dice with num:3
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 b|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 a|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:62 to position:63 after rolling dice with num:1
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 b|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 a|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:31 to position:34 after rolling dice with num:3
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 b|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 a|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:63 to position:68 after rolling dice with num:5
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 b|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 a|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:34 to position:35 after rolling dice with num:1 and then to position:25. Bit by snake, snakeStart:35 snakeEnd:25
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 b|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 a|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:68 to position:72 after rolling dice with num:4
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 b|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 a|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:25 to position:30 after rolling dice with num:5
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 b|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 a|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:72 to position:75 after rolling dice with num:3
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 b|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 a|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:30 to position:36 after rolling dice with num:6
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 b|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 a|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:75 to position:76 after rolling dice with num:1
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 b|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 a|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:36 to position:37 after rolling dice with num:1 and then to position:57. Climbed by ladder, ladderStart:37 ladderEnd:57
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 b|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 a|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:76 to position:80 after rolling dice with num:4
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 b|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 a|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:57 to position:59 after rolling dice with num:2
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 b|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 a|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:80 to position:86 after rolling dice with num:6
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 b|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 a|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:59 to position:62 after rolling dice with num:3
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 b|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 a|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:86 to position:92 after rolling dice with num:6
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 b|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 a|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:62 to position:63 after rolling dice with num:1
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 b|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 a|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:92 to position:95 after rolling dice with num:3
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 b|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 .|68 .|67 .|66 .|65 .|64 .|63 a|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:63 to position:69 after rolling dice with num:6
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 b|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 a|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:95 to position:95 after rolling dice with num:6
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 b|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 .|69 a|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:a moved from position:69 to position:70 after rolling dice with num:1
-------------------------------------------------------------
|100 .|99 .|98 .|97 .|96 .|95 b|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 a|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Player with Id:b moved from position:95 to position:100 after rolling dice with num:5
Game Finished
Players with ID:b won
-------------------------------------------------------------
|100 b|99 .|98 .|97 .|96 .|95 .|94 .|93 .|92 .|91 .|
|90 .|89 .|88 .|87 .|86 .|85 .|84 .|83 .|82 .|81 .|
|80 .|79 .|78 .|77 .|76 .|75 .|74 .|73 .|72 .|71 .|
|70 a|69 .|68 .|67 .|66 .|65 .|64 .|63 .|62 .|61 .|
|60 .|59 .|58 .|57 .|56 .|55 .|54 .|53 .|52 .|51 .|
|50 .|49 .|48 .|47 .|46 .|45 .|44 .|43 .|42 .|41 .|
|40 .|39 .|38 .|37 .|36 .|35 .|34 .|33 .|32 .|31 .|
|30 .|29 .|28 .|27 .|26 .|25 .|24 .|23 .|22 .|21 .|
|20 .|19 .|18 .|17 .|16 .|15 .|14 .|13 .|12 .|11 .|
|10 .|9 .|8 .|7 .|6 .|5 .|4 .|3 .|2 .|1 .|
-------------------------------------------------------------
Conclusion
This is all about the low-level design of the Snake and Ladder program. Hope you have liked this article. Please share the feedback in the comments.
Note: Check out our system design tutorial series System Design Questions