Exemple #1
0
        public IEnumerator sorcererApprenticeTest()
        {
            THHGame game = TestGameflow.initGameWithoutPlayers(null, new GameOption()
            {
                shuffle = false
            });

            game.createPlayer(0, "玩家0", game.getCardDefine <TestMaster>(),
                              Enumerable.Repeat(game.getCardDefine <FireBall>(), 29).Cast <CardDefine>()
                              .Concat(Enumerable.Repeat(game.getCardDefine <SorcererApprentice>(), 1).Cast <CardDefine>()));
            game.createPlayer(1, "玩家1", game.getCardDefine <TestMaster>(),
                              Enumerable.Repeat(game.getCardDefine <FireBall>(), 29).Cast <CardDefine>()
                              .Concat(Enumerable.Repeat(game.getCardDefine <SorcererApprentice>(), 1).Cast <CardDefine>()));

            game.skipTurnUntil(() =>
                               game.currentPlayer == game.players[0] &&
                               game.players[0].gem >= game.getCardDefine <SorcererApprentice>().cost&&
                               game.players[0].hand.Any(c => c.define is SorcererApprentice));
            Assert.True(game.players[0].hand.Where(c => c.define is FireBall).All(c => c.getCost(game) == 4)); //火球术全是4费
            var task = game.players[0].cmdUse(game, game.players[0].hand.getCard <SorcererApprentice>());      //使用哀绿

            yield return(TestHelper.waitTask(task));

            Assert.True(game.players[0].field.Any(c => c.define is SorcererApprentice));
            Assert.True(game.players[0].hand.Where(c => c.define is FireBall).All(c => c.getCost(game) == 3)); //火球术全是3费
            task = game.players[0].draw(game);                                                                 //抽一张火球
            yield return(TestHelper.waitTask(task));

            Card card = game.players[0].hand.right;

            Assert.AreEqual(3, card.getCost(game));
            task = card.pile.moveTo(game, card, game.players[0].grave);//把火球送入墓地
            yield return(TestHelper.waitTask(task));

            Assert.AreEqual(4, card.getCost(game));
            yield return(game.players[0].field[0].die(game).wait());//杀死哀绿

            Assert.True(game.players[0].hand.getCards <FireBall>().All(c => c.getCost(game) == 4));
            yield return(game.players[0].draw(game).wait());//再抽一张火球术

            Assert.True(game.players[0].hand.getCards <FireBall>().All(c => c.getCost(game) == 4));
        }
 public static void skipUntilCanUse(this THHGame game, THHPlayer you, Card card)
 {
     game.skipTurnUntil(() => game.currentPlayer == you && you.gem >= card.getCost(game));
 }