private void bt_attacco_Click(object sender, EventArgs e) { bt_attacco.Hide(); bt_nascondi.Hide(); bt_successivo.Show(); string tipo = player.CarteInMano[cartaSelezionata].Tipo; if (tipo == "attacco") { CartaBase cartaTua = (CartaBase)(player.CarteInMano[cartaSelezionata]); cartaTua.SetBuff(player.ValBuff); cartaTua.UsaCarta(player); if (tuoTurno) { //Il nemico sceglie una carta nemico.ScegliCarta(); CartaBase cartaNemico = (CartaBase)(nemico.CartaUsata); cartaNemico.Visualizza(img_cartaA, nomeCartaA, detA, attA, defA, elemA); detA.BackColor = Color.LightGoldenrodYellow; defA.BackColor = Color.LightBlue; attA.BackColor = Color.LightGray; //Buff a livello grafico if (nemico.DebuffApplicato) { attA.Text += nemico.DebuffVal; defA.Text += nemico.DebuffVal; attA.ForeColor = Color.BlueViolet; defA.ForeColor = Color.BlueViolet; } else { attA.ForeColor = Color.Black; defA.ForeColor = Color.Black; } int dmg = Scontro(cartaTua, cartaNemico, elem0, elemA, nemico, vita_avversario); if (dmg >= 3)//aggiungi determinazione quando fai un buon danno { cartaTua.AddDeterminazione(2); det0.Text = cartaTua.Determinazione.ToString(); det0.ForeColor = Color.GreenYellow; } else //comunque ogni turni perdi punti { cartaTua.DimDeterminazione(1); //perdi un punto det0.Text = cartaTua.Determinazione.ToString(); //aggiorni la scritta } } else { CartaBase cartaNemico = (CartaBase)(nemico.CartaUsata); cartaNemico.SetBuff(nemico.DebuffVal); int dmg = Scontro(cartaNemico, cartaTua, elemA, elem0, player, vita_giocatore); cartaNemico.SetBuff(0); if (dmg >= 2) //perdi determinazione quando subisci troppi danni { cartaTua.DimDeterminazione(2); det0.Text = cartaTua.Determinazione.ToString(); det0.ForeColor = Color.Crimson; } else //comunque ogni turni perdi punti { cartaTua.DimDeterminazione(1); //perdi un punto det0.Text = cartaTua.Determinazione.ToString(); //aggiorni la scritta } } cartaTua.SetBuff(0); //finito il turno levo il buff } else { Carta cartaTua = player.CarteInMano[cartaSelezionata]; if (tipo == "cura") { ((CartaCura)cartaTua).UsaCarta(player); } else if (tipo == "curaEstesa") { ((CartaCuraEstesa)cartaTua).UsaCarta(player); curaEstesa.Show(); } else if (tipo == "buff") { ((CartaBuff)cartaTua).UsaCarta(player); img_buff.Show(); } else if (tipo == "debuff") { ((CartaDebuff)cartaTua).UsaCarta(nemico); //applica l'effetto sul nemico img_debuff.Show(); } else if (tipo == "dannoContiuno") { ((CartaDannoContinuo)cartaTua).UsaCarta(nemico); //applica l'effetto sul nemico img_dannoPerpetuo.Show(); } if (!tuoTurno) { //Per ora la determinazione non conta int dmg = ((CartaBase)(nemico.CartaUsata)).Atk; if (dmg < 0) { dmg = 0; } player.LessHp(dmg); //Output vita vita_giocatore.Text = "HP: " + player.CurHp + "/" + player.MaxHp; vita_giocatore.ForeColor = Color.Red; } //Ogni volta che usi una carta effetto perdi determinazione cartaTua.DimDeterminazione(1); //perdi un punto det0.Text = cartaTua.Determinazione.ToString(); //aggiorni la scritta } //icone buff/debuff if (tuoTurno) { if (player.CuraEstesa) { player.ApplicaBuffCura(); vita_giocatore.Text = "HP: " + player.CurHp + "/" + player.MaxHp; vita_giocatore.ForeColor = Color.YellowGreen; curaEstesa.Show(); } if (player.BuffApplicato) { player.ApplicaBuffStats(); img_buff.Show(); } } else { if (nemico.DebuffApplicato) { nemico.ApplicaDebuff(); } if (nemico.DannoApplicato) { nemico.ApplicaDannoPerpetuo(); vita_avversario.Text = "HP: " + nemico.CurHp + "/" + nemico.MaxHp; vita_avversario.ForeColor = Color.Red; } } //Allo scadere dei turni toglie i flags di status if (!player.CuraEstesa) { curaEstesa.Hide(); } if (!player.BuffApplicato) { img_buff.Hide(); } if (!nemico.DebuffApplicato) { img_debuff.Hide(); } if (!nemico.DannoApplicato) { img_dannoPerpetuo.Hide(); } //controlla vita del nemico if (nemico.CurHp <= 0) { MessageBox.Show("Hai vinto lo scontro!"); /* * //Pesca una nuova carta per non rompere il sistema * player.PescaCarta(cartaSelezionata); * * player.CarteInMano[cartaSelezionata] * .Visualizza(img_carta[cartaSelezionata], nomeCarta[cartaSelezionata], det[cartaSelezionata], * att[cartaSelezionata], def[cartaSelezionata], elem[cartaSelezionata]);*/ nemico.GameOver(); } else if (player.CurHp <= 0) { MessageBox.Show("Hai perso lo scontro."); /* * //Pesca una nuova carta per non rompere il sistema * player.PescaCarta(cartaSelezionata); * * player.CarteInMano[cartaSelezionata] * .Visualizza(img_carta[cartaSelezionata], nomeCarta[cartaSelezionata], det[cartaSelezionata], * att[cartaSelezionata], def[cartaSelezionata], elem[cartaSelezionata]); */ player.GameOver(); } //controlla determinazione if (player.CarteInMano[cartaSelezionata].Determinazione <= 0 && player.CarteInMano[cartaSelezionata].Tipo != "morto") //ovviamente la carta non deve essere già morta { //nascondi la carta vecchia player.CarteInMano[cartaSelezionata].Nascondi(img_carta0, nomeCarta0, det0, att0, def0, elem0); //la carta viene rimpiazzata con la carta morto int indice = player.CarteInMano[cartaSelezionata].Indice; //salvo il vecchio indice player.CarteInMano[cartaSelezionata].SetUtilizzabile(false); //la carta verrà rimossa dal mazzo player.CarteInMano[cartaSelezionata] = ListaCarte.GetMorto(); player.CarteInMano[cartaSelezionata].Indice = indice; player.Mazzo.MorteCarta(indice); //uccide la carta //mostra la carta nuova player.CarteInMano[cartaSelezionata].Visualizza(img_carta0, nomeCarta0, det0); } }