DOMANDA Tamagotchi in Java

Akrilix

Nuovo Utente
145
32
Seguire la discussione sotto per gli aggiornaenti sul Tamagotchi.
 
Ultima modifica:

DispatchCode

Utente Attivo
1,163
766
CPU
Intel i7 6700HQ, 2.60Ghz, 4 core 8 threads
Scheda Madre
Asustek
HDD
Hitachi 7200 rpm, 1TB
RAM
16GB DDR4 (2 slot su 4)
GPU
Nvidia Geforce GTX 960M, 4GB
Audio
Realtek
Net
30Mbps/3Mbps con Eolo
OS
Windows 10 64bit

pabloski

Utente Èlite
2,719
789
Ci sono tanti modi per disegnare in Java. E dipende anche da cosa disegnare. Una GUI la disegni in genere con Swing o JavaFX se vuoi usare un toolkit più nuovo.

Nel caso di un gioco non so se questa sia la strada migliore. Dovrai manipolare sprite, per cui è più logico orientarsi verso uno strumento per lo sviluppo di videogiochi.

Detto questo, con Swing puoi sottoclassare JPanel e usare i metodi paint per disegnare il gioco. Ogni aggiunta ( tipo collisioni, fisica, ecc... ) va implementata manualmente. Non il più semplice dei modi, ma comunque http://zetcode.com/tutorials/javagamestutorial/

In alternativa una libreria specifica come Lwjgl o Libgdx è preferibile.
 

Akrilix

Nuovo Utente
145
32
Vi ringrazio per le risposte @pabloski e @DispatchCode, ma alla fine userò la JOptionPane come richiesto dal mio professore.

Avrei invece un altro quesito che continuerò in questo 3D dato che si tratta sempre del Tamagotchi: nel codice qui sotto raffigurante un metodo di una classe figlia dovrei far tornare un valore diverso per ogni possibile azione:
Vaccino: ripristina la salute;
LSD: diminuisce la salute a 20/100 ma rende più fortunati in gioco (altro metodo);
Veleno: uccide il pet.
Per ogni scelta dovrebbe tornarmi un valore specifico, ma mi da questo errore:
/------------------------------------------------------------------------\
This method must return a result of type String
\------------------------------------------------------------------------/

Io il ritorno lo faccio, non capisco perché tale errore.
Inoltre, alcune domande:
1- Vanno bene i return così? O è meglio non scrivere niente nei metodi?
2- Che valore ha il pulsante "Annulla" nella JOptionPane?

Java:
public String modificaSalute () {
     
        String input;
     
        Object [] scelte = {"VACCINO", "LSD", "VELENO"};

        Object scelteInput = JOptionPane.showInputDialog (null, "COSA VUOI USARE:", "CURA", JOptionPane.INFORMATION_MESSAGE, null, scelte, scelte[0]);
     
        input = scelteInput.toString();
     
        switch (input) {
     
            case "VACCINO":
                super.salute = 100;
                return "LA SALUTE E' STATA RIPRISTINATA: " + this.salute;
             
            case "LSD":
                super.salute = 20;
                return "LA SALUTE E' BASSA MA AVRAI PIU' FORTUNA NEL GIOCO: " + this.salute;
         
            case "VELENO":
                super.salute = 0;
                return "ESCI";
             
        }
     
        //return input; QUI E' DOVE ME LO FA METTERE IN AUTOMATICO.
     
    }
 
Ultima modifica da un moderatore:

DispatchCode

Utente Attivo
1,163
766
CPU
Intel i7 6700HQ, 2.60Ghz, 4 core 8 threads
Scheda Madre
Asustek
HDD
Hitachi 7200 rpm, 1TB
RAM
16GB DDR4 (2 slot su 4)
GPU
Nvidia Geforce GTX 960M, 4GB
Audio
Realtek
Net
30Mbps/3Mbps con Eolo
OS
Windows 10 64bit
Immaginavo vi facesse utilizzare Swing.

Dovresti solo settare i valori. La cosa migliore sarebbe richiedere l'input e passare al metodo la scelta fatta (e fare ciò che devi, come settare le variabili).

Il problema deriva dall'utilizzo di un tipo di ritorno String, senza aver tuttavia gestito tutti i casi. Il case gestisce 3 casi... e negli altri?
Dovresti mettere un "default" o al termine dello swing fare un return di un valore, che è dove te lo fa mettere in automatico.

Ma appunto, considerando il tipo di operazione che devi fare, scriverei tutto come detto sopra.
 

Akrilix

Nuovo Utente
145
32
Immaginavo vi facesse utilizzare Swing.

Dovresti solo settare i valori. La cosa migliore sarebbe richiedere l'input e passare al metodo la scelta fatta (e fare ciò che devi, come settare le variabili).

Il problema deriva dall'utilizzo di un tipo di ritorno String, senza aver tuttavia gestito tutti i casi. Il case gestisce 3 casi... e negli altri?
Dovresti mettere un "default" o al termine dello swing fare un return di un valore, che è dove te lo fa mettere in automatico.

Ma appunto, considerando il tipo di operazione che devi fare, scriverei tutto come detto sopra.
Ha detto che swing è troppo avanzato per la situazione in cui ora siamo.

Non capisco cosa tu intenda per "settare i valori", i valori li richiede nel metodo mediante JOptionPane a tendina, e i casi sono quelli poi, non vi è un default, l'utente non è libero di inserire ciò che vuole...
 

DispatchCode

Utente Attivo
1,163
766
CPU
Intel i7 6700HQ, 2.60Ghz, 4 core 8 threads
Scheda Madre
Asustek
HDD
Hitachi 7200 rpm, 1TB
RAM
16GB DDR4 (2 slot su 4)
GPU
Nvidia Geforce GTX 960M, 4GB
Audio
Realtek
Net
30Mbps/3Mbps con Eolo
OS
Windows 10 64bit
JOptionPane fa parte del pacchetto javax.swing.

