示例#1
0
        /// <summary>
        /// атака на карту противника
        /// </summary>
        /// <param name="playeragressor"></param>
        /// <param name="playervinctim"></param>
        /// <param name="CardAgressor"></param>
        /// <param name="CardVinctim"></param>
        public void AttackCard(Player playeragressor, Player playervinctim, CardHeroes CardAgressor, CardHeroes CardVinctim)
        {
            if (CardAgressor.Power == 0 && CardAgressor.Health == 0)
            {
                Spell(playeragressor, playervinctim, CardAgressor, CardVinctim);
                if (CardVinctim.Health <= 0)
                {
                    playervinctim.CardArena2.Remove(CardVinctim);
                }
            }
            else
            {
                CardVinctim.Health  -= CardAgressor.Power;
                CardAgressor.Health -= CardAgressor.Power;
                if (CardAgressor.Health <= 0)
                {
                    playeragressor.CardArena2.Remove(CardAgressor);
                }
                if (CardVinctim.Health <= 0)
                {
                    if (playervinctim.CardArena1.Contains(CardVinctim))
                    {
                        playervinctim.CardArena1.Remove(CardVinctim);
                    }
                    else if (playervinctim.CardArena2.Contains(CardVinctim))
                    {
                        playervinctim.CardArena2.Remove(CardVinctim);
                    }
                    playervinctim.CardHand.Remove(CardVinctim);
                }
            }

            //перерисовка
        }
示例#2
0
        /// <summary>
        /// Выставить карты на арену
        /// </summary>
        /// <param name="player"></param>
        /// <param name="card"></param>
        public void ToArena(Player player, CardHeroes card)
        {
            bool flag = false;

            foreach (CardHeroes a in CardHand)
            {
                if (a == card)
                {
                    flag = true;
                }
            }
            if (player.Mana >= card.Price && flag)
            {
                if (card.Ability != null)
                {
                    Applicationability(player, card.Ability);
                }
                player.CardArena1.Add(card);
                player.CardHand.Remove(card);
                player.Mana = player.Mana - card.Price;


                //перерисовка
            }
            else
            {
                throw new Exception("Недостаточно маны");
            }
        }
示例#3
0
        private void bArena_Click(object sender, EventArgs e)
        {
            int count = pMyHand.Controls.IndexOf(choosenCard);

            oldIndex = count;
            CardHeroes cardh = CardHand.ElementAt(count);

            client.ArenaCardNowSend(cardh, index);
        }
示例#4
0
        public void PickAndPayMana(CardHeroes MyCard)
        {
            PacketPickCard pick = new PacketPickCard();//оплата карты маной из предложенной коллоды

            pick.Command = PacketsToServer.PacketPickCard;
            pick.Card    = MyCard;
            string mes = JsonConvert.SerializeObject(pick) + "$";

            Send(mes);
        }
示例#5
0
        public void ArenaCardNowSend(CardHeroes MyCard, int index)
        {
            PacketArenaCardNow pack = new PacketArenaCardNow();

            pack.Command     = PacketsToServer.PacketArenaCardNow;
            pack.MyCard      = MyCard;
            pack.IndeXMyCard = index;
            string mes = JsonConvert.SerializeObject(pack) + "$";

            Send(mes);
        }
示例#6
0
        public void StepToSend(CardHeroes EnemyCard, CardHeroes MyCard)
        {
            StepPacket step = new StepPacket();

            step.Command   = PacketsToServer.StepPacket;
            step.Enemy     = enemyName;
            step.EnemyCard = EnemyCard;
            step.MyCard    = MyCard;
            string mes = JsonConvert.SerializeObject(step) + "$";

            Send(mes);
        }
