Пример #1
0
        public Tuple <Settings, GameState <State, Move> > ToClientSettingsAndState(FiatPlayer player, Settings settings, GameState <State, Move> state)
        {
            var s = state == null
                ? null
                : new GameState <State, Move> {
                State = state.State, FutureMove = state.FutureMove, Stage = state.Stage
            };

            return(new Tuple <Settings, GameState <State, Move> >(settings, s));
        }
Пример #2
0
 public Settings AddPlayer(FiatPlayer player, Settings settings)
 {
     if (settings.Players.Count >= 2)
     {
         return(null);
     }
     else
     {
         settings.Players.Add(player);
         return(settings);
     }
 }
Пример #3
0
        public bool IsPlayersTurn(FiatPlayer player, Settings settings, GameState <State, Move> state, Move move)
        {
            Player?p = null;

            if (settings.XPlayer.Equals(player))
            {
                p = Player.X;
            }
            if (settings.OPlayer.Equals(player))
            {
                p = Player.O;
            }
            return(p == state.State.Turn);
        }
Пример #4
0
 public bool IsMoveValid(FiatPlayer player, Settings settings, GameState <State, Move> state, Move move)
 {
     if (move is Forfeit)
     {
         return(true);
     }
     else if (move is PlaceMove)
     {
         PlaceMove pMove = (PlaceMove)move;
         return(state.State.ValidMoves().OfType <PlaceMove>().Any(p => p.Spot == pMove.Spot));
     }
     else
     {
         return(false);
     }
 }
Пример #5
0
 public GameState <State, Move> MakeMove(FiatPlayer player, Settings settings, GameState <State, Move> state, Move move)
 {
     move.MakeMove(state.State);
     if (state.State.Winner != null || state.State.Tied)
     {
         state.Stage      = GameStage.Done;
         state.FutureMove = null;
     }
     if (state.Stage == GameStage.Playing)
     {
         state.FutureMove = new FutureMove <Move>
         {
             Move     = new Forfeit(),
             DateTime = DateTime.Now + settings.TimePerMove
         }
     }
     ;
     return(state);
 }