示例#1
0
 public override void DoWork(IEnumerable<string> args)
 {
     if (Utils.CheckArgs(ArgsNeed, args.Count()))
     {
         if (Utils.IsInGame())
         {
             var request = new MoveRequest
             {
                 From = args.ToArray()[0],
                 To = args.ToArray()[1],
                 InWhom = null,
                 Player = CurrentUser.Name,
                 GameId = CurrentUser.CurrentGame.Value
             };
             var response = ServerProvider.MakeRequest(request);
             switch (response.Status)
             {
                 case Statuses.Ok:
                     Console.WriteLine("Move done.");
                     CurrentUser.LastMove = new Move
                     {
                         From = request.From,
                         InWhom = null,
                         Player = CurrentUser.Name,
                         To = request.To
                     };
                     break;
                 case Statuses.NeedPawnPromotion:
                     Utils.Print("This pawn need promotion!");
                     Utils.Print("Your choise? (r - rook, n - knight, b - bishop, q - queen, c - cancel):");
                     CurrentUser.LastMove = new Move
                     {
                         From = request.From,
                         InWhom = null,
                         Player = CurrentUser.Name,
                         To = request.To
                     };
                     CurrentUser.NeedPawnPromotion = true;
                     break;
                 case Statuses.NoUser:
                     Console.WriteLine("No opponent yet.");
                     break;
                 case Statuses.OpponentTurn:
                     Console.WriteLine("Now is opponent turn.");
                     break;
                 case Statuses.WrongMove:
                     Console.WriteLine("Wrong move.");
                     break;
                 case Statuses.WrongMoveNotation:
                     Console.WriteLine("Wrong move notation.");
                     break;
                 default:
                     Console.WriteLine("Wrong status.");
                     break;
             }
         }
     }
 }
示例#2
0
 public ActionResult DoMove()
 {
     var command = new MoveRequest
     {
         From = Request.Params["From"],
         To = Request.Params["To"],
         Player = User.Identity.Name,
         GameId = int.Parse(Request.Params["GameID"]),
         InWhom = Request.Params["InWhom"],
     };
     var response = ServerProvider.MakeRequest(command);
     string ret;
     switch (response.Status)
     {
         case Statuses.Ok:
             ret = "";
             break;
         case Statuses.NeedPawnPromotion:
             ret = "";
             break;
         case Statuses.NoUser:
             ret = "No opponent yet.";
             break;
         case Statuses.NotAuthorized:
             ret = "You not authorized.";
             break;
         case Statuses.OpponentTurn:
             ret = "Now is opponent turn.";
             break;
         case Statuses.WrongMove:
             ret = "Wrong move.";
             break;
         case Statuses.WrongMoveNotation:
             ret = "Wrong move notation.";
             break;
         default:
             ret = "Wrong status.";
             break;
     }
     return Json(ret, JsonRequestBehavior.AllowGet);
 }