示例#7
0
        public void CardOnABoard(CardHeroes card)
        {
            MyArena.Add(card);
            foreach (CardsForm a in pMyHand.Controls)
            {
                CardHeroes cardh = null;
                int        count = pMyHand.Controls.IndexOf(a);
                if (oldIndex == count)
                {
                    CardHand.Remove(card);
                    a.Invoke((MethodInvoker)(() =>
                                             a.Visible = false));

                    CardHand.Remove(card);
                    a.Invoke((MethodInvoker)(() =>
                                             a.NameCards = ""));
                    CardHand.Remove(card);
                    a.Invoke((MethodInvoker)(() =>
                                             a.Power = 0));
                    CardHand.Remove(card);
                    a.Invoke((MethodInvoker)(() =>
                                             a.Price = 0));
                    CardHand.Remove(card);
                    a.Invoke((MethodInvoker)(() =>
                                             a.Health = 0));
                    a.Invoke((MethodInvoker)(() => a.Image = null));
                    break;
                }
            }
            foreach (CardsForm b in pMe.Controls)
            {
                if (b.Visible == false)
                {
                    b.Invoke((MethodInvoker)(() =>
                                             b.Enabled = false));
                    card.Index = b.Index;
                    index      = card.Index;
                    b.Invoke((MethodInvoker)(() =>
                                             b.Visible = true));
                    b.Invoke((MethodInvoker)(() =>
                                             b.Health = card.Health));
                    b.Invoke((MethodInvoker)(() =>
                                             b.Power = card.Power));
                    b.Invoke((MethodInvoker)(() =>
                                             b.Price = card.Price));
                    b.Invoke((MethodInvoker)(() => b.Image = (Image)Resource1.ResourceManager.GetObject(card.Name))); break;
                }
            }
        }
示例#8
0
 /// <summary>
 /// Атака на лицо противника
 /// </summary>
 /// <param name="playeragressor"></param>
 /// <param name="playervinctim"></param>
 /// <param name="CardAgressor"></param>
 public void AttackLico(Player playeragressor, Player playervinctim, CardHeroes CardAgressor)
 {
     if (CardAgressor.Price <= playeragressor.Mana)
     {
         playervinctim.Health -= CardAgressor.Power;
         playeragressor.CardArena2.Remove(CardAgressor);
         if (playervinctim.Health <= 0)
         {
             GameOver(playeragressor);
         }
     }
     else
     {
         throw new Exception("Вы не можете ходить этой картой");
     }
 }
示例#9
0
        /// <summary>
        /// атака на карту противника
        /// </summary>
        /// <param name="playeragressor"></param>
        /// <param name="playervinctim"></param>
        /// <param name="CardAgressor"></param>
        /// <param name="CardVinctim"></param>
        public void AttackCard(Player playeragressor, Player playervinctim, CardHeroes CardAgressor, CardHeroes CardVinctim)
        {
            if (CardAgressor.Price <= playeragressor.Mana)
            {
                CardVinctim.Health  -= CardAgressor.Power;
                playeragressor.Mana -= CardAgressor.Price;
                playeragressor.CardArena2.Remove(CardAgressor);
                if (CardVinctim.Health <= 0)
                {
                    playervinctim.CardHand.Remove(CardVinctim);
                }

                //перерисовка
            }
            else
            {
                throw new Exception("Вы не можете ходить этой картой");
            }
        }
示例#10
0
        private void lNamePlayer2_Click(object sender, EventArgs e)
        {
            chooseFace = true;
            if (chooseFace == true && choosenCard != null && choosenEnemyCard == null)
            {
                client.EndSteps();
                ENSt.Visible = true;
            }
            CardHeroes player = new CardHeroes(0, Convert.ToInt16(lHealthPlayer2.Text), lNamePlayer2.Text);
            CardHeroes my     = null;

            foreach (CardsForm a in pMe.Controls)
            {
                int        count = pMyArena.Controls.IndexOf(choosenCard);
                CardHeroes cardh = CardHand.ElementAt(count);
                my = cardh;
            }
            client.StepToSend(player, my);
        }
示例#11
0
 /// <summary>
 /// Атака на лицо противника
 /// </summary>
 /// <param name="playeragressor"></param>
 /// <param name="playervinctim"></param>
 /// <param name="CardAgressor"></param>
 public void AttackLico(Player playeragressor, Player playervictim, CardHeroes CardAgressor)
 {
     if (CardAgressor.Power == 0 && CardAgressor.Health == 0)
     {
         Spell(playeragressor, playervictim, CardAgressor);
         if (playervictim.Health <= 0)
         {
             GameOver(playeragressor);
         }
     }
     else
     {
         playervictim.Health -= CardAgressor.Power;
         if (playervictim.Health <= 0)
         {
             GameOver(playeragressor);
         }
         playeragressor.Mana -= CardAgressor.Price;
     }
 }
示例#12
0
        public void GameStep(CardHeroes EnemyCard, CardHeroes MyCard, Player Enemy)
        {
            if (EnemyCard.Name == Enemy.Name)
            {
                controller.AttackLico(this.clientinf, Enemy, (CardHeroes)MyCard);
                if (Enemy.Health <= 0)
                {
                    //пакет вин
                }
            }
            else
            {
                controller.AttackCard(this.clientinf, Enemy, (CardHeroes)MyCard, (CardHeroes)EnemyCard);
            }
            SendDataToUsers send = new SendDataToUsers();

            send      = DataToSendPrepare(Enemy);
            strpacket = JsonConvert.SerializeObject(send) + "$";
            Send(strpacket);
        }