Il set è ciò che deve fare il metodo: settare il valore di salute a 0, 20 o 100.
Tu hai però dichiarato quel metodo come String, il che significa che deve sempre restituire una stringa (o un riferimento ad un oggetto null). Ed il compilatore giustamente si lamenta in quanto in uno di quei casi non restituisci alcun valore.

Visto però il compito che dovrebbe svolgere quel metodo, non dovresti restituire il messaggio (la stringa) in quel modo. Andrebbe gestita separatamente; in caso avessi bisogno della stringa da più parti, cosa fai? Duplichi quella parte di codice? E se cambia il messaggio, modifichi le stringhe in tutti i metodi?

Chiaramente in questo caso è solo un esercizio, quindi avrai più libertà. :)

Per quanto riguarda i valori restituiti quando premi i bottoni, puoi consultare l'API, e fare riferimento a questo https://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html
 

Akrilix

Nuovo Utente
145
32
Ciao @DispatchCode, ho sistemato la cosa e ho anche quasi finito di svilupparlo. Secondo te, dovrei farmi un account e poi caricarlo su GitHub?
Vero, è molto semplice come programma, ma sono comunque più di 500 righe di codice e ci sono molte cose carine. Tu che ne dici?
 

pabloski

Utente Èlite
2,719
789
Ciao @DispatchCode, ho sistemato la cosa e ho anche quasi finito di svilupparlo. Secondo te, dovrei farmi un account e poi caricarlo su GitHub?
Vero, è molto semplice come programma, ma sono comunque più di 500 righe di codice e ci sono molte cose carine. Tu che ne dici?

Perchè no? Poi un repository remoto ti salva in caso dovessi perdere i dati che hai in locale. I dischi mica sono eterni. E gli errori sono dietro l'angolo.

p.s. siccome Github è stata comprata da MS, un bel pò di gente sta migrando su Gitlab...chiusa parentesi :D
 

DispatchCode

Utente Attivo
1,163
766
CPU
Intel i7 6700HQ, 2.60Ghz, 4 core 8 threads
Scheda Madre
Asustek
HDD
Hitachi 7200 rpm, 1TB
RAM
16GB DDR4 (2 slot su 4)
GPU
Nvidia Geforce GTX 960M, 4GB
Audio
Realtek
Net
30Mbps/3Mbps con Eolo
OS
Windows 10 64bit
Ciao @DispatchCode, ho sistemato la cosa e ho anche quasi finito di svilupparlo. Secondo te, dovrei farmi un account e poi caricarlo su GitHub?
Vero, è molto semplice come programma, ma sono comunque più di 500 righe di codice e ci sono molte cose carine. Tu che ne dici?

Bravo!
Prima di caricarlo devi avere le basi di un VCS, Git. Alla fine Github è solo un host.
Comunque se vuoi puoi farlo. ;)
Post automatically merged:

p.s. siccome Github è stata comprata da MS, un bel pò di gente sta migrando su Gitlab...chiusa parentesi :D

Io non sono Microsoft fanboy, ma nemmeno contro. È un buon servizio come prima, ed inoltre ci sono anche i repo privati gratuiti ora. :P
 

Akrilix

Nuovo Utente
145
32
Perchè no? Poi un repository remoto ti salva in caso dovessi perdere i dati che hai in locale. I dischi mica sono eterni. E gli errori sono dietro l'angolo.

p.s. siccome Github è stata comprata da MS, un bel pò di gente sta migrando su Gitlab...chiusa parentesi :D
Come mai vanno su questo GitLab?
 
Ultima modifica:

DispatchCode

Utente Attivo
1,163
766
CPU
Intel i7 6700HQ, 2.60Ghz, 4 core 8 threads
Scheda Madre
Asustek
HDD
Hitachi 7200 rpm, 1TB
RAM
16GB DDR4 (2 slot su 4)
GPU
Nvidia Geforce GTX 960M, 4GB
Audio
Realtek
Net
30Mbps/3Mbps con Eolo
OS
Windows 10 64bit
Come mai vanno su questo GitLab?

Perché non è di Microsoft. :P
Io ho l'account anche di là, ma solo perché offrivano è offrono i repo privati in maniera gratuita.
 

DispatchCode

Utente Attivo
1,163
766
CPU
Intel i7 6700HQ, 2.60Ghz, 4 core 8 threads
Scheda Madre
Asustek
HDD
Hitachi 7200 rpm, 1TB
RAM
16GB DDR4 (2 slot su 4)
GPU
Nvidia Geforce GTX 960M, 4GB
Audio
Realtek
Net
30Mbps/3Mbps con Eolo
OS
Windows 10 64bit
No, non è a pagamento. Sino a qualche mese fa erano free i repo pubblici, se li volevi privati pagavi (cifre comunque basse).
Ora invece hanno reso free anche i repo privati.

Puoi far riferimento al materiale che trovi qui https://git-scm.com/doc :)
Quello che hai linkato va bene, ma verifica che sia l'ultima versione.
 

Entra

oppure Accedi utilizzando

Hot: E3 2021, chi ti è piaciuto di più?

  • Ubisoft

    Voti: 30 22.4%
  • Gearbox

    Voti: 2 1.5%
  • Xbox & Bethesda

    Voti: 87 64.9%
  • Square Enix

    Voti: 10 7.5%
  • Capcom

    Voti: 6 4.5%
  • Nintendo

    Voti: 18 13.4%
  • Altro (Specificare)

    Voti: 12 9.0%

Discussioni Simili