Wordle 3.0

Progetto di fine corso Laboratorio di Reti 2022-2023
Matteo Giorgi 517183


Il progetto consiste nella implementazione di Wordle, un gioco di parole web-based, divenuto virale alla fine del 2021. Il gioco consiste nel trovare una parola inglese formata da 5 lettere, impiegando un numero massimo di 6 tentativi. Wordle dispone di un vocabolario di parole di 5 lettere, da cui estrae casualmente una Secret Word che gli utenti devono indovinare. Ogni giorno viene selezionata una nuova Secret-Word che rimane invariata fino al giorno successivo e che viene proposta a tutti gli utenti che si collegano al sistema durante quel giorno. Esiste quindi una sola parola per ogni giorno e tutti gli utenti devono indovinarla: questo attribuisce al gioco un aspetto sociale. L’utente propone una parola Guessed-Word, il sistema inizialmente verifica se la parola è presente nel vocabolario e in caso negativo avverte l’utente che deve immettere un’altra parola. In caso la parola sia presente, il sistema fornisce all’utente alcuni indizi, utili per indovinare la parola.

Come creare gli archivi Java

Compilare i sorgenti .java del server in bin-server:

javac -cp lib/gson-2.10.jar -d bin-server/ \
    src/ServerMain.java \
    src/ServerSetup.java \
    src/multicastSender.java \
    src/Game.java \
    src/User.java \
    src/UserList.java \
    src/Word.java \
    src/WordList.java

Compilare i sorgenti .java del client in bin-client:

javac -d bin-client/ \
    src/ClientMain.java \
    src/ClientSetup.java \
    src/multicastReceiver.java \

Generare i file .jar per server e client:

echo "Main-Class: ServerMain" | jar cvfm WordleServer.jar - -C bin-server/ .
echo "Main-Class: ClientMain" | jar cvfm WordleClient.jar - -C bin-client/ .

Come eseguire Wordle 3.0

Gli archivi .jar sono già presenti nella directory principale del repository. Per eseguire il programma lanciare quindi le seguenti istruzioni in due istanze separate di sh:

# SERVER
java -cp WordleServer.jar:lib/gson-2.10.jar ServerMain

# CLIENT
java -cp WordleClient.jar ClientMain