Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Problemi con la gestione del gioco

    Ciao a tutti ragazzi e scusate se vi importuno nuovamente
    In teoria il gioco che sto sviluppando è finito per vi sono alcuni piccoli problemi a cui nn so dare una soluzione:
    Il primo problema è quello del punteggio che invece di aumentare di 10 punti ogni volta che u naereo viene abbattuto ne aumenta di cira 2oo;
    L'aereo che controllo inoltre riesce ad andare qnd si muove più in basso di qunto dovrebbe infatti sparisce dal panello per poi ricomparire riportando il mouse in alto ( qnd facendolo muovere verso l'alto), e con un colpo ries o a uccidere + nemici quando invece non dovrebbe farlo, e qundo i nemici sono molto vicini a volte il colpo non li abbatte e non riesco a capirne il motivo dato che non lo fà sempre...

    codice:
    public class Aereo extends javax.swing.JFrame
    {
    
        public boolean control;
        private JLabel[] nemico;
        private JLabel[] fuocon;
    
        private class Game extends Thread
        {
            @Override
            public void run()
            {
                Energia.setValue(100);
                control=true;
                boolean z;
                int t=0;
         
                while (control)
                {   
                   for (int c = 0; c < 4; c++)
                   {
                       z=Colpitoame();
                       
                       if((nemico[c].isVisible())&&(z==false))
                       {
                         fuocon[c].setVisible(true);
                       }
    
                       if (nemico[c].getLocation().x <= 0)
                       {
                          int y = (int) ((430-0+1)*Math.random());
                          nemico[c].setLocation(800,y);
                          t=t+1;
                          nemico[c].setVisible(true);
    
                          fuocon[c].setLocation(nemico[c].getLocation().x, nemico[c].getLocation().y+40);
    
                          if((nemico[c].isVisible())&&(z==false))
                          {
                              fuocon[c].setVisible(true);
                          }
    
                       }
    
                       if (fuocon[c].getLocation().x <= 0)
                       {
                          fuocon[c].setLocation(nemico[c].getLocation().x, nemico[c].getLocation().y+40);
                       }
    
                      nemico[c].setLocation(nemico[c].getLocation().x - 1 , nemico[c].getLocation().y);
      
                     
                      if (z==false)
                      {
                        fuocon[c].setLocation(fuocon[c].getLocation().x - 4 , fuocon[c].getLocation().y);
                      }
    
                      
    
                      if (t==20)
                      {
                          Azzeramento();
                          control=false;
                          result.setIcon(new ImageIcon(getClass().getResource("/game/graphics/images/haivinto.png")));
                          result.setVisible(true);
    
                      }
                     
                  }
                  try
                   {
                     sleep(6);//velocità aerei nemici
                   }
                  catch (InterruptedException ex) {  }
               }
    
               
               Abbandona.setVisible(true);
               Rigioca.setVisible(true);
    
                
    
              
    
             }
    
        }
    
        private void Avversari()
        {
            int x,y;
    
    
            nemico = new JLabel[4];
            fuocon = new JLabel[4];
    
            for (int i = 0; i < 4; i++)
            {
                nemico[i] = new JLabel(new ImageIcon(getClass().getResource("/game/graphics/images/nemico.png")));
                nemico[i].setVisible(true);
    
                fuocon[i] = new JLabel(new ImageIcon(getClass().getResource("/game/graphics/images/fuoco nemico.png")));
                fuocon[i].setVisible(false);
    
                nemico[i].setSize(60, 75);
                fuocon[i].setSize(40, 10);
    
                y = (int) ((480-0+1)*Math.random());
                nemico[i].setLocation(700 , y);
    
                fuocon[i].setLocation(nemico[i].getLocation().x  , nemico[i].getLocation().y +40);
    
                jPanel1.add(nemico[i]);
                jPanel1.add(fuocon[i]);
    
            }
    
        }
    
    
        
        // in questa classe gestiamo il lancio del missile
    
        
    
       private void Score()
         {
            String k= lbScoreV.getText();
            int x=Integer.parseInt(k)+1;
            k=Integer.toString(x);
            lbScoreV.setText(k);
         }
    
       private boolean Impatto(JLabel pAereo,JLabel pFuoco )
        {
            Dimension fuocoD= pFuoco.getSize();
            Dimension AereoD= pAereo.getSize();
            Point locFuoco= pFuoco.getLocation();
            Point locAereo= pAereo.getLocation();
            Rectangle fuocoR= new Rectangle(locFuoco, fuocoD);
            Rectangle AereoR= new Rectangle(locAereo, AereoD);
            return fuocoR.intersects(AereoR);
        }
    
        public boolean Colpito()
        {
            boolean colpitos = false;
            for (int i = 0; i < 4; i++)
            {
              if(this.Impatto(nemico[i],fuoco))
              {
                colpitos = true;
                nemico[i].setVisible(false);
                fuocon[i].setVisible(false);
                //lbScoreV.setText(lbScoreV.getText()+);
                Score();
              }
            }
            return colpitos;
         }
    
         public void Energya()
         {
        
            int x;
            boolean lose=false;
           
                if (Energia.getValue()==0)
                {
                    if(life3.isVisible())
                    {
                     life3.setVisible(false);
                     Energia.setValue(100);
                    }
                    else  {
                            if(( ! life3.isVisible())&&(life2.isVisible()))
    
                            {
                                 life2.setVisible(false);
                                 Energia.setValue(100);
                            }
                            else{
                                     if(( ! life3.isVisible())&&( ! life2.isVisible())&&(life1.isVisible()))
                                     {
                                             life1.setVisible(false);
                                             lose=true;
                                             control=false;
                                             Azzeramento();
                                             result.setIcon(new ImageIcon(getClass().getResource("/game/graphics/images/haiperso.png")));
                                             result.setVisible(true);
                                             
                                             
                                     }
    
                                }
                          }             
                }
         }
    
         public boolean Colpitoame()
        {
            boolean colpitos = false;
            for (int i = 0; i < 4; i++)
            {
              if((this.Impatto(aereo,fuocon[i]))&&(fuocon[i].isVisible()))
              {
                colpitos = true;
                fuocon[i].setVisible(false);
              }
            }
            if(colpitos)
            {
                Energia.setValue(Energia.getValue() - 2);
            }
            Energya();
            return colpitos;
         }
    
    
         public void Azzeramento()
         {
           aereo.setVisible(false);
           fuoco.setVisible(false);
           for (int i = 0; i < 4; i++)
            {
                nemico[i].setVisible(false);
                fuocon[i].setVisible(false);
    
            }
    
         }
    
        private class Fuoco extends Thread
        {
            @Override
            public void run()
            {
                    boolean k;
                    Point loc = fuoco.getLocation();
    
                    for (int i = 0; i < 400; i++)
                    {
    
                        k=Colpito();
                        if (k==false)
                        {
                            fuoco.setLocation(fuoco.getLocation().x + 2, fuoco.getLocation().y);
                            try
                            {
                                sleep(2);//tempo dopo cui scaglia il missile
                            }
                            catch (InterruptedException ex) {  }
                        }
                    }
    
                fuoco.setVisible(false);
                fuoco.setLocation(loc.x,loc.y);
                addMouseListener(new Mouse());
            }
        }
    
        private class Mouse extends MouseAdapter
        {
    
            @Override
            public void mouseMoved(MouseEvent e)
            {
                int y = e.getPoint().y;
                aereo.setLocation(aereo.getLocation().x, y - aereo.getSize().height / 2);
            }
    
            @Override
            public void mousePressed(MouseEvent e)
            {
                aereo.setIcon(new ImageIcon(getClass().getResource("/game/graphics/images/aereo+fuoco.png")));
                aereo.setSize(75, 75);
            }
    
            @Override
            public void mouseReleased(MouseEvent e)
            {
                int y = e.getPoint().y;
                 if(aereo.isVisible())
                 {
                    fuoco.setVisible(true);
                 }
    
                aereo.setIcon(new ImageIcon(getClass().getResource("/game/graphics/images/aereo.png")));
                fuoco.setLocation(fuoco.getLocation().x+30, (y - fuoco.getSize().height / 2)-10);
                Fuoco f = new Fuoco();
                f.start();
                removeMouseListener(getMouseListeners()[0]);
            }
        }
        
        public Aereo()
        {
            initComponents();
            result.setVisible(false);
            fuoco.setVisible(false);
            Abbandona.setVisible(false);
            Rigioca.setVisible(false);
            Avversari();
            addMouseMotionListener(new Mouse());
            addMouseListener(new Mouse());
            Game g = new Game();
            g.start();
            
        }



    Poi vi volevo chiedere un altra cosa : io avevo pensato di far aprtire un musichetta almeno per quando si vicne o si perde il gioco e di farlo partire senza ogni volta aprire NetBeans. Ho letto qualche discussione precedente al riguardo ma nn ho capito molto... Qualcuno potrebbe fami un esempio pratico, anche semplice giusto per farmi capire come fare?

  2. #2
    Qualcuno può darmi unn mano? almeno per quanto riguarda la musica...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.