public override GameCard[] DealHoles()
 {
     var set = new GameCard[2];
     set[0] = m_Deck.Pop();
     set[1] = m_Deck.Pop();
     return set;
 }
Ejemplo n.º 2
0
    public void initialize()
    {
        // to be adapted to GUI

        for (int i=0; i<size; i++){
            int id = Random.Range(100, 116);
            gamePanel[i] = new GameCard(id, i, false);
            gamePanel[++i] = new GameCard(id, i, false);
        }
        print("initialize finished");
    }
Ejemplo n.º 3
0
	public void AddToBoard (GameCard card) {
		board.Add(card);
	}
Ejemplo n.º 4
0
 public void GivePlayerCard(GameCard cardToGive)
 {
     playerDeck.unactiveDeck.Add(cardToGive.relatedCard);
 }
Ejemplo n.º 5
0
 public void AttackHand(HandController defender, GameCard attackCard)
 {
     gameCards.Remove(attackCard);
     defender.RecieveAttack(attackCard);
 }
Ejemplo n.º 6
0
 public Result IsGameCardInserted(out bool isInserted)
 {
     isInserted = GameCard.IsGameCardInserted();
     return(Result.Success);
 }
Ejemplo n.º 7
0
        private void FourOfAKindCheck(GameCard playerFirstCard, GameCard playerSecondCard, GameCard[] cardsOnTable, IPlayer player)
        {
            var allcards = new GameCard[cardsOnTable.Length + 2];
            allcards[0] = playerFirstCard;
            allcards[1] = playerSecondCard;

            for (int i = 2, counter = 0; i < allcards.Length; i++, counter++)
            {
                allcards[i] = cardsOnTable[counter];
            }

            for (int i = 2; i < 15; i++)
            {
                var cardsGroupedByRank = allcards.Where(c => c.Rank == i);
                if (cardsGroupedByRank.Count() == 4)
                {
                    var firstCard = cardsGroupedByRank.First();
                    player.PokerHandMultiplier = 7;
                    player.CardPower = firstCard.Rank * 4 + player.PokerHandMultiplier * 100;
                }
            }
        }
Ejemplo n.º 8
0
 public void onNewHandCard( GameCard c, int slotIndex )
 {
     CardUI card = newHandCard ( c.code, buildSlots[slotIndex].transform.position );
     card.handColumn = numHandColumns-1;
     adjustColumn (numHandColumns-1, true);
 }
Ejemplo n.º 9
0
        private void TwoPairCheck(GameCard firstCard, GameCard secondCard, GameCard[] cardsOnTable, IPlayer player)
        {
            int firstCardPairCount = cardsOnTable.Count(card => firstCard.Rank == card.Rank);
            int secondCardPairCount = cardsOnTable.Count(card => secondCard.Rank == card.Rank);

            if (firstCardPairCount > 1 || secondCardPairCount > 1)
            {
                return;
            }

            if (firstCardPairCount == 1 && secondCardPairCount == 1 && firstCard.Rank == secondCard.Rank)
            {
                return;
            }

            int pairsOnTable = 0;
            int highestTablePairRank = 0;

            for (int startCardIndex = 0; startCardIndex < cardsOnTable.Length - 1; startCardIndex++)
            {
                int pairCount = 0;

                for (int endCardIndex = cardsOnTable.Length - 1; endCardIndex > 0; endCardIndex--)
                {
                    if (endCardIndex == startCardIndex)
                    {
                        continue;
                    }

                    if (cardsOnTable[startCardIndex].Rank != cardsOnTable[endCardIndex].Rank)
                    {
                        continue;
                    }

                    pairCount++;

                    if (highestTablePairRank < cardsOnTable[startCardIndex].Rank)
                    {
                        highestTablePairRank = cardsOnTable[startCardIndex].Rank;
                    }
                }

                if (pairCount > 1)
                {
                    return;
                }

                if (pairCount == 1)
                {
                    pairsOnTable++;
                }
            }

            switch (pairsOnTable)
            {
                case 0:
                    if (firstCardPairCount == 1 && secondCardPairCount == 1)
                    {
                        player.PokerHandMultiplier = 2;
                        player.CardPower = firstCard.Rank * 2 + secondCard.Rank * 2 + player.PokerHandMultiplier * 100;
                    }

                    break;
                case 1:
                    if (firstCard.Rank == secondCard.Rank)
                    {
                        player.PokerHandMultiplier = 2;
                        player.CardPower = firstCard.Rank * 2 + highestTablePairRank * 2 + player.PokerHandMultiplier * 100;
                    }
                    else if (firstCardPairCount == 1 && secondCardPairCount != 1)
                    {
                        player.PokerHandMultiplier = 2;
                        player.CardPower = firstCard.Rank * 2 + highestTablePairRank * 2 + player.PokerHandMultiplier * 100;
                    }
                    else if (secondCardPairCount == 1 && firstCardPairCount != 1)
                    {
                        player.PokerHandMultiplier = 2;
                        player.CardPower = secondCard.Rank * 2 + highestTablePairRank * 2 + player.PokerHandMultiplier * 100;
                    }
                    else if (secondCardPairCount == 1 && firstCardPairCount == 1)
                    {
                        int highestRank;
                        int secondHighestRank;

                        if (firstCard.Rank > secondCard.Rank)
                        {
                            highestRank = firstCard.Rank;
                            secondHighestRank = secondCard.Rank;
                        }
                        else
                        {
                            highestRank = secondCard.Rank;
                            secondHighestRank = firstCard.Rank;
                        }

                        if (secondHighestRank < highestTablePairRank)
                        {
                            secondHighestRank = highestTablePairRank;
                        }

                        player.PokerHandMultiplier = 2;
                        player.CardPower = highestRank * 2 + secondHighestRank * 2 +  player.PokerHandMultiplier * 100;
                    }

                    break;
                case 2:
                    if (firstCard.Rank == secondCard.Rank)
                    {
                        int highestCardHandOrTable = Math.Max(highestTablePairRank, Math.Max(firstCard.Rank, secondCard.Rank));
                        player.PokerHandMultiplier = 2;
                        player.CardPower = highestCardHandOrTable * 4 + player.PokerHandMultiplier * 100;
                    }
                    else if (firstCardPairCount == 1)
                    {
                        int highestCardHandOrTable = firstCard.Rank > highestTablePairRank ? firstCard.Rank : highestTablePairRank;
                        player.PokerHandMultiplier = 2;
                        player.CardPower = highestCardHandOrTable * 4 + player.PokerHandMultiplier * 100;
                    }
                    else if (secondCardPairCount == 1)
                    {
                        int highestCardHandOrTable = secondCard.Rank > highestTablePairRank ? secondCard.Rank : highestTablePairRank;
                        player.PokerHandMultiplier = 2;
                        player.CardPower = highestCardHandOrTable * 4 + player.PokerHandMultiplier * 100;
                    }
                    else
                    {
                        player.PokerHandMultiplier = 2;
                        player.CardPower = highestTablePairRank * 4 + player.PokerHandMultiplier * 100;
                    }

                    break;
            }
        }
