/// <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); } } //перерисовка }
/// <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("Недостаточно маны"); } }
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); }
public void PickAndPayMana(CardHeroes MyCard) { PacketPickCard pick = new PacketPickCard();//оплата карты маной из предложенной коллоды pick.Command = PacketsToServer.PacketPickCard; pick.Card = MyCard; string mes = JsonConvert.SerializeObject(pick) + "$"; Send(mes); }
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); }
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); }
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; } } }
/// <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("Вы не можете ходить этой картой"); } }
/// <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("Вы не можете ходить этой картой"); } }
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); }
/// <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; } }
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); }
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); }
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; } } }
/// <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; } } }
/// <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; } } }