/// <summary> /// Adds a card to the deck. /// </summary> /// <param name="attacker">The attacker putting the card into the deck.</param> /// <param name="value">The card's value.</param> public void PutCardInDeck(Transform attacker, int value) { attackerDeck.AddCard(new Card(value)); List <Card> remainingCards = attackerDeck.RemainingCards(); cardsInDeck.text = UpdateCardsInDeckUI(remainingCards); Services.UI.AddCardToDeck(attacker, value); }
public void CanAddCardToTop() { var card = new Card { Value = 42 }; _cardDeck.AddCard(card, CardDeckPosition.Top); var drawnCard = _cardDeck.DrawTop(); Assert.Equal(42, drawnCard.Value); }
public void TestGetRandomCardFromDeck() { CardStack stack = new CardStack(); CardDeck deck = new CardDeck(); stack.AddPackage(_package); deck.AddCard(stack.CardCollection[0]); deck.AddCard(stack.CardCollection[1]); deck.AddCard(stack.CardCollection[2]); deck.AddCard(stack.CardCollection[3]); Card randomCard = deck.GetRandomCard(); Assert.NotNull(randomCard); Console.WriteLine("The name of the random Monster/Spell is: " + randomCard.Name); }
public void TestCardDeckGetsMaximumFourCards() { CardStack stack = new CardStack(); CardDeck deck = new CardDeck(); stack.AddPackage(_package); stack.AddPackage(_package); deck.AddCard(stack.CardCollection[0]); deck.AddCard(stack.CardCollection[1]); deck.AddCard(stack.CardCollection[2]); deck.AddCard(stack.CardCollection[3]); deck.RemoveCard(deck.CardCollection[2]); deck.AddCard(stack.CardCollection[4]); Assert.AreEqual(4, deck.CardCollection.Count); }
public CardDeckTests() { _cardDeck = new CardDeck <Card>(); for (var card = 1; card <= 24; card++) { _cardDeck.AddCard(new Card { Value = card }); } }
// Use this for initialization public GameInformation() { Players = new Dictionary <string, string>(); roomTileDeck = new CardDeck(); gameBoard = new Board(); //Add generic cards some cards to the deck for (int i = 0; i < 50; i++) { roomTileDeck.AddCard(new BoardGameScripting.BGSScript()); } }
public void StartGame() { //Add cards to deck for (int i = 0; i < 5; i++) { Deck.AddCard(StartingDeck.AttackCard()); } for (int i = 0; i < 5; i++) { Deck.AddCard(StartingDeck.BlockCard()); } if (includeSpecialCards) { Deck.AddCard(StartingDeck.SpecialCard1()); Deck.AddCard(StartingDeck.SpecialCard2()); } // Shuffle Deck Deck.ShuffleDeck(); StartCoroutine(DrawCardsForNewTurn()); // Ready player for game playerManager.ResetPlayerForNewTurn(); }
public void TestDeck_AddCardInEmptyDeck() { // arrange var mockedA = new Mock <ICard>(); var deck = new CardDeck(); var cards = new List <ICard> { mockedA.Object }; // act var erg = deck.AddCard(mockedA.Object); // assert Assert.IsTrue(erg); Assert.AreEqual(cards, deck.Cards); }
public void TestDeck_AddCardInFullDeckAndThrowException() { // arrange var mockedA = new Mock <ICard>(); var mockedB = new Mock <ICard>(); var mockedC = new Mock <ICard>(); var mockedD = new Mock <ICard>(); var mockedE = new Mock <ICard>(); var cards = new List <ICard> { mockedA.Object, mockedB.Object, mockedC.Object, mockedD.Object }; var deck = new CardDeck(cards, 4); // act and assert Assert.Throws <ArgumentException>(() => deck.AddCard(mockedE.Object)); }
/// <summary> /// Adds a card to a given part of the player's inventory /// </summary> /// <param name="type">Part of inventory to add card to</param> /// <param name="used">true if cards should be added to used part of inventory</param> /// <param name="card">Card to add</param> public void AddCard(Card.ScriptType type, bool used, /*CSL.Script*/ Card card) { //TODO: Automatically detect which part of inventory to put card in if (!used) { switch (type) { case Card.ScriptType.Item: playerItems.AddCard(card); break; case Card.ScriptType.Artifact: playerArtifacts.AddCard(card); break; case Card.ScriptType.Event: playerEvents.AddCard(card); break; case Card.ScriptType.Effect: playerEffects.AddCard(card); break; } } else { switch (type) { case Card.ScriptType.Item: playerItemsUsed.AddCard(card); break; case Card.ScriptType.Artifact: playerArtifactsUsed.AddCard(card); break; case Card.ScriptType.Event: playerEventsUsed.AddCard(card); break; case Card.ScriptType.Effect: playerEffectsUsed.AddCard(card); break; } } }
public void DebugKeys() { if (Input.GetKeyDown("1")) { int min = 0; int max = (int)CardType.BuildTavern; int typeRoll = UnityEngine.Random.Range(min, max); Card debugCard = Generate((CardType)typeRoll); Vector2 spawnPos = new Vector2(deck.transform.position.x - 20f, deck.transform.position.y - 50f); debugCard.transform.position = spawnPos; debugCard.transform.rotation = Quaternion.Euler(0, 0, -40); debugCard.TargetRot = Quaternion.Euler(0, 0, 0); debugCard.deck = this.deck; debugCard.hand = this.hand; debugCard.discard = this.discard; debugCard.state = Card.CardState.deck; debugCard.SetCardSide(Card.Side.Back); deck.notificationCanvas.AddNotification(Notification.Type.userAction, $"Adding card to deck."); deck.AddCard(debugCard, true, true); } }
public Tuple <int, string> Battle(User user1, User user2) { CardDeck deck1 = new CardDeck(); foreach (var card in user1.Deck.CardCollection) { deck1.AddCard(card); } CardDeck deck2 = new CardDeck(); foreach (var card in user2.Deck.CardCollection) { deck2.AddCard(card); } Random random = new Random(); int roundNumber; bool roundsStartAtZero = false; if (random.Next(0, 2) == 0) { roundNumber = 0; roundsStartAtZero = true; } else { roundNumber = 1; } Dictionary <string, string> battleLog = new Dictionary <string, string>(); battleLog.Add("Result", ""); while (deck1.CardCollection.Count > 0 && deck2.CardCollection.Count > 0 && roundNumber < 100) { string roundLog = ""; if (roundNumber % 2 == 0) { roundLog += Round(ref deck1, ref deck2, user1.Username, user2.Username); } else { roundLog += Round(ref deck2, ref deck1, user2.Username, user1.Username); } if (roundsStartAtZero) { battleLog.Add("Round " + (roundNumber + 1), roundLog); } else { battleLog.Add("Round " + roundNumber, roundLog); } roundNumber++; } if ((roundNumber == 100 && !roundsStartAtZero) || (roundNumber == 99 && roundsStartAtZero)) { battleLog["Result"] = "DRAW"; return(Tuple.Create(0, JsonSerializer.Serialize(battleLog))); } if (deck1.CardCollection.Count > deck2.CardCollection.Count) { battleLog["Result"] = user1.Username + " won against " + user2.Username; return(Tuple.Create(1, JsonSerializer.Serialize(battleLog))); } else { battleLog["Result"] = user2.Username + " won against " + user1.Username; return(Tuple.Create(-1, JsonSerializer.Serialize(battleLog))); } }
private string Round(ref CardDeck deck1, ref CardDeck deck2, string username1, string username2) { Card card1Deck = deck1.GetRandomCard(); Card card2Deck = deck2.GetRandomCard(); // create new cards instead of references Card card1 = card1Deck switch { Dragon d => new Dragon(card1Deck.ID, card1Deck.Name, card1Deck.Damage, card1Deck.Type), Elve e => new Elve(card1Deck.ID, card1Deck.Name, card1Deck.Damage, card1Deck.Type), Goblin g => new Goblin(card1Deck.ID, card1Deck.Name, card1Deck.Damage, card1Deck.Type), Knight k => new Knight(card1Deck.ID, card1Deck.Name, card1Deck.Damage, card1Deck.Type), Kraken k => new Kraken(card1Deck.ID, card1Deck.Name, card1Deck.Damage, card1Deck.Type), Orc o => new Orc(card1Deck.ID, card1Deck.Name, card1Deck.Damage, card1Deck.Type), Wizard w => new Wizard(card1Deck.ID, card1Deck.Name, card1Deck.Damage, card1Deck.Type), FireSpell f => new FireSpell(card1Deck.ID, card1Deck.Name, card1Deck.Damage), NormalSpell n => new NormalSpell(card1Deck.ID, card1Deck.Name, card1Deck.Damage), WaterSpell w => new WaterSpell(card1Deck.ID, card1Deck.Name, card1Deck.Damage), }; Card card2 = card2Deck switch { Dragon d => new Dragon(card2Deck.ID, card2Deck.Name, card2Deck.Damage, card2Deck.Type), Elve e => new Elve(card2Deck.ID, card2Deck.Name, card2Deck.Damage, card2Deck.Type), Goblin g => new Goblin(card2Deck.ID, card2Deck.Name, card2Deck.Damage, card2Deck.Type), Knight k => new Knight(card2Deck.ID, card2Deck.Name, card2Deck.Damage, card2Deck.Type), Kraken k => new Kraken(card2Deck.ID, card2Deck.Name, card2Deck.Damage, card2Deck.Type), Orc o => new Orc(card2Deck.ID, card2Deck.Name, card2Deck.Damage, card2Deck.Type), Wizard w => new Wizard(card2Deck.ID, card2Deck.Name, card2Deck.Damage, card2Deck.Type), FireSpell f => new FireSpell(card2Deck.ID, card2Deck.Name, card2Deck.Damage), NormalSpell n => new NormalSpell(card2Deck.ID, card2Deck.Name, card2Deck.Damage), WaterSpell w => new WaterSpell(card2Deck.ID, card2Deck.Name, card2Deck.Damage), }; //card1.Damage = card1.Damage * _elementEffectivenessService.CompareElements(card1.Type, card2.Type); //card2.Damage = card2.Damage * _elementEffectivenessService.CompareElements(card2.Type, card1.Type); card1.EnhanceDamage(_elementEffectivenessService.CompareElements(card1.Type, card2.Type)); card2.EnhanceDamage(_elementEffectivenessService.CompareElements(card2.Type, card1.Type)); // without special abilities /*int card1wins = card1 switch * { * IMonster monster => monster.CompareDamage(card2.Damage) ? 1 : -1, * ISpell spell => spell.CompareDamage(card2.Damage) ? 1 : -1, * _ => 0 * };*/ Random random = new Random(); bool boosterCard1 = (random.Next(1, 21) == 20); if (boosterCard1) { //card1.Damage = card1.Damage * 10; card1.EnhanceDamage(10); } int card1wins = card1 switch { IMonster _ when card2 is IMonster => FightMonsterMonster(card1, card2), IMonster _ when card1 is ISpell => FightMonsterSpell(card1, card2), ISpell _ when card2 is IMonster => FightSpellMonster(card2, card1), _ => FightSpellSpell(card1, card2) }; string roundLog; if (card1wins == 1) { deck1.AddCard(card2Deck, true); deck2.RemoveCard(card2Deck); if (boosterCard1) { roundLog = (card1Deck.ToBattleString() + " (" + username1 + ") won with a booster against " + card2Deck.ToBattleString() + " (" + username2 + ")"); } else { roundLog = (card1Deck.ToBattleString() + " (" + username1 + ") won against " + card2Deck.ToBattleString() + " (" + username2 + ")"); } } else if (card1wins == -1) { deck2.AddCard(card1Deck, true); deck1.RemoveCard(card1Deck); if (boosterCard1) { roundLog = (card1Deck.ToBattleString() + " (" + username1 + ") lost although a booster to " + card2Deck.ToBattleString() + " (" + username2 + ")"); } else { roundLog = (card1Deck.ToBattleString() + " (" + username1 + ") lost to " + card2Deck.ToBattleString() + " (" + username2 + ")"); } } else { if (boosterCard1) { roundLog = (card1Deck.ToBattleString() + " (" + username1 + ") drew although a booster with " + card2Deck.ToBattleString() + " (" + username2 + ")"); } else { roundLog = (card1Deck.ToBattleString() + " (" + username1 + ") drew with " + card2Deck.ToBattleString() + " (" + username2 + ")"); } } return(roundLog); }