Exemplo n.º 1
0
 /// <summary>
 /// 勝ちと負けを反転させて返す。
 /// </summary>
 /// <param name="result"></param>
 /// <returns></returns>
 public static MoveGameResult Not(this MoveGameResult result)
 {
     return
         (result == MoveGameResult.WIN  ? MoveGameResult.LOSE :
          result == MoveGameResult.LOSE ? MoveGameResult.WIN  :
          result);
 }
Exemplo n.º 2
0
        /// <summary>
        /// MoveGameResultをUSIプロトコルの"gameover"で用いる文字列として返す
        /// </summary>
        /// <param name="result"></param>
        /// <returns></returns>
        public static string ToUsi(this MoveGameResult result)
        {
            switch (result)
            {
            case MoveGameResult.DRAW: return("draw");

            case MoveGameResult.WIN: return("win");

            case MoveGameResult.LOSE: return("lose");

            default: return("unknown");
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// 対局結果のSpriteを取得。
        ///
        /// result == WIN / LOSE / DRAWのいずれかであること。
        /// </summary>
        /// <param name="result"></param>
        /// <returns></returns>
        public static Sprite GameResult(MoveGameResult result)
        {
            var imageManager = TheApp.app.ImageManager;

            switch (result)
            {
            case MoveGameResult.WIN:  return(new Sprite(imageManager.GameWinImage.image));

            case MoveGameResult.LOSE: return(new Sprite(imageManager.GameLoseImage.image));

            case MoveGameResult.DRAW: return(new Sprite(imageManager.GameDrawImage.image));

            default: return(null);
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// 先手から見た勝敗文字列を返す。
        ///
        /// 駒落ちのときは、出力する文字列を「先手」「後手」から、「上手」「下手」に変更する。
        /// </summary>
        /// <param name=""></param>
        /// <returns></returns>
        public static string Pretty(this MoveGameResult result, bool handicapped)
        {
            switch (result)
            {
            case MoveGameResult.WIN: return(handicapped ? "下手勝ち":"先手勝ち");

            case MoveGameResult.LOSE: return(handicapped ? "上手勝ち":"後手勝ち");

            case MoveGameResult.DRAW: return("引き分け");

            case MoveGameResult.UNKNOWN: return("");    // 中断などで勝敗がついていない。

            default: return("");
            }
        }
Exemplo n.º 5
0
 /// <summary>
 /// "gameover"文字列をエンジン側に送信する。
 /// </summary>
 /// <param name="result"></param>
 public void SendGameOver(MoveGameResult result)
 {
     Engine.SendGameOver(result);
 }
Exemplo n.º 6
0
 /// <summary>
 /// 終局のメッセージをエンジン側に送信する
 /// </summary>
 /// <param name="move"></param>
 public void SendGameOver(MoveGameResult result)
 {
     SendCommand("gameover " + result.ToUsi());
     ChangeState(UsiEngineState.GameOver);
 }