private void OnVisibleChanged(object sender, EventArgs e)
        {
            if (Visible)
            {
                if (Gioco.Giocatore.GiocatoreCarte.IsGameOver)
                {
                    Gioco.Giocatore.Restart();
                    missione.TurnoNemico();         //faccio muovere i nemici per mettere apposto le celle

                    missione.Ranking.IncGameOver(); //aumenta il conteggio dei tuoi game over

                    Gioco.Giocatore.Stats.Pa = Gioco.Giocatore.Stats.PaMax;
                    EnergiaNave_label.Text   =
                        "Punti azione: " + Gioco.Giocatore.Stats.Pa + "/" +
                        Gioco.Giocatore.Stats.PaMax; //aggiorna energia_label

                    Griglia_pictureBox[Gioco.Giocatore.Loc.X, Gioco.Giocatore.Loc.Y].BackgroundImage =
                        Resources.nave_pirata;

                    switch (missione.Griglia_numerica.Mat[Gioco.Giocatore.Loc.X, Gioco.Giocatore.Loc.Y])
                    {
                    case 0:
                        missione.Mappa.temp = Resources.mare;
                        break;

                    case 1:
                        missione.Mappa.temp = Resources.isola1;
                        break;

                    case -1:
                        missione.Mappa.temp = Resources.cross;
                        break;
                    }
                }
            }

            foreach (var n in missione.Nemici)
            {
                n.Affonda(missione);// controllo automatico della vita in Affonda
            }
            //se la nave nemico e quella giocatore sono sovrapposte
            //la giocatore viene ripristinata
            Griglia_pictureBox[Gioco.Giocatore.Loc.X, Gioco.Giocatore.Loc.Y].BackgroundImage =
                Resources.nave_pirata;

            Attacca_button.Hide();
        }
        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();
        }
        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;
        }