Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: salvare partita gioco

  1. #1

    salvare partita gioco

    Salve, sto creando un gioco in java e devo inserire la funzione salva e carica partita. Ho provato con ObjectInputStream e ObjectOutputStream ma quando carico la partita non succede nulla. HELP

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,318
    Molto vago, niente codice, "non succede nulla".
    Prova a spiegare meglio... e verifica eventuali eccezioni.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    codice:
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.ObjectOutputStream;
    import java.util.stream.Stream;
    
    
    import javax.swing.JOptionPane;
    
    
    public class SaveGame implements MouseListener {
        public SaveGame () {
        }
    
    
        public void mouseClicked(MouseEvent arg0) {}
        public void mouseEntered(MouseEvent arg0) {}
        public void mouseExited(MouseEvent arg0) {}
        public void mousePressed(MouseEvent arg0) {
            
            NewGame3 a = new NewGame3();
            int risposta = JOptionPane.showConfirmDialog(null, "Vuoi salvare il gioco ?", "Save Game", 0);
            if(risposta==JOptionPane.YES_OPTION){
                ObjectOutputStream save = null;
                try {
                    save = new ObjectOutputStream(new FileOutputStream("salvataggio.sav"));
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                try {
                    save.writeObject(a);
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            
        }
        public void mouseReleased(MouseEvent arg0) {}
    }
    Ultima modifica di LeleFT; 09-12-2015 a 18:19 Motivo: Aggiunti i tag CODE

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,318
    Mi lascia molto perplesso il tuo concetto di

    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    Prova a spiegare meglio

    Tutto ciò che ti si può dire in merito a quel codice è che non fai un flush() per forzare la scrittura degli eventuali byte bufferizzati e non chiudi il file, quindi molto probabilmente non verrà scritto nulla nel file.

    Punto.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    scusami ma mi sto scervellando comunque sono riuscito a salvare la partita ma ora non riesco a caricare la partita:
    ecco le classi:

    SALVA:

    codice:
    public class SaveGame implements MouseListener,Serializable {
        public SaveGame () {
            }
    
    
        @Override
        public void mouseClicked(MouseEvent e) {
            // TODO Auto-generated method stub
            
        }
    
    
        @Override
        public void mouseEntered(MouseEvent e) {
            // TODO Auto-generated method stub
            
        }
    
    
        @Override
        public void mouseExited(MouseEvent e) {
            // TODO Auto-generated method stub
            
        }
    
    
        @Override
        public void mousePressed(MouseEvent e) {
            NewGame3 a = new NewGame3();
            int risposta = JOptionPane.showConfirmDialog(null, "Vuoi salvare il gioco ?", "Save Game", 0);
            if(risposta==JOptionPane.YES_OPTION){
                ObjectOutputStream save = null;
                try {
                    save = new ObjectOutputStream(new FileOutputStream("salvataggio.txt"));
                    save.writeObject(a.frame3.getContentPane());
                    save.close();
                } catch (IOException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
                
            }
            
        }
    
    
        @Override
        public void mouseReleased(MouseEvent e) {
            // TODO Auto-generated method stub
            
        }
    }

    CARICA:

    codice:
    public class LoadGame implements MouseListener,Serializable {
    
    
        @Override
        public void mouseClicked(MouseEvent arg0) {
            // TODO Auto-generated method stub
            
        }
    
    
        @Override
        public void mouseEntered(MouseEvent arg0) {
            // TODO Auto-generated method stub
            
        }
    
    
        @Override
        public void mouseExited(MouseEvent arg0) {
            // TODO Auto-generated method stub
            
        }
    
    
        @Override
        public void mousePressed(MouseEvent arg0) {
            ObjectInputStream save;
            NewGame3 a = new NewGame3();
            try {
                save = new ObjectInputStream(new FileInputStream("C:/Users/andrea/Desktop/Gioco/"+"salvataggio"+".sav"));
                save.readObject();
            } catch (IOException | ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    
    
        @Override
        public void mouseReleased(MouseEvent arg0) {
            // TODO Auto-generated method stub
            
        }
    
    
    }
    Ultima modifica di LeleFT; 10-12-2015 a 10:19 Motivo: Aggiunti i tag CODE

  6. #6
    ciao.
    per formattare il codice usa i tag
    [code]
    your code here
    [/code]

    in questa maniera la comprensione è più complicata
    Ciao.
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,318
    codice:
    save.readObject();

    Questa istruzione legge l'oggetto dal file e... lo butta via.

    La documentazione va letta:

    codice:
    Object readObject(): Reads an Object from the ObjectInputStream
    Returns: the object read from the stream

    Quindi, se chiami readObject() e non assegni il valore di ritorno a nulla, l'oggetto letto lo butti via.
    Ci si aspetta che quel metodo venga usato in questo modo:

    codice:
    variabile = (cast) save.readObject();

    Dove "variabile" è la variabile a cui assegnare l'oggetto letto e il cast serve a castare la lettura al tipo corretto (visto che readObject() restituisce un Object).

    Ad ogni modo, salvare su file il content-pane di un componente grafico non ha gran ché senso. Dovresti ri-pensare il tutto profondamente. Quello che andrebbe salvato è lo "stato" del tuo gioco, che poi andrebbe ri-letto dal file e ricostruito in base alle informazioni lette.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  8. #8
    Come devo fare per salvare la partita in modo corretto? Cioe senz usare GetContenetPane()

  9. #9
    Questo lo devi progettare tu.
    Fosse un gioco di strategia ti consiglierei di salvare il livello, la posizione del tuo/tuoi personaggi, il numero di vite ad esempio ecc.
    Poi non sappiamo bene che tipo di gioco è, ad ogni modo devi salvare i parametri che ti servono per ricaricare il tuo savegame.
    Ciao.
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,318
    Non sappiamo niente di niente del tuo programma: come facciamo a darti informazioni? Tutto ciò che hai postato ci fa capire che da qualche parte viene gestito un clic del mouse (tramite MouseListener... cioè a bassissimo livello) che salva la parte grafica di una finestra su un file e da qualche altra parte è gestito (sempre tramite MouseListener) un clic del mouse che legge questo file e butta via le informazioni lette.

    Del tuo gioco non sappiamo nulla.
    Delle classi usate non sappiamo nulla.
    Di come venga gestito lo stato del gioco non sappiamo nulla.
    Di come lo stato del gioco venga gestito visivamente sui componenti non sappiamo nulla.

    Ti è stato chiesto di spiagre meglio la tua situazione e hai postato del codice senza dire alcunché.

    Alcune indicazioni ho provato a dartele (quello che va salvato sul file è "lo stato del gioco": da qualche parte avrai le informazioni sullo stato del gioco in un determinato momento o no? Quello va salvato su file... e non è detto che serva la serializzazione), ma è impossibile sostenere una discussione se non si danno le informazioni necessarie.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.