Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [java] Inserire pausa/riprendi in un gioco

    Salve a tutti, non sono molto esperto con il linguaggio java e mi servirebbe un aiuto per inserire l'effetto pausa / riprendi durante lo svolgimento di un videogame.

    In particolare mi stavo dilettando con quello che viene descritto nella guida per principianti qui: http://zetcode.com/tutorials/javagamestutorial/breakout
    Viene usato il linguaggio Swing.

    Questa guida spiega in breve ma molto bene come funziona il semplice videogame, tuttavia non c'è l'opzione di mettere in pausa il tutto. Mi chiedevo se potevate darmi una mano per prendere familiarità con questa funzione. Non è che avete qualche dritta da darmi?
    Vi ringrazio infinitamente

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [java] Inserire pausa/riprendi in un gioco

    Originariamente inviato da Undeadraven
    tuttavia non c'è l'opzione di mettere in pausa il tutto. Mi chiedevo se potevate darmi una mano per prendere familiarità con questa funzione.
    In una applicazione "grafica" tutto va avanti in base a degli "eventi" (da tastiera, da mouse, anche da eventuali timer o altro).
    Pertanto per "sospendere" il progresso di una applicazione grafica non è che c'è qualcosa di espliciti/unico/standard per fare questo!! Dipende da quali sono gli eventi. Potrebbe essere sufficiente stoppare un timer o disabilitare dei pulsanti o anche più banalmente mettere un flag che dica ad esempio di ignorare dei click su un pannello.

    Ripeto: tutto funziona a "eventi" che permettono di passare eventualmente da uno "stato" all'altro. Quindi il punto è solo quello di fare in modo che o non ci siano eventi o si vada in uno stato per cui gli eventi siano ignorati o solo certi eventi facciano tornare ad uno stato "normale".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Ah ok, pensavo ci fosse qualcosa di più "meccanico".
    Nell'applicazione che ho linkato c'è effettivamente un timer come avevi detto te. Immagino di dover agire su quello ma cercando sul sito java vedo che alcuni metodi per interagire con il timer sono "deprecated"..
    Como posso fare quindi per inserire una pausa / riprendi se quei metodi che sembrano appositamente creati non vanno bene?

  4. #4
    Originariamente inviato da Undeadraven
    Como posso fare quindi per inserire una pausa / riprendi se quei metodi che sembrano appositamente creati non vanno bene?
    Puoi trovare un modo per farlo:
    ad esempio usi un flag boolean (all'interno della tua istanza di TimerTask), che dunque funge da semaforo, e definisci le modalità per modificare/accedere ad esso in modo da poter mettere in pausa, farlo ricominciare dal punto in cui lo hai messo in pausa oppure stopparlo definitivamente.

  5. #5
    ti ringrazio per il consiglio solo che non essendo al tuo livello non ho capito molto bene cosa hai detto. Purtroppo come dicevo sopra sono alle prime armi ed ho difficoltà ad interpretare un consiglio del genere. Non è che potresti farmi un esempio, magari riferendoti al mio codice se non hai tempo di "inventarne" uno te. Un esempio di qualsiasi genere mi sarebbe utile, non ho mai sentito parlare di flag

  6. #6
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Undeadraven
    non ho mai sentito parlare di flag
    Un flag è una semplice variabile booleana, nulla di esoterico.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  7. #7
    Originariamente inviato da Undeadraven
    non ho mai sentito parlare di flag
    Per flag intendo: variabile booleana.
    Banalmente: se la variabile è uguale a true il task esegue le sue operazioni, no altrimenti.

  8. #8
    Ah ok ora ho capito cosa significa flag. In pratica devo inserirla in un ciclo "while" e dentro di questo ci rinchiudo il timer?

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Undeadraven
    Ah ok ora ho capito cosa significa flag. In pratica devo inserirla in un ciclo "while" e dentro di questo ci rinchiudo il timer?
    No, perché se sei nel contesto del EDT (event dispatch thread, il thread in cui vengono dispacciati eventi e "disegnata" la interfaccia) e lo tieni tu impegnato, andresti solo a "congelare" l'intera interfaccia utente.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  10. #10
    Originariamente inviato da Undeadraven
    Ah ok ora ho capito cosa significa flag. In pratica devo inserirla in un ciclo "while" e dentro di questo ci rinchiudo il timer?
    A parte che concettualmente è sbagliato;
    come diceva andbin sei nel contesto dell'EDT e la documentazione della Sun consiglia di non usare il java.util.Timer in questo caso, e specifica l'uso del javax.swing.Timer.

    Potresti però sfruttare la logica dei Thread per implementare l'esempio che ti ho fatto. Prova a scrivere un programma banale nel quale l'interfaccia fa qualcosa e l'utente può decidere quando quel qualcosa può iniziare, quando metterlo in pausa e farlo riprendere.

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.