示例#3
0
        public static void CommandProcess()
        {
            while (IsContinue)
            {
                isStuffDone = false;
                Console.Write("> ");
                var commandInput = Console.ReadLine();

                if (CurrentUser.NeedPeaseAnswer)
                {
                    if (!string.IsNullOrWhiteSpace(commandInput))
                    {
                        switch (commandInput.ToLower())
                        {
                            case "yes":
                                if (Utils.IsInGame())
                                {
                                    var request = new AcceptPeaceRequest
                                    {
                                        From = CurrentUser.Name,
                                        GameID = CurrentUser.CurrentGame.Value
                                    };
                                    var response = ServerProvider.MakeRequest<AcceptPeaceResponse>(request);
                                    if (response.Status == Statuses.Ok)
                                    {
                                        Console.WriteLine("You accept peace.");
                                        CurrentUser.NeedPeaseAnswer = false;
                                        CurrentUser.NeedPawnPromotion = false;
                                        CurrentUser.CurrentGame = null;
                                    }
                                }
                                break;
                            case "no":
                                if (Utils.IsInGame())
                                {
                                    var request = new DeclinePeaceRequest
                                    {
                                        From = CurrentUser.Name,
                                        GameID = CurrentUser.CurrentGame.Value
                                    };
                                    var response = ServerProvider.MakeRequest<DeclinePeaceResponse>(request);
                                    if (response.Status == Statuses.Ok)
                                    {
                                        Console.WriteLine("You decline peace.");
                                        CurrentUser.NeedPeaseAnswer = false;
                                    }
                                }
                                break;
                            default:
                                Console.WriteLine("Wrong answer!");
                                Console.WriteLine("You argee? (yes/no):");
                                break;
                        }
                    }
                    isStuffDone = true;
                }
                if (!isStuffDone && CurrentUser.NeedPawnPromotion && !CurrentUser.NeedPeaseAnswer)
                {
                    if (!string.IsNullOrWhiteSpace(commandInput))
                    {
                        if (commandInput.Length == 1 && "rnbqc".IndexOf(commandInput.ToLower()) >= 0)
                        {
                            if (commandInput == "c")
                            {
                                Console.WriteLine("Okay then.");
                                CurrentUser.NeedPawnPromotion = false;
                            }
                            else
                            {
                                if (Utils.IsInGame())
                                {
                                    var request = new MoveRequest
                                    {
                                        From = CurrentUser.LastMove.From,
                                        To = CurrentUser.LastMove.To,
                                        InWhom = commandInput[0].ToString(),
                                        Player = CurrentUser.Name,
                                        GameId = CurrentUser.CurrentGame.Value
                                    };
                                    var response = ServerProvider.MakeRequest(request);
                                    switch (response.Status)
                                    {
                                        case Statuses.Ok:
                                            Console.WriteLine("Move done.");
                                            CurrentUser.LastMove = new Move
                                            {
                                                From = request.From,
                                                InWhom = null,
                                                Player = CurrentUser.Name,
                                                To = request.From
                                            };
                                            CurrentUser.NeedPawnPromotion = false;
                                            break;
                                        case Statuses.WrongMove:
                                            Console.WriteLine("Wrong move.");
                                            break;
                                        default:
                                            Console.WriteLine("Wrong status.");
                                            break;
                                    }
                                }
                            }
                        }
                        else
                        {
                            Console.WriteLine("Wrong choise!");
                            Console.WriteLine("Your choise? (r - rook, n - knight, b - bishop, q - queen, c - cancel):");
                        }
                    }
                    isStuffDone = true;
                }
                if (!(isStuffDone || CurrentUser.NeedPawnPromotion || CurrentUser.NeedPeaseAnswer))
                {
                    while (commandInput.IndexOf("  ") >= 0)
                    {
                        commandInput = commandInput.Replace("  ", " ");
                    }
                    if (String.IsNullOrWhiteSpace(commandInput)) continue;
                    if (commandInput[0] == ' ')
                    {
                        commandInput = commandInput.Substring(1);
                    }
                    if (commandInput[commandInput.Length - 1] == ' ')
                    {
                        commandInput = commandInput.Substring(0, commandInput.Length - 1);
                    }
                    if (!String.IsNullOrWhiteSpace(commandInput))
                    {
                        var commandWords = commandInput.Split(' ');
                        var isKnownCommand = false;
                        foreach (var element in CommandFactory.Instance.AllCommands)
                        {
                            if (!String.IsNullOrWhiteSpace(commandWords[0]))
                            {
                                if (commandWords[0].ToLower() == element.Help.Name)
                                {
                                    element.DoWork(commandWords.Skip(1));
                                    isKnownCommand = true;
                                }
                            }
                        }
                        if (!isKnownCommand)
                        {
                            Console.WriteLine("Unknown command: '" + commandWords[0] + '\'');
                        }
                    }
                }
            }
        }