Ejemplo n.º 10
0
 public int GetCardIndex(GameCard card)
 {
     return(GetCardIndex(card.uid));
 }
Ejemplo n.º 11
0
        private void StraightCheck(GameCard firstCard, GameCard secondCard, GameCard[] cardsOnTable, IPlayer player)
        {
            int firstCardPairs = cardsOnTable.Count(card => firstCard.Rank == card.Rank);
            int secondCardPairs = cardsOnTable.Count(card => secondCard.Rank == card.Rank);
            List<int> allCards = new List<int>();

            if (firstCardPairs == 0)
            {
                if (firstCard.Rank == 14)
                {
                    allCards.Add(firstCard.Rank);
                    allCards.Add(1);
                }
                else
                {
                    allCards.Add(firstCard.Rank);
                }
            }

            if (secondCardPairs == 0)
            {
                if (secondCard.Rank == 14)
                {
                    allCards.Add(secondCard.Rank);
                    allCards.Add(1);
                }
                else
                {
                    allCards.Add(firstCard.Rank);
                }
            }

            if (cardsOnTable.Any(card => card.Rank == 14))
            {
                allCards.Add(1);
            }

            allCards.AddRange(cardsOnTable.Select(card => card.Rank));

            allCards.Sort();

            int countConsecutives = 0;
            int highestCardRankInStreight = 0;

            for (int startCard = 0; startCard < allCards.Count - 1; startCard++)
            {
                if (allCards[startCard] + 1 == allCards[startCard + 1])
                {
                    countConsecutives++;
                    if (countConsecutives >= 5)
                    {
                        highestCardRankInStreight = allCards[startCard + 1];
                    }
                }
            }

            if (countConsecutives < 5)
            {
                return;
            }

            player.PokerHandMultiplier = 4;
            player.CardPower = highestCardRankInStreight * 4 + player.PokerHandMultiplier * 100;
        }
Ejemplo n.º 12
0
        private void ThreeOfAKindCheck(GameCard firstCard, GameCard secondCard, GameCard[] cardsOnTable, IPlayer player)
        {
            int firstCardThreeOfAKindCount = cardsOnTable.Count(card => firstCard.Rank == card.Rank);
            int secondCardThreeOfAKindCount = cardsOnTable.Count(card => secondCard.Rank == card.Rank);

            if (firstCardThreeOfAKindCount > 2 || secondCardThreeOfAKindCount > 2)
            {
                return;
            }

            if (firstCardThreeOfAKindCount == 2 && secondCardThreeOfAKindCount == 2 && firstCard.Rank == secondCard.Rank)
            {
                return;
            }

            GameCard highestCard = this.GetHighestCardInHand(firstCard, secondCard);

            if (firstCardThreeOfAKindCount == 2 || secondCardThreeOfAKindCount == 2)
            {
                player.PokerHandMultiplier = 3;
                if (firstCardThreeOfAKindCount == 2 && secondCardThreeOfAKindCount != 2)
                {
                    player.CardPower = firstCard.Rank * 4 + player.PokerHandMultiplier * 100;
                }
                else if (firstCardThreeOfAKindCount != 2 && secondCardThreeOfAKindCount == 2)
                {
                    player.CardPower = secondCard.Rank * 4 + player.PokerHandMultiplier * 100;
                }
                else
                {
                    player.CardPower = highestCard.Rank * 4 + player.PokerHandMultiplier * 100;
                }
            }

            if (firstCardThreeOfAKindCount == 1 &&
                secondCardThreeOfAKindCount == 1 &&
                firstCard.Rank == secondCard.Rank)
            {
                player.PokerHandMultiplier = 3;
                player.CardPower = firstCard.Rank * 4 + player.PokerHandMultiplier * 100;
            }

            var tableCardsTreeOfAKind = cardsOnTable
                .GroupBy(card => card.Rank)
                .Select(group => new { Rank = @group.Key, Count = @group.Count() })
                .OrderByDescending(group => @group.Count)
                .First();

            if (tableCardsTreeOfAKind.Count != 3)
            {
                return;
            }

            if (firstCardThreeOfAKindCount == 1 &&
                secondCardThreeOfAKindCount == 1 &&
                firstCard.Rank == secondCard.Rank)
            {
                int highestCardHandOrTable = tableCardsTreeOfAKind.Rank > firstCard.Rank ? tableCardsTreeOfAKind.Rank : firstCard.Rank;
                player.PokerHandMultiplier = 3;
                player.CardPower = highestCardHandOrTable * 4 + player.PokerHandMultiplier * 100;
            }

            if (firstCardThreeOfAKindCount == 0 &&
                secondCardThreeOfAKindCount == 0)
            {
                player.PokerHandMultiplier = 3;
                player.CardPower = tableCardsTreeOfAKind.Rank * 4 + player.PokerHandMultiplier * 100;
            }
        }