示例#13
0
        private void Step_Click(object sender, EventArgs e)
        {
            CardHeroes my    = null;
            CardHeroes enemy = null;

            foreach (CardHeroes a in EnemyArena)
            {
                if (choosenEnemyCard.Index == a.Index)
                {
                    enemy = a;
                }
            }
            foreach (CardHeroes a in MyArena)
            {
                if (choosenCard.Index == a.Index)
                {
                    my = a;
                }
            }
            client.StepToSend(enemy, my);
        }
示例#14
0
 public void CardOnAOtherBoard(CardHeroes card)
 {
     EnemyArena.Add(card);
     foreach (CardsForm b in pEnemy.Controls)
     {
         if (b.Visible == false)
         {
             card.Index = b.Index;
             b.Invoke((MethodInvoker)(() =>
                                      b.Visible = true));
             b.Invoke((MethodInvoker)(() =>
                                      b.Health = card.Health));
             b.Invoke((MethodInvoker)(() =>
                                      b.Power = card.Power));
             b.Invoke((MethodInvoker)(() =>
                                      b.Price = card.Price));
             b.Invoke((MethodInvoker)(() =>
                                      b.Image = (Image)Resource1.ResourceManager.GetObject(card.Name)));
             break;
         }
     }
 }
示例#15
0
 /// <summary>
 /// Атака на лицо противника
 /// </summary>
 /// <param name="playeragressor"></param>
 /// <param name="playervinctim"></param>
 /// <param name="CardAgressor"></param>
 public void AttackLico(Player playeragressor, Player playervictim, CardHeroes CardAgressor)
 {
     if (CardAgressor.Power == 0 && CardAgressor.Health == 0)
     {
         Spell(playeragressor, playervictim, CardAgressor);
         if (playervictim.Health <= 0)
         {
             GameOver(playeragressor);
         }
     }
     else
     {
         if (CardAgressor.IsHod && playeragressor.CardArena2.Contains(CardAgressor))
         {
             playervictim.Health -= CardAgressor.Power;
             if (playervictim.Health <= 0)
             {
                 GameOver(playeragressor);
             }
             playeragressor.Mana -= CardAgressor.Price;
             CardAgressor.IsHod   = false;
         }
     }
 }
示例#16
0
        /// <summary>
        /// Применение карт способностей
        /// </summary>
        /// <param name="playeragressor"></param>
        /// <param name="playervinctim"></param>
        /// <param name="CardAgressor"></param>
        private void Spell(Player playeragressor, Player playervinctim, CardHeroes CardAgressor, CardHeroes CardVinctim = null)
        {
            switch (CardAgressor.Ability)
            {
            case "damage2":
            {
                //если атакуем лицо
                if (CardVinctim == null)
                {
                    if (playeragressor.Mana <= CardAgressor.Price)
                    {
                        playervinctim.Health -= 2;
                        //if (playervinctim.Health <= 0)
                        //    result = GameOver(playeragressor);
                        playeragressor.CardHand.Remove(CardAgressor);
                        playeragressor.Mana -= CardAgressor.Price;
                    }
                    else
                    {
                        throw new Exception("Недостаточно маны!");
                    }
                }
                //если атакуем карту
                else
                {
                    if (playeragressor.Mana <= CardAgressor.Price)
                    {
                        CardVinctim.Health -= 2;
                        if (CardVinctim.Health <= 0)
                        {
                            playervinctim.CardArena2.Remove(CardVinctim);
                        }
                        playeragressor.CardHand.Remove(CardAgressor);
                        playeragressor.Mana -= CardAgressor.Price;
                        playeragressor.CardHand.Remove(CardAgressor);
                    }
                    else
                    {
                        throw new Exception("Недостаточно маны!");
                    }
                }
                break;
            }

            //оппонент сбрасывает одну рандомную карту
            case "opponentdiscardscard":
            {
                Random R = new Random();
                playervinctim.CardHand.RemoveAt(R.Next(playervinctim.CardHand.Count));
                playeragressor.CardHand.Remove(CardAgressor);
                break;
            }

            case "plushp3":
            {
                playeragressor.Health += 3;
                playeragressor.CardHand.Remove(CardAgressor);
                break;
            }
            }
        }