public virtual PlaceResult Place(IPlayer player, IRef referee) { string placePos = player.getMove("Select place position: "); if (!referee.isValidPlacement(placePos, player, this)) { return(PlaceResult.Invalid); } board[placePos].changeState(player.playerID); player.Placed(); if (isInMill(placePos)) { return(PlaceResult.MillMade); } else { return(PlaceResult.Done); } }