Ejemplo n.º 13
0
        private void CheckForFlush(GameCard firstCard, GameCard secondCard, GameCard[] cardsOfSameSuitOnTable, IPlayer player)
        {
            var allcardsOnTableAndPlayers = new GameCard[cardsOfSameSuitOnTable.Length + 2];
            allcardsOnTableAndPlayers[0] = firstCard;
            allcardsOnTableAndPlayers[1] = secondCard;

            var highestCardFromTable = cardsOfSameSuitOnTable.OrderByDescending(c => c.Rank).First();

            for (int i = 2, counter = 0; i < allcardsOnTableAndPlayers.Length; i++, counter++)
            {
                allcardsOnTableAndPlayers[i] = cardsOfSameSuitOnTable[counter];
            }
            var maxCardValue = allcardsOnTableAndPlayers.OrderByDescending(c => c.Rank).First();

            if (cardsOfSameSuitOnTable.Length == 3)
            {
                // check if the 3 cards on the table with the same suit are the same suit with the player's cards
                // takes the most high card by rank and multiplies *500
                if (firstCard.Suit == secondCard.Suit && firstCard.Suit == highestCardFromTable.Suit)
                {
                    player.PokerHandMultiplier = 5;
                    player.CardPower = maxCardValue.Rank + player.PokerHandMultiplier * 100;
                }
                // check if one of the player cards match by suit with the cards on the table
            }
            else if (cardsOfSameSuitOnTable.Length == 4 &&
                     (firstCard.Suit == highestCardFromTable.Suit || secondCard.Suit == highestCardFromTable.Suit))
            {
                if (firstCard.Suit == highestCardFromTable.Suit)
                {
                    var highCardByRank = firstCard.Suit > highestCardFromTable.Suit ? firstCard : highestCardFromTable;
                    player.PokerHandMultiplier = 5;
                    player.CardPower = highCardByRank.Rank + player.PokerHandMultiplier * 100;
                }
                if (secondCard.Suit == highestCardFromTable.Suit && secondCard.Rank > firstCard.Rank)
                {
                    var highCardByRank = secondCard.Suit > highestCardFromTable.Suit ? secondCard : highestCardFromTable;
                    player.PokerHandMultiplier = 5;
                    player.CardPower = highCardByRank.Rank + player.PokerHandMultiplier * 100;
                }
            }

            //check if player's cards match by suit with card on table if so takes the strongest by power and finds CardPower 
            //else takes the strongerst card from the table
            else if (cardsOfSameSuitOnTable.Length == 5)
            {
                if (firstCard.Suit == highestCardFromTable.Suit || secondCard.Suit == highestCardFromTable.Suit)
                {
                    if (firstCard.Suit == highestCardFromTable.Suit)
                    {
                        var highCardByRank = firstCard.Suit > highestCardFromTable.Suit ? firstCard : highestCardFromTable;
                        player.PokerHandMultiplier = 5;
                        player.CardPower = highCardByRank.Rank + player.PokerHandMultiplier * 100;
                    }
                    if (secondCard.Suit == highestCardFromTable.Suit && secondCard.Rank > firstCard.Rank)
                    {
                        var highCardByRank = secondCard.Suit > highestCardFromTable.Suit ? secondCard : highestCardFromTable;
                        player.PokerHandMultiplier = 5;
                        player.CardPower = highCardByRank.Rank + player.PokerHandMultiplier * 100;
                    }
                }
                else
                {
                    player.PokerHandMultiplier = 5;
                    player.CardPower = maxCardValue.Rank + player.PokerHandMultiplier * 100;
                }
            }
        }
Ejemplo n.º 14
0
        private void FlushCheck(GameCard playerFirstCard, GameCard playerSecondCard, GameCard[] cardsOnTable, IPlayer player)
        {
            var cardsOfClubs = cardsOnTable.Where(o => o.Suit == CardSuit.Clubs).ToArray();
            var cardsOfDiamonds = cardsOnTable.Where(o => o.Suit == CardSuit.Diamonds).ToArray();
            var cardsOfHearts = cardsOnTable.Where(o => o.Suit == CardSuit.Hearts).ToArray();
            var cardsOfSpades = cardsOnTable.Where(o => o.Suit == CardSuit.Spades).ToArray();

            if (cardsOfClubs.Length >= 3)
            {
                this.CheckForFlush(playerFirstCard, playerSecondCard, cardsOfClubs, player);
            }

            if (cardsOfDiamonds.Length >= 3)
            {
                this.CheckForFlush(playerFirstCard, playerSecondCard, cardsOfDiamonds, player);
            }

            if (cardsOfHearts.Length >= 3)
            {
                this.CheckForFlush(playerFirstCard, playerSecondCard, cardsOfHearts, player);
            }

            if (cardsOfSpades.Length >= 3)
            {
                this.CheckForFlush(playerFirstCard, playerSecondCard, cardsOfSpades, player);
            }
        }
