Skip to content

Welcome to Tech by Example

Menu
  • Home
  • Posts
  • System Design Questions
Menu

System Design of Snake and Ladder game

Posted on March 3, 2023March 3, 2023 by admin

Table of Contents

  • Overview
  • All Actors in Snake and Ladder Game
  • Requirements Analysis
  • UML Diagram
  • Low-Level Design
  • Full Working Code
  • Full Working Code in One File
  • Conclusion

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.

Snake and Ladder Game UML Diagram
Snake and Ladder Game UML Diagram

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

©2025 Welcome to Tech by Example | Design: Newspaperly WordPress Theme