Programma in Java

di il
3 risposte

Programma in Java

Buonasera, ho da poco iniziato ad usare Java per programmare ma ho riscontrato alcune difficoltà. Devo svolgere un esercizio su Socket, Server e Client ma non so da dove iniziare. La traccia è la seguente: l'utente attraverso un Client entri in un sistema che gli consenta di indovinare una parola che unserver ha precedentemente scelto da un insieme di 10 parole. L'utente ha 10 tentativi per indovinare la parola. Il gioco termina nel momento in cui l'utente ha terminato i suoi tentativi o ha indovinato la parola. Potreste aiutarmi? Grazie mille

3 Risposte

  • Re: Programma in Java

    Come sai qui non si fornisce codice pronto per gli esercizi.

    Prova a scrivere tu il codice e a presentarlo indicando il problema specifico che hai.
  • Re: Programma in Java

    Buonasera, ho iniziato a scrivere il mio codice sviluppando il Server con un approccio Multithreading, ora però ho un dubbio, come faccio a scrivere il codice per il Server che permetta a quest'ultimo di scegliere una parola da un insieme di 10 parole? Potreste spiegarmi come fare?
    
    //Importare i package
    import java.io.*;
    import java.net.*;
    
    //Creare una classe per il Multithreading
    class ServerThread extends Thread {
    private Socket socket;
    public ServerThread (Socket socket) {
    this.socket = socket;
    }
    
    //Eseguire il Thread sul Socket
    public void run() {
    try {
    DataInputStream is = new DataInputStream(socket.getInputStream());
    DataOutputStream os = new DataOutputStream(socket.getOutputStream());
    while(true) {
    String userInput = is.readLine();
    if (userInput == null || userInput.equals("QUIT")
    break;
    os.writeBytes(userInput + '\n');
    System.out.println ("Il Client ha scritto: "+ userInput);
    }
    os.close();
    is.close();
    System.out.println ("Ho ricevuto una chiamata di chiusura da:\n" + socket + "\n");
    socket.close();
    }
    catch (IOException e) {
    System.out.println("IOException: " + e);
    }
    }
    }
    
    //Classe Server per attivare la Socket
    public class TCPParallelServer {
    public void start() throws Exception {
    ServerSocket serverSocket = new ServerSocket(7777);
    
    //Ciclo infinito di ascolto dei Client
    while(true) {
    System.out.println("In attesa di chiamate dai Client... ");
    Socket socket = serverSocket.accept();
    System.out.println("Ho ricevuto una chiamata di apertura da:\n" + socket);
    ServerThread serverThread = new ServerThread(socket);
    serverThread.start();
    }
    }
    
    public static void main (String[] args) throws Exception {
    TCPParallelServer tcpServer = new TCPParallelServer();
    tcpServer.start();
    }
    }
    
    
  • Re: Programma in Java

    Ant12345 ha scritto:


    ho iniziato a scrivere il mio codice sviluppando il Server con un approccio Multithreading
    Innanzitutto il codice dovresti scriverlo ben indentato e spaziato, altrimenti si capisce poco/nulla.

    E comunque, riguardo il tuo codice: DataInputStream e DataOutputStream NON sono appropriati se il "protocollo" di scambio che hai ideato e fatto solo da "righe di testo" (il readLine() di DataInputStream tra l'altro è un metodo "deprecato", da NON usare più).
    Quindi, rivedi tutta questa gestione.

    Ant12345 ha scritto:


    ora però ho un dubbio, come faccio a scrivere il codice per il Server che permetta a quest'ultimo di scegliere una parola da un insieme di 10 parole?
    "da un insieme di 10 parole": banalmente potrebbe essere un array con 10 stringhe fisse.

    "scegliere una parola": presumo "a caso", quindi ti basta usare le funzionalità del framework per generare un numero casuale che usi per indirizzare nell'array delle parole (ovviamente del range appropriato per l'array).

    "L'utente ha 10 tentativi": dovrai chiaramente tenere in ServerThread il conteggio dei tentativi fatti (o ancora da fare, a seconda di quale senso scegli). Poi si tratta solo di "logica". Data la parola scelta, ripeti la ricezione di una linea dal client finché è corretta (o ha finito i tentativi).
Devi accedere o registrarti per scrivere nel forum
3 risposte