Ejemplo n.º 15
0
        private void FullHouseCheck(GameCard firstCard, GameCard secondCard, GameCard[] cardsOnTable, IPlayer player)
        {
            List<GameCard> allCards = new List<GameCard>();
            allCards.Add(firstCard);
            allCards.Add(secondCard);
            allCards.AddRange(cardsOnTable);

            var tableCardsGrouped = allCards
                .GroupBy(card => card.Rank)
                .Select(group => new
                {
                    Rank = @group.Key,
                    Count = @group.Count()
                })
                .OrderByDescending(group => @group.Count)
                .ThenByDescending(rank => rank.Rank);

            bool foundTreeOfAKind = false;
            int foundTreeOfAKindRank = 0;

            bool foundTwoOfAKind = false;
            int foundTwoOfAKindRank = 0;


            foreach (var cardGroup in tableCardsGrouped)
            {
                if (cardGroup.Count == 3)
                {
                    foundTreeOfAKind = true;
                    foundTreeOfAKindRank = cardGroup.Rank;
                }

                if (cardGroup.Count == 2)
                {
                    foundTwoOfAKind = true;
                    foundTwoOfAKindRank = cardGroup.Rank;
                    break;
                }
            }

            if (!foundTreeOfAKind || !foundTwoOfAKind)
            {
                return;
            }

            player.PokerHandMultiplier = 6;
            player.CardPower = foundTreeOfAKindRank + foundTwoOfAKindRank / 10 + player.PokerHandMultiplier * 100;

        }
Ejemplo n.º 16
0
 public void RecieveAttack(GameCard attackCard)
 {
     StartCoroutine(coRecieveAttack(attackCard));
 }
Ejemplo n.º 17
0
        private void PairCheck(GameCard firstCard, GameCard secondCard, GameCard[] cardsOnTable, IPlayer player)
        {
            int firstCardPairCount = cardsOnTable.Count(card => firstCard.Rank == card.Rank);
            int secondCardPairCount = cardsOnTable.Count(card => secondCard.Rank == card.Rank);

            int pairsOnTableCount = cardsOnTable
                .GroupBy(card => card.Rank)
                .Select(group => new { Count = @group.Count() })
                .Count(group => @group.Count == 2);


            if ((firstCardPairCount == 1 ^ secondCardPairCount == 1) &&
                firstCard.Rank == secondCard.Rank)
            {
                if (pairsOnTableCount != 1)
                {
                    return;
                }
            }

            if (firstCardPairCount == 1)
            {
                player.PokerHandMultiplier = 0;
                player.CardPower = firstCard.Rank * 4 + player.PokerHandMultiplier * 100;
            }

            if (secondCardPairCount == 1)
            {
                player.PokerHandMultiplier = 0;
                player.CardPower = secondCard.Rank * 4 + player.PokerHandMultiplier * 100;
            }

            var pairOnTableRank = cardsOnTable
                .GroupBy(card => card.Rank)
                .Select(group => new
                {
                    Rank = @group.Key,
                    Count = @group.Count()
                })
                .Where(group => @group.Count == 1)
                .Select(newGroup => newGroup.Rank)
                .First();

            player.PokerHandMultiplier = 0;
            player.CardPower = pairOnTableRank * 4 + player.PokerHandMultiplier * 100;
        }
Ejemplo n.º 18
0
 public void Reset()
 {
     decks       = new List <GameCardDeck>();
     cardQueue   = new Queue();
     currentCard = null;
 }
Ejemplo n.º 19
0
        private void PairFromHandCheck(GameCard firstCard, GameCard secondCard, IEnumerable<GameCard> cardsOnTable, IPlayer player)
        {
            if (firstCard.Rank != secondCard.Rank)
            {
                return;
            }

            int tableCardPairCount = cardsOnTable.Count(card => firstCard.Rank == card.Rank);

            if (tableCardPairCount > 0)
            {
                return;
            }

            player.PokerHandMultiplier = 1;
            player.CardPower = firstCard.Rank * 4 + player.PokerHandMultiplier * 100;
        }
Ejemplo n.º 20
0
 public AfterCardSubArmor(GameCard target, int num, GameCard source)
 {
     Target = target;
     Num    = num;
     Source = source;
 }
Ejemplo n.º 21
0
        private void HighCardCheck(GameCard firstCard, GameCard secondCard, IPlayer player)
        {
            GameCard highestCard = this.GetHighestCardInHand(firstCard, secondCard);

            player.PokerHandMultiplier = -1;
            player.CardPower = highestCard.Rank;
        }
Ejemplo n.º 22
0
 public void RecieveAttack(GameCard card)
 {
     combatZone.AddAttackCard(card);
 }
Ejemplo n.º 23
0
 private GameCard GetHighestCardInHand(GameCard firstCard, GameCard secondCard)
 {
     GameCard highestCard = firstCard.Rank > secondCard.Rank ? firstCard : secondCard;
     return highestCard;
 }
Ejemplo n.º 24
0
 public void RecieveAttack(GameCard attackCard)
 {
     StartCoroutine(coRecieveAttack(attackCard));
 }
Ejemplo n.º 25
0
 /// <summary>
 ///     카드를 생성;
 /// </summary>
 /// <returns></returns>
 public void InitCards()
 {
     for (int i = 0; i < CardTotal; i++)
     {
         Cards[i] = new GameCard();
         Cards[i].GeneratePoint();
     }
 }
Ejemplo n.º 26
0
	public static GameCard[] getAllCards() {
		GameCard[] cards = new GameCard[allCards.Count];
		allCards.Values.CopyTo( cards, 0 );
		return cards;
	}
Ejemplo n.º 27
0
 public AfterCardBoost(GameCard target, int num, GameCard source)
 {
     Target = target;
     Num    = num;
     Source = source;
 }
