Errore fatale nel mio gioco.

di il
5 risposte

Errore fatale nel mio gioco.

Salve.

Stavo programmando il mio gioco quando con l'aiuto di un video su YouTube ho aggiunto delle stringhe per mettere musica. Appena avvio il gioco mi dà un errore fatale tutti gli oggetti sullo schermo nel gioco diventano infiniti e il gioco crasha.

Fin qui tutto bene è semplicemente crashato basterà rimuovere le linee aggiunte, giusto? Eh il problema sorge qui pur avendo eliminato tutte 9 le stringhe aggiunto avviando il gioco mi crasha facendo comprarire oggetti infiniti.

Vi prego COSA DIAVOLO DEVO FARE?
Sto da una settimana a programmare sto giochino di me***...

Grazie.

5 Risposte

  • Re: Errore fatale nel mio gioco.

    Mi spiace ma a parte presupporre l'uso del linguaggio Java (dato che hai postato qui):

    - non è chiaro il contesto
    - non è chiaro quali librerie/framework hai usato
    - non è chiaro cosa intendi per "errore fatale"
    - non è chiaro cosa c'entrano le stringhe con la musica e con il crash (una stringa di testo di per sé non fa crashare un bel nulla .. dipende cosa rappresenta e DOVE viene usata)
  • Re: Errore fatale nel mio gioco.

    Ti spiego:
    E' un gioco in cui con il mouse muovi il player in basso e devi prendere degli oggetti che cadono, l'errore che mi dice è:

    Exception in thread "Thread-15" java.util.ConcurrentModificationException
    at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901)
    at java.util.ArrayList$Itr.next(ArrayList.java:851)
    at pizzetta.s.adventures.PizzettaSAdventures.aggiornai(PizzettaSAdventures.java:109)
    at pizzetta.s.adventures.PizzettaSAdventures.run(PizzettaSAdventures.java:125)
    at java.lang.Thread.run(Thread.java:745)

    Ma non essendo un esperto non capisco cosa provoca questo, se vado alla linea 109 del mio gioco vedo questa:
    
     private void aggiornai() { ///////////////////AGGIUNTO PER L'URTO DELLE INSALATE
            ArrayList<Insalata> insalate = cinsalate.getInsalate();
            for(Insalata insalata : insalate) {
                if(GestoreCollisioni.controllaiCollisione(giocatore, insalata)) {
                    
                    insalate.remove(insalata);
                    break;
                }
            } 
        }
    
    E alla linea 125:

    aggiornai();

    Accantto alla linea 109 ce il triangolino di NetBeans che mi dice: Rename the local variable, ma:
    1) Ho seguito passo passo una guida, quindi non credo proprio che debba rinominare qualche variabile;
    2) Ieri sera funzionava prima di aggiungere un codice che ora scrivero'.
    
    public static void music() throws IOException {
        AudioPlayer AudioPlayer = AudioPlayer.player;
        AudioStream BGM;
        AudioData MG; 
        ContinuousAudioDataStream loop = null;
        
        BGM = new AudioStream(new FileInputStream("music.wav"));
    }
    }
    
    
  • Re: Errore fatale nel mio gioco.

    O mio DIO, SONO UN IDIOTA.

    andando a cancellare ho eliminato senza farlo apposta anche 3 zero dal tempo di spawn degli oggetti, da 8000 ms a 8....

    Grazie tante comunque!
  • Re: Errore fatale nel mio gioco.

    Gia' che sono qui, non potreste dirmi come posso aggiungere un loop musicale nel mio gioco?
  • Re: Errore fatale nel mio gioco.

    J4FPredator ha scritto:


    Exception in thread "Thread-15" java.util.ConcurrentModificationException
            ArrayList<Insalata> insalate = cinsalate.getInsalate();
            for(Insalata insalata : insalate) {
                if(GestoreCollisioni.controllaiCollisione(giocatore, insalata)) {
                    
                    insalate.remove(insalata);
                    break;
                }
    
    Quando si usa il "for-each" su una collezione, viene usato sotto sotto il java.util.Iterator fornito dalla collezione. Mentre si itera con l'Iterator, NON si può modificare strutturalmente la collezione, né con i suoi add, remove ecc... L'unica possibilità per modificarla è usare il remove del Iterator.

    E quindi, detto in altro modo, se vuoi rimuovere l'elemento corrente nella iterazione, allora DEVI usare l'Iterator esplicitamente, non puoi usare il for-each.
Devi accedere o registrarti per scrivere nel forum
5 risposte