Exemplo n.º 1
0
 /// <summary>Unicode表における一つ前のcodeを返す</summary>
 /// <param name="hand">対象の手</param>
 /// <returns>前の手</returns>
 public Hands.Unicode Previous(Hands.Unicode hand)
 {
     System.Collections.Generic.IEnumerable <Hands.Unicode> hands = Enum.GetValues(typeof(Hands.Unicode)).Cast <Hands.Unicode>();
     if (hand == Enum.GetValues(typeof(Hands.Unicode)).Cast <Hands.Unicode>().First())
     {
         return(hands.Last());
     }
     return(hands.Where(e => (int)e < (int)hand).OrderBy(e => e).Last());
 }
Exemplo n.º 2
0
 public void Play()
 {
     this.writer.Start(Message.Instance.Start());
     Hands.Unicode player = HandMaker.Instance.Random();
     Hands.Unicode npc    = HandMaker.Instance.Random();
     this.writer.Hand(Message.Instance.Hand(player, npc));
     Rule.Result result = Rule.Instance.Judge(player, npc);
     this.writer.Result(Message.Instance.Result(result));
 }
        public void Judge_vs3_ReturnMessage(Hands.Unicode p1, Hands.Unicode p2, Hands.Unicode p3, string expected)
        {
            var participants = new List <Hands.Unicode>()
            {
                p1, p2, p3
            };
            var actual = Janken.Message.Instance.Hand(participants);

            Assert.AreEqual(expected, actual);
        }
Exemplo n.º 4
0
 /// <summary>Unicode表における一つ次のcodeを返す</summary>
 /// <param name="hand">対象の手</param>
 /// <returns>次の手</returns>
 public Hands.Unicode Next(Hands.Unicode hand)
 {
     // https://stackoverflow.com/questions/642542/how-to-get-next-or-previous-enum-value-in-c-sharp
     // https://stackoverflow.com/questions/11222256/string-does-not-contain-a-definition-for-cast
     System.Collections.Generic.IEnumerable <Hands.Unicode> hands = Enum.GetValues(typeof(Hands.Unicode)).Cast <Hands.Unicode>();
     if (hand == Enum.GetValues(typeof(Hands.Unicode)).Cast <Hands.Unicode>().Last())
     {
         return(hands.First());
     }
     return(hands.Where(e => (int)e > (int)hand).OrderBy(e => e).First());
 }
        public void Judge_vs3_ReturnResult(Hands.Unicode p1, Hands.Unicode p2, Hands.Unicode p3, Rule.Result r1, Rule.Result r2, Rule.Result r3)
        {
            var input = new List <Hands.Unicode>()
            {
                p1, p2, p3
            };
            var actual   = Rule.Instance.Judge(input);
            var expected = new List <Rule.Result>()
            {
                r1, r2, r3
            };

            Assert.That(expected, Is.EqualTo(actual));
        }
        public void Judge_vs2_ReturnResult(Hands.Unicode player, Hands.Unicode npc, Rule.Result playerResult, Rule.Result npcResult)
        {
            var input = new List <Hands.Unicode>()
            {
                player, npc
            };
            var actual   = Rule.Instance.Judge(input);
            var expected = new List <Rule.Result>()
            {
                playerResult, npcResult
            };

            Assert.That(expected, Is.EqualTo(actual));
        }
 /// <summary>ゲームの勝敗判定を返す(Player vs NPC)</summary>
 /// <param name="player">プレーヤの手</param>
 /// <param name="npc">NPCの手</param>
 /// <returns>プレーヤの勝敗結果</returns>
 public Rule.Result Judge(Hands.Unicode player, Hands.Unicode npc)
 {
     if (player == npc)
     {
         return(Rule.Result.Draw);
     }
     else if (player == Hands.Instance.Winable(npc))
     {
         return(Rule.Result.Win);
     }
     else
     {
         return(Rule.Result.Lose);
     }
 }
Exemplo n.º 8
0
        }                                                       // Start Rock–paper–scissors

        /// <summary>手を返す</summary>
        /// <param name="player">Playerの手</param>
        /// <param name="npc">NPCの手</param>
        /// <returns>手</returns>
        public string Hand(Hands.Unicode player, Hands.Unicode npc)
        {
            return("You" + Convert.ToChar((int)player) + " " + Convert.ToChar((int)npc) + "NPC");
        }
        public void Judge_vsNPC_ReturnResult(Hands.Unicode player, Hands.Unicode npc, Rule.Result expected)
        {
            var actual = Rule.Instance.Judge(player, npc);

            Assert.AreEqual(expected, actual);
        }
Exemplo n.º 10
0
 /// <summary>指定した手と引き分ける手を返す</summary>
 /// <param name="hand">対象の手</param>
 /// <returns>引き分ける手</returns>
 public Hands.Unicode Drawable(Hands.Unicode hand)
 {
     return(hand);
 }
Exemplo n.º 11
0
 /// <summary>指定した手に負ける手を返す</summary>
 /// <param name="hand">対象の手</param>
 /// <returns>勝てる手</returns>
 public Hands.Unicode Losable(Hands.Unicode hand)
 {
     return(Previous(hand));
 }
Exemplo n.º 12
0
 /// <summary>指定した手に勝てる手を返す</summary>
 /// <param name="hand">対象の手</param>
 /// <returns>勝てる手</returns>
 public Hands.Unicode Winable(Hands.Unicode hand)
 {
     return(Next(hand));
 }
        public void Hand_vsNPC_ReturnMessage(Hands.Unicode player, Hands.Unicode npc, string expected)
        {
            var actual = Janken.Message.Instance.Hand(player, npc);

            Assert.AreEqual(expected, actual);
        }