Ejemplo n.º 28
0
 public void RecieveAttack(GameCard card)
 {
     combatZone.AddAttackCard(card);
 }
Ejemplo n.º 29
0
        private void OnCastCard(ActionCompletedEvent <CastCardCommand> evt)
        {
            GameCard card = evt.Action.CastedCard;

            removeCard(card);
        }
Ejemplo n.º 30
0
	public void RemoveFromBoard (GameCard card) {
		board.Remove(card);
	}
Ejemplo n.º 31
0
 public void GetCardsImages(GameCard[] gameDealtCards)
 {
     for (int i = 0; i < gameDealtCards.Length; i++)
     {
         this.form.DealtCardsFrontImage[i] = Image.FromFile(gameDealtCards[i].CardFrontImageUri);
     }
 }
Ejemplo n.º 32
0
 public void AttackHand(HandController defender, GameCard attackCard)
 {
     gameCards.Remove(attackCard);
     defender.RecieveAttack(attackCard);
 }
Ejemplo n.º 33
0
 public AfterCardSwap(GameCard handCard)
 {
     HandCard = handCard;
 }
Ejemplo n.º 34
0
 IEnumerator coRecieveAttack(GameCard attackCard)
 {
     //attackCard
     yield return(new WaitForSeconds(.25f));
 }
Ejemplo n.º 35
0
        protected override void PlayAIDelayed(GamePlayer player)
        {
            GameCard card = player.Cards.First();
            int      x    = 0;
            int      y    = 0;

            Dictionary <int, int> resultsRow    = new Dictionary <int, int>();
            Dictionary <int, int> resultsColumn = new Dictionary <int, int>();

            resultsColumn.Add(0, 0);
            resultsColumn.Add(1, 0);
            resultsColumn.Add(2, 0);
            resultsColumn.Add(3, 0);
            resultsColumn.Add(4, 0);

            foreach (GameRow row in Board.Rows)
            {
                int sumA = 0;
                foreach (GameCell cell in row.Cells.Where(c => c.IsFull()))
                {
                    sumA += cell.Card.Value;
                    resultsColumn[row.Cells.IndexOf(cell)] += cell.Card.Value;
                }
                resultsRow.Add(Board.Rows.IndexOf(row), sumA);
            }

            if (card.Value <= 3 && player.Id == PlayerA.Id || card.Value > 3 && player.Id == PlayerB.Id)
            {
                foreach (KeyValuePair <int, int> i in resultsRow.OrderByDescending(i => i.Value))
                {
                    if (!Board.Rows[i.Key].IsFull())
                    {
                        x = i.Key;
                        break;
                    }
                }
                foreach (GameCell cell in Board.Rows[x].Cells)
                {
                    if (!cell.IsFull())
                    {
                        break;
                    }
                    y++;
                }
            }
            else
            {
                foreach (KeyValuePair <int, int> i in resultsColumn.OrderByDescending(i => i.Value))
                {
                    if (!Board.Columns[i.Key].IsFull())
                    {
                        y = i.Key;
                        break;
                    }
                }
                foreach (GameRow row in Board.Rows)
                {
                    if (!row.Cells[y].IsFull())
                    {
                        break;
                    }
                    x++;
                }
            }

            Play(player.Id, card.Id, x, y);
        }
Ejemplo n.º 36
0
 public GameCard GetCard(GameCard card)
 {
     return(GetCard(card.uid));
 }
Ejemplo n.º 37
0
 public static IUItoGame newGame( GameCard[] startHand, IGametoUI ui )
 {
     return new BoardManager(startHand, ui);
 }
Ejemplo n.º 38
0
 public void SetCard(GameCard gameCard)
 {
     cards.Add(gameCard);
 }
Ejemplo n.º 39
0
 private BoardManager( GameCard[] startHand, IGametoUI ui )
 {
     hand = new List<GameCard> ();
     foreach (GameCard c in startHand) {
         if( c == null ) Debug.Log( "null card!" );
         hand.Add (c);
     }
     this.ui = ui;
 }
Ejemplo n.º 40
0
 public GetGameCard(GameCard gameCard)
 {
     Suit = gameCard.Suit;
     Rank = gameCard.Rank;
 }
Ejemplo n.º 41
0
 public AfterCardCharm(GameCard target, GameCard source)
 {
     Target = target;
     Source = source;
 }
Ejemplo n.º 42
0
 public void createHandCard( GameCard card, int slotIndex )
 {
     hand.Add(card);
     ui.onNewHandCard(card, slotIndex);
 }
Ejemplo n.º 43
0
    public List <GameCard> CheckCards3choix(GameCard c, List <Carte> paires, int tour)
    {
        gameCard3choix = new List <GameCard>();
        Debug.Log("Pli 3 choix!");

        if (J1_humain_plays)
        {
            J1_humain.AjouterPlis(c.Proprietes);
            J1_humain.AjouterPlis(paires[0]);
            J1_humain.AjouterPlis(paires[1]);
            J1_humain.AjouterPlis(paires[2]);
            if (tour == 1)
            {
                jeuHumain.Remove(c.Proprietes);
            }
        }

        else
        {
            J2_IA.AjouterPlis(c.Proprietes);
            J2_IA.AjouterPlis(paires[0]);
            J2_IA.AjouterPlis(paires[1]);
            J2_IA.AjouterPlis(paires[2]);
            if (tour == 1)
            {
                jeuIA.Remove(c.Proprietes);
            }
        }

        defosse.Remove(paires[0]);
        defosse.Remove(paires[1]);
        defosse.Remove(paires[2]);



        foreach (GameCard e in cards)        //on trouve les GameCard qui correspondent aux 3 cartes trouvées

        {
            for (int i = 0; i < 3; i++)
            {
                if (e.Proprietes.Id == paires[i].Id)
                {
                    gameCard3choix.Add(e);
                }
            }
        }

        for (int j = 0; j < 12; j++)      //on parcoure defosseGameCard pour lui enlever les 3 GameCard trouvées
        {
            for (int k = 0; k < 3; k++)   //on trouve les GameCard qui correspondent aux defosseGameCard

            {
                if (defosseGameCard[j] != null)
                {
                    if (gameCard3choix[k].Proprietes.Id == defosseGameCard[j].Proprietes.Id)
                    {
                        coordDefosse[j]    = Vector3.zero;
                        defosseGameCard[j] = null;
                    }
                }
            }
        }

        paires.Clear();
        return(gameCard3choix);
    }
