Assignment #1. Toying with Swift

Implement mechanics of the board game of your choice:

There are hundreds of thousands of different games out there. No duplicates please.

Your program should implement basic FSM flow of the game. The result should be a playground file that prints game session log:

Started a new game of Snakes and Ladders
Alice rolls the dice
Dice roll is a 3
Alice moves to 3
Alice went up a ladder
Maria rolls the dice
Dice roll is a 5
Maria moves to 5
Alex rolls the dice
Dice roll is a 4
Alex moves to 4
Ivan rolls the dice
Dice roll is a 5
Ivan moves to 5

There is no need to implement complex AI, use random or greedy strategy.

You can port your game from CS253 to Swift as this assignment.

Read the style guide before you start.

Credit Breakdown
It uses delegates and Observer pattern 0...5
It uses protocols to define most of the game's objects behaviour 0...5