private void Attacca_button_Click(object sender, EventArgs e) { for (int i = -1; i < 2; i++) { for (int j = -1; j < 2; j++) { foreach (var n in missione.Nemici) { var pLoc = new Loc2D(Gioco.Giocatore.Loc.X + i, Gioco.Giocatore.Loc.Y + j); if (pLoc.IsEqualTo(n.Loc) && !n.IsGameOver) { Gioco.Giocatore.Attacca(missione, n); Gioco.Giocatore.Stats.Pa = 0; //affonda se la vita è pari o inferiore a 0 n.Affonda(missione); if (n.IsGameOver) { Attacca_button.Hide(); } //return; break; } } } } UpdateComponenti(); //modifica colori perchè è finita l'energia EnergiaNave_label.Text = "Punti azione: " + Gioco.Giocatore.Stats.Pa + "/" + Gioco.Giocatore.Stats.PaMax; //aggiorna energia_label EnergiaNave_label.ForeColor = Color.Red; Sopra_button.ForeColor = Color.LightCoral; Sotto_button.ForeColor = Color.LightCoral; Destra_button.ForeColor = Color.LightCoral; Sinistra_button.ForeColor = Color.LightCoral; //gli attacchi contano come turni missione.Ranking.IncTurni(); }
/// <summary> /// Attacca la nave specificata nella missione specificata. /// </summary> /// <param name="nave">Nave da attaccare.</param> /// <param name="missione">Missione in cui attaccare.</param> /// <returns>true se la nave ha attaccato, false se non ha attaccato.</returns> public override bool Attacca(Missione missione, Nave nave) { for (int i = -dimTrigger + 1; i < dimTrigger; i++) { for (int j = -dimTrigger + 1; j < dimTrigger; j++) { Loc2D tempLoc = new Loc2D(i + Loc.X, j + Loc.Y); if (tempLoc.IsEqualTo(nave.Loc)) { int remPunti = new Random().Next(Stats.MinHit, Stats.MaxHit); nave.DecPuntiVita(remPunti); missione.Mappa.UpdateComponenti(); return(true); } } } return(false); }
internal void UpdateComponenti() { void CercaNemico() { for (int i = -1; i < 2; i++) { for (int j = -1; j < 2; j++) { foreach (var n in missione.Nemici) { var tempLoc = new Loc2D(Gioco.Giocatore.Loc.X + i, Gioco.Giocatore.Loc.Y + j); if (tempLoc.IsEqualTo(n.Loc) && !n.IsGameOver) { Attacca_button.Enabled = true; Attacca_button.Show(); Attacca_button.Text = "Attacca: " + n.Nome + "\nHP: " + n.Stats.Hp + "/" + n.Stats.HpMax; return; } else { Attacca_button.Hide(); } } } } } if (Gioco.Giocatore.Stats.Pa > 0)// controllo attacco { CercaNemico(); } else { Attacca_button.Text = "Attacca:\nNon hai energia"; Attacca_button.Enabled = false; } // Controllo per scavare if (missione.Griglia_numerica.Mat[Gioco.Giocatore.Loc.X, Gioco.Giocatore.Loc.Y] == 1) { Scavo_button.Show(); } else { Scavo_button.Hide(); } //aggiorno il label ubriachezza AntiUbriachezza_label.Text = "AntiUbriachezza rimasti: " + Gioco.Giocatore.Inventario.AntiUbriachezza; Ubriachezza_label.Text = "Ubriachezza: " + Gioco.Giocatore.Ubriachezza + "/" + Gioco.Giocatore.UbriachezzaMax; //aggiorno il label determinazione BevandaDet_label.Text = "Bevande Det Rimaste: " + Gioco.Giocatore.Inventario.BevandaDeterminazione; Determinazione_label.Text = "Determinazione: " + Gioco.Giocatore.Determinazione + "/" + Gioco.Giocatore.DeterminazioneMax; //aggiorno label assi legno AssLeg_label.Text = "Assi rimaste: " + Gioco.Giocatore.Inventario.AssiLegno; //aggiorno label rum Rum_label.Text = "Rum rimasto: " + Gioco.Giocatore.Inventario.Rum; //aggiorna energia_label EnergiaNave_label.Text = "Punti azione: " + Gioco.Giocatore.Stats.Pa + "/" + Gioco.Giocatore.Stats.PaMax; // aggiorna label vita VitaNave_label.Text = "Punti Vita: " + Gioco.Giocatore.Stats.Hp + "/" + Gioco.Giocatore.Stats.HpMax; }