Ejemplo n.º 44
0
    public GameCard checkCards(GameCard c, int tour)        //Parcoure la défosse pour savoir on peut faire une paire avec la carte du Joueur ou la carte de la Pioche (tour 1 pour le joueur, tour 2 pour la pioche)
    {
        cartesRangees   = J1_humain.PlisLumiere.Count + J1_humain.PlisRuban.Count + J1_humain.PlisAnimal.Count + J1_humain.PlisPlante.Count + J2_IA.PlisLumiere.Count + J2_IA.PlisRuban.Count + J2_IA.PlisAnimal.Count + J2_IA.PlisPlante.Count;
        Pli2Plantes     = false;
        Pli3Choix       = false;
        Pli2Choix       = false;
        Pli3Plantes     = false;
        choixPaireClick = false;

        int          cpt = 0;
        List <Carte> paires;

        paires = new List <Carte>();

        foreach (Carte d in defosse)              //on regarde si y a une paire possible
        {
            if (c.Proprietes.Mois == d.Mois)
            {
                paires.Add(d);
                cpt++;
            }
        }


        if (cpt == 0)                                       //Si y a pas de paires possibles
        {
            defosse.Add(c.Proprietes);                      //On rajoute la carte actuelle à la défosse

            if (tour == 1)
            {
                if (J1_humain_plays)
                {
                    jeuHumain.Remove(c.Proprietes);
                }
                else
                {
                    jeuIA.Remove(c.Proprietes);
                }
            }
            return(null);
        }

        else if ((cpt == 1))                                //Si il y a une paire possible

        {
            if (J1_humain_plays)
            {
                J1_humain.AjouterPlis(c.Proprietes);    //on rajoute la carte aux plis du joueur
                J1_humain.AjouterPlis(paires[0]);       //on rajoute la carte paire aux plis du joueur
                if (tour == 1)
                {
                    jeuHumain.Remove(c.Proprietes);                        //Si on est au tour du joueur, on enlève la carte jouée de son jeu
                }
            }

            else
            {
                J2_IA.AjouterPlis(c.Proprietes);
                J2_IA.AjouterPlis(paires[0]);
                if (tour == 1)
                {
                    jeuIA.Remove(c.Proprietes);
                }
            }


            defosse.Remove(paires[0]);                                  //on retire la carte paire de la défosse


            if ((c.Proprietes is Plante) && (paires[0] is Plante))      //si c'est une paire avec deux plantes, il faut gérer l'affichage différemment (voir RangerCartes)
            {
                Pli2Plantes = true;
            }

            foreach (GameCard e in cards)                                //on va trouver la GameCard qui correspond à notre carte paire

            {
                if (e.Proprietes.Id == paires[0].Id)
                {
                    for (int i = 0; i < 12; i++)
                    {
                        if (defosseGameCard[i] != null)
                        {
                            if (e.Proprietes.Id == defosseGameCard[i].Proprietes.Id)
                            {
                                coordDefosse[i]    = Vector3.zero;      //puisqu'on enlève une carte de la défosse, son emplacement devient libre
                                defosseGameCard[i] = null;
                                paires.Clear();
                                return(e);
                            }
                        }
                    }
                }
            }
        }

        else if (cpt == 2)
        {
            Debug.Log("On est passé ici");
            Pli2Choix = true;
        }



        else if (cpt == 3)
        {
            gameCard3choix = CheckCards3choix(c, paires, tour);     //on récupère la liste avec les 3 cartes possibles
                                                                    //Il faut maintenant gérér le problème de Pli2Plantes : il faut savoir quelle plante a été posée dans quelle ordre
            if (c.Proprietes.Mois == Mois.Decembre)                 //Pour le mois de décembre il y a 3 plantes
            {
                Pli3Plantes = true;
                if (!(c.Proprietes is Plante))
                {
                    Pli3ChoixTourPlante1 = 2;
                    Pli3ChoixTourPlante2 = 3;
                    Pli3ChoixTourPlante3 = 4;
                }
                else if (!(gameCard3choix[0].Proprietes is Plante))
                {
                    Pli3ChoixTourPlante1 = 1;
                    Pli3ChoixTourPlante2 = 3;
                    Pli3ChoixTourPlante3 = 4;
                }
                else if (!(gameCard3choix[1].Proprietes is Plante))
                {
                    Pli3ChoixTourPlante1 = 1;
                    Pli3ChoixTourPlante2 = 2;
                    Pli3ChoixTourPlante3 = 4;
                }
                else if (!(gameCard3choix[2].Proprietes is Plante))
                {
                    Pli3ChoixTourPlante1 = 1;
                    Pli3ChoixTourPlante2 = 2;
                    Pli3ChoixTourPlante3 = 3;
                }
            }

            else
            {
                if (c.Proprietes.Mois != Mois.Novembre)
                {
                    Pli2Plantes = true;
                }
                if (c.Proprietes is Plante)
                {
                    Pli3ChoixTourPlante1 = 1;
                    if (gameCard3choix[0].Proprietes is Plante)
                    {
                        Pli3ChoixTourPlante2 = 2;
                    }
                    else if (gameCard3choix[1].Proprietes is Plante)
                    {
                        Pli3ChoixTourPlante2 = 3;
                    }
                    else
                    {
                        Pli3ChoixTourPlante2 = 4;
                    }
                }

                else if (gameCard3choix[0].Proprietes is Plante)
                {
                    Pli3ChoixTourPlante1 = 2;
                    if (gameCard3choix[1].Proprietes is Plante)
                    {
                        Pli3ChoixTourPlante2 = 3;
                    }
                    else
                    {
                        Pli3ChoixTourPlante2 = 4;
                    }
                }

                else if (gameCard3choix[1].Proprietes is Plante)
                {
                    Pli3ChoixTourPlante1 = 3;
                    Pli3ChoixTourPlante2 = 4;
                }
            }

            Pli3Choix          = true;
            GameCard.isRangee3 = false;
            GameCard.isRangee4 = false;
            return(gameCard3choix[0]);                                   //on retourne la premiere carte des 3 pour en faire la paire, et on rangera les 2 autres depuis la classe GameCard
        }

        return(c);   //inutile
    }
