Visualizzazione dei risultati da 1 a 5 su 5

Hybrid View

  1. #1

    [JAVA] Interfaccia grafica per avventura testuale

    Ciao a tutti! sto cercando ovunque su internet, ma non trovo niente...ho bisogno di un'interfaccia grafica da applicare ad un codice di un'avventura testuale implementata con soli system.out.println() (chiedere azione), scanner.nextLine() (dire azione)....mi basta una cosa semplicissima, una textArea sarebbe sufficiente! Vi dico che mi basta poco anche perchè se si potesse io userei come interfaccia la console di eclipse ahah....
    Avevo provato con dei JOptionPane, ma non posso avere più di un frame aperto e mi causa problemi! grazie in anticipo

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da teojuve93 Visualizza il messaggio
    Ciao a tutti! sto cercando ovunque su internet, ma non trovo niente...ho bisogno di un'interfaccia grafica da applicare ad un codice di un'avventura testuale implementata con soli system.out.println() (chiedere azione), scanner.nextLine() (dire azione)....mi basta una cosa semplicissima, una textArea sarebbe sufficiente! Vi dico che mi basta poco anche perchè se si potesse io userei come interfaccia la console di eclipse ahah....
    Avevo provato con dei JOptionPane, ma non posso avere più di un frame aperto e mi causa problemi! grazie in anticipo
    Ok, scartiamo quindi JOptionPane. La questione comunque è questa: realizzare un "reindirizzamento" di standard-input/output per utilizzare una interfaccia grafica è tecnicamente possibile. Richiede però molta attenzione e una buona conoscenza del I/O in particolare degli Input/OutputStream e di PrintStream. E bisogna valutare anche alcune questioni. Ne ho parlato più volte sul forum, eventualmente se ritrovo la/e discussione/i te le indico.

    Ma esiste un'altra opzione, anche più interessante: puoi "nascondere" input e output dietro una "astrazione"? Chiaramente il tuo codice del gioco andrebbe modificato. Intendo dire se invece di usare direttamente System.out e Scanner puoi incapsulare questo in una classe, magari rappresentata a livello più astratto da una interfaccia del tipo:

    codice:
    public interface UserIO {
        String readLine();
        void printLine(String text);
    }

    Poi potresti avere implementazioni es. ConsoleUserIO o GUIUserIO. Astraendo le cose in questo modo, non devi andare a incasinarti con Input/OutputStream! E potresti pure rendere facilmente "switchabile" la tua applicazione tra modalità console o GUI.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Penso di aver capito cosa mi hai suggerito di fare, ma mi risulta davvero difficile applicarlo, non sono ancora molto esperto e non ho molta praticità... Se io ti scrivo questo piccolo codice, tu puoi riscriverlo con la correzione per fare quello di cui ho bisogno?

    public class Gioco{

    public void gioca(){
    Scanner input= new Scanner (System.in);
    System.out.println ("Ciao come ti chiami?");
    String esempio= input.nextLine();
    System.out.println ("Ciao "+ esempio);
    }
    }


    Poi c'è l'interfaccia Interface in cui ho una JTextArea textArea.

    Come faccio quello che mi hai suggerito?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da teojuve93 Visualizza il messaggio
    Penso di aver capito cosa mi hai suggerito di fare, ma mi risulta davvero difficile applicarlo, non sono ancora molto esperto e non ho molta praticità...

    Come faccio quello che mi hai suggerito?
    Ok, capisco le difficoltà. Ma la interface che ho detto (chiaramente puoi anche farcirla come vuoi, per es. al metodo readLine si potrebbe passare una stringa di "prompt") e una implementazione che opera sullo standard-in/out classico riusciresti a farle?

    Tieni presente che non è obbligatorio avere una interface di astrazione ... potresti anche "cablare" il tuo codice per usare direttamente una classe (comunque con i metodi di alto livello come ho detto) che gestisce la interfaccia grafica. Una interfaccia di astrazione serve principalmente per rendere più facilmente interscambiabili le implementazioni.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Non ho mai avuto a che fare con interfacce, e neanche con il metodo readLine... non e' che potrebbe farmi vedere un'applicazione diretta su quelle 6 righe di codice che le ho scritto? mi farebbe un grosso favore

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.