# Rainbow Baseball

The colors are represented by integers, between `0` and `amount of bases -1`. The hole is represented by the special value `-1`. The color of each base is its rank. So base `1` is of color `1`. In the graphical interface, the base `0` is the dark blue one while the base `1` is the fuscia one.

Once every players on the field are in their home base, the hole should be in the last base, that is of rank `getBasesAmount()-1`.

## Functions to retrieve the world's dimensions

    [!java|c]int [/!]getBasesAmount() [!scala]:Int[/!]

Returns the amount of bases on this field.

    [!java|c]int [/!]getPositionsAmount() [!scala]:Int[/!]

Returns the amount of player's positions per base on this field.

## Functions to retrieve the world's state

    [!java|c]int [/!]getHoleBase() [!scala]:Int[/!]

Returns the base in which the hole is located.

    [!java|c]int [/!]getHolePosition() [!scala]:Int[/!]

Returns the hole position within its base

    [!java|c]int [/!]getPlayerColor([!java|c]int [/!]base[!scala]:Int[/!], [!java|c]int [/!]position[!scala]:Int[/!])  [!scala]:Int[/!]

Returns the color of the player at a given location.

    [!java]boolean [/!][!c]int [/!]isSorted()  [!scala]:Boolean[/!]

Returns whether all players of the field are at home.

    [!java]boolean [/!][!c]int [/!]isBaseSorted([!java|c]int [/!]base)  [!scala]:Boolean[/!]

Returns whether all players of a given base are at home.

    [!java]boolean [/!][!c]int [/!]isSelected()  [!scala]:Boolean[/!]

Returns whether the current world is selected in the interface.

## Functions to change the world

    [!java|c]void [/!]move([!java|c]int [/!]base[!scala]:Int[/!], [!java|c]int [/!]position[!scala]:Int[/!])

Moves a given player into the hole. This throws an IllegalArgumentException if the specified player is not near the hole (at most one base away).