Ejemplo n.º 45
0
    public IEnumerator CheckCards2choix(GameCard c, int tour)
    {
        Debug.Log("PLI 2 CHOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOIX");
        Debug.Log(tour);
        pauseJeu2Choix  = true;
        cartesRangees   = J1_humain.PlisLumiere.Count + J1_humain.PlisRuban.Count + J1_humain.PlisAnimal.Count + J1_humain.PlisPlante.Count + J2_IA.PlisLumiere.Count + J2_IA.PlisRuban.Count + J2_IA.PlisAnimal.Count + J2_IA.PlisPlante.Count;
        Pli2Plantes     = false;
        Pli3Choix       = false;
        Pli2Choix       = false;
        Pli3Plantes     = false;
        choixPaireClick = false;

        int          cpt = 0;
        List <Carte> paires;

        paires = new List <Carte>();

        foreach (Carte d in defosse)
        {            //on regarde si y a une paire possible
            if (c.Proprietes.Mois == d.Mois)
            {
                paires.Add(d);
                cpt++;
            }
        }



        if ((J1_humain_plays == false) || (MenuManager.typeJeu == 2))
        {
            if (MenuManager.typeJeu == 1)
            {
                J2_IA.AjouterPlis(c.Proprietes);
                if (tour == 1)
                {
                    J2_IA.AjouterPlis(IA.carte_defosse);
                    jeuIA.Remove(c.Proprietes);
                }
                else
                {
                    J2_IA.AjouterPlis(paires[0]);
                }
            }
            else
            {
                if (J1_humain_plays)
                {
                    J1_humain.AjouterPlis(c.Proprietes);

                    if (tour == 1)
                    {
                        J1_humain.AjouterPlis(IA.carte_defosse);
                        jeuHumain.Remove(c.Proprietes);
                    }
                    else
                    {
                        J1_humain.AjouterPlis(paires[0]);
                    }
                }
                else
                {
                    J2_IA.AjouterPlis(c.Proprietes);
                    if (tour == 1)
                    {
                        J2_IA.AjouterPlis(IA.carte_defosse);
                        jeuIA.Remove(c.Proprietes);
                    }
                    else
                    {
                        J2_IA.AjouterPlis(paires[0]);
                    }
                }
            }

            if (tour == 1)
            {
                defosse.Remove(IA.carte_defosse);
            }

            else
            {
                defosse.Remove(paires[0]);
            }


            if (tour == 1)
            {
                foreach (GameCard e in cards)
                {                             //on va trouver la GameCard qui correspond à notre carte paire
                    if (pauseJeu2Choix == true)
                    {
                        if (e.Proprietes.Id == IA.carte_defosse.Id)
                        {
                            for (int i = 0; i < 12; i++)
                            {
                                if (defosseGameCard[i] != null)
                                {
                                    if (e.Proprietes.Id == defosseGameCard[i].Proprietes.Id)
                                    {
                                        coordDefosse[i]    = Vector3.zero;      //puisqu'on enlève une carte de la défosse, son emplacement devient libre
                                        defosseGameCard[i] = null;
                                        paires.Clear();
                                        gameCard2choix = e;
                                        pauseJeu2Choix = false;
                                    }
                                }
                            }
                        }
                    }
                }
            }

            else
            {
                foreach (GameCard e in cards)
                {                             //on va trouver la GameCard qui correspond à notre carte paire
                    if (pauseJeu2Choix == true)
                    {
                        if (e.Proprietes.Id == paires[0].Id)
                        {
                            for (int i = 0; i < 12; i++)
                            {
                                if (defosseGameCard[i] != null)
                                {
                                    if (e.Proprietes.Id == defosseGameCard[i].Proprietes.Id)
                                    {
                                        coordDefosse[i]    = Vector3.zero;      //puisqu'on enlève une carte de la défosse, son emplacement devient libre
                                        defosseGameCard[i] = null;
                                        paires.Clear();
                                        gameCard2choix = e;
                                        pauseJeu2Choix = false;
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }

        else
        {
            foreach (GameCard e in cards)
            {
                if (e.Proprietes.Id == paires[0].Id)
                {
                    e.GetComponent <Button>().enabled      = true;
                    e.GetComponent <Button>().interactable = true;
                }


                else if (e.Proprietes.Id == paires[1].Id)
                {
                    e.GetComponent <Button>().enabled      = true;
                    e.GetComponent <Button>().interactable = true;
                }
            }
            choixPaireClick = true;
            yield return(new WaitWhile(() => choixPaireClick));


            J1_humain.AjouterPlis(c.Proprietes);    //on rajoute la carte aux plis du joueur
            if (tour == 1)
            {
                jeuHumain.Remove(c.Proprietes);
            }

            foreach (GameCard e in cards)
            {
                if (e.Proprietes.Id == paires[0].Id)
                {
                    e.GetComponent <Button>().interactable = false;
                    e.GetComponent <Button>().enabled      = false;
                }


                else if (e.Proprietes.Id == paires[1].Id)
                {
                    e.GetComponent <Button>().interactable = false;
                    e.GetComponent <Button>().enabled      = false;
                }
            }

            foreach (Carte f in cartesVitrine)
            {
                if (f.Id == GameCard.paire2choix.Proprietes.Id)
                {
                    J1_humain.AjouterPlis(f);
                    defosse.Remove(f);
                    for (int i = 0; i < 12; i++)
                    {
                        if (defosseGameCard[i] != null)
                        {
                            if (GameCard.paire2choix.Proprietes.Id == defosseGameCard[i].Proprietes.Id)
                            {
                                coordDefosse[i]    = Vector3.zero;      //puisqu'on enlève une carte de la défosse, son emplacement devient libre
                                defosseGameCard[i] = null;
                                paires.Clear();
                                gameCard2choix = GameCard.paire2choix;
                                pauseJeu2Choix = false;
                            }
                        }
                    }
                }
            }
        }
    }
Ejemplo n.º 46
0
 void CardSelected(GameCard card)
 {
     //myHand
     Debug.Log("PlayerBrain Card Selected: " + card.name);
     defender.RecieveAttack(card);
 }
Ejemplo n.º 47
0
 public AfterCardReveal(GameCard target, GameCard source)
 {
     Target = target;
     Source = source;
 }
Ejemplo n.º 48
0
    public void startGame()
    {
        StopAllCoroutines ();
        nextButton.endFlash ();
        resetButton.endFlash ();
        //Get rid of all currently existing cards
        if( handCards != null )
            foreach (CardUI card in handCards)
                Destroy (card.gameObject);
        selectedCard = null;
        selectedSlot = -1;

        //Get rid of effects, including board cards
        foreach (GameObject obj in GameObject.FindGameObjectsWithTag("effect")) {
            Destroy (obj);
        }

        animsRunning = 0;

        //Set up energy meter
        meterScript.setCurrent (0);
        levelBest = PlayerPrefs.GetInt( currentLevel.hand ); //Gets 0 if the key doesn't exist
        int goal = ( levelBest > currentLevel.energyGoal && currentLevel.bonusGoal != -1 )
            ? currentLevel.bonusGoal : currentLevel.energyGoal ;
        meterScript.setMax( goal );
        meterScript.maxEnergyText.text = "" + goal;
        meterScript.setFlagHeight (currentLevel.energyGoal);

        meterScript.trophyImage.SetActive (currentLevel.bonusGoal != -1 && levelBest >= currentLevel.bonusGoal);
        meterScript.flagImage.SetActive (levelBest >= currentLevel.energyGoal);

        meterScript.setGhost (levelBest);
        Color c = getMeterFillColor (levelBest);
        c = new Color (c.r, c.g, c.b, 100f/255);
        meterScript.meterFillGhost.color = c;
        meterScript.meterFill.color = meterScript.normalFillColor;

        //Set slots to default state
        for (int i = 0; i < BoardManager.MAX_UNITS; ++i)
            setSlotColor (i, slotActiveColor);

        //Determine the starting hand
        string[] handCodes;
        handCodes = currentLevel.hand.Split ();

        //Create the hand cards
        handCards = new List<CardUI> ();
        foreach (string code in handCodes) {
            newHandCard (code, handSpawnPos.position);
        }
        StartCoroutine (setHandPositions ());

        //Display level messages
        if (currentLevel.messages != null)
            msgManager.messageBox (currentLevel.messageTitle, currentLevel.messages);
        else
            msgManager.close ();

        //Create the Board Manager
        GameCard[] cards = new GameCard[handCodes.Length];
        for (int i=0; i<handCodes.Length; ++i) {
            cards[i] = GameCard.findByCode(handCodes[i]);
        }
        theGame = BoardManager.newGame(cards, this);
    }
Ejemplo n.º 49
0
 public static void Angriff(ref GameCard attacker)
 {
     AttackerCard = attacker;
 }
Ejemplo n.º 50
0
 IEnumerator coRecieveAttack(GameCard attackCard)
 {
     //attackCard
     yield return new WaitForSeconds(.25f);
 }
Ejemplo n.º 51
0
 public static void Verteidigung(ref GameCard defender)
 {
 }
Ejemplo n.º 52
0
 public void SetCards(GameCard c1, GameCard c2)
 {
     picCard1.Card = c1;
     picCard2.Card = c2;
 }
Ejemplo n.º 53
0
 void CardSelected(GameCard card)
 {
     //myHand
     Debug.Log("PlayerBrain Card Selected: " + card.name);
     defender.RecieveAttack(card);
 }
Ejemplo n.º 54
0
 /// <summary>
 /// Sets the cards on the table
 /// </summary>
 public void SetCards(GameCard c1, GameCard c2, GameCard c3, GameCard c4, GameCard c5)
 {
     Cards = new[] { c1, c2, c3, c4, c5 };
 }
Ejemplo n.º 55
0
 public NoneEffect(IGwentServerGame game, GameCard card) : base(game, card)
 {
 }