Nuovo client con GUI e istruzioni nel readme#26
Open
mikyll wants to merge 15 commits intoAGalassi:masterfrom
Open
Nuovo client con GUI e istruzioni nel readme#26mikyll wants to merge 15 commits intoAGalassi:masterfrom
mikyll wants to merge 15 commits intoAGalassi:masterfrom
Conversation
Creato un client "umano" con la grafica (JavaFX). - all'avvio mostra una finestra di dialogo per inserire i dati di gioco (username, squadra, timeout e indirizzo IP del server); - mostra la tavola da gioco e una UI con qualche info (turno corrente, nome giocatore, pedina selezionata); - permette di selezionare la pedina da spostare e successivamente la destinazione; - ho aggiunto degli effetti per evidenziare le pedine selezionabili, quando viene spostato il mouse sopra, e quella selezionata; - selezionata la pedina vengono evidenziate le destinazioni possibili; - durante il turno avversario non è possibile muovere pedine, e la UI mostra un messaggio di attesa; - la tavola di gioco si aggiorna dopo aver effettuato una mossa e quando viene ricevuto un nuovo stato dal server; - quando la partita finisce viene mostrata una finestra di dialogo; - usate immagini omogenee per le pedine; - usata un'immagine senza coordinate per la tavola da gioco; - le coordinate vengono disegnate dinamicamente; TO-DO: - mostrare la pedina sulla cella di destinazione, quando è stata selezionata quella di partenza e l'utente ci sposta il mouse sopra; - sistemare il counter dei turni; - sistemare la history delle mosse; - spostare il codice delle mosse possibili evidenziate in una classe a parte, con metodi statici; - sistemare risorse nelle directory;
- spostato il codice delle mosse possibili evidenziate in una classe a parte; - sistemato il counter dei turni; - aggiunta la durata della partita nel messaggio di Game Over; - aggiunto bottone per enlarge/shrink della GUI; - sistemata la history, ora funziona tutta (turno, giocatore giusto, mossa - per quella avversaria c'è una soluzione "temporanea" che dice solo la destinazione); TO-DO: - aggiungere timer; - parsing parametri; - sistemare client di default (TablutHumanWhiteClientGui & TablutHumanBlackClientGui); - mostrare la pedina sulla cella di destinazione, quando è stata selezionata quella di partenza e l'utente ci sposta il mouse sopra; - sistemare risorse nelle directory; - sistemare JavaDoc; - sistemare la history dell'avversario (?); - pulire codice;
- sistemata la validazione dei campi di input di GameInfoDialog (ora vengono mostrati degli errori e il bottone di conferma si disabilita); - aggiunto timer; TO-DO: - parsing parametri; - sistemare client di default (TablutHumanWhiteClientGui & TablutHumanBlackClientGui); - mostrare la pedina sulla cella di destinazione, quando è stata selezionata quella di partenza e l'utente ci sposta il mouse sopra; - sistemare risorse nelle directory; - sistemare JavaDoc; - sistemare la history dell'avversario (?); - pulire codice;
- parsing parametri; - sistemati i client di default (TablutHumanWhiteClientGui & TablutHumanBlackClientGui); - aggiunta classe con metodi statici di utilità per le stringhe. TO-DO: - mostrare la pedina sulla cella di destinazione, quando è stata selezionata quella di partenza e l'utente ci sposta il mouse sopra; - sistemare risorse nelle directory; - sistemare JavaDoc; - pulire codice; - sistemare la history dell'avversario (probabilmente no);
- sistemato bug del metodo tmpOpponentAddToHistory(). TO-DO: - mostrare la pedina sulla cella di destinazione, quando è stata selezionata quella di partenza e l'utente ci sposta il mouse sopra; - sistemare risorse nelle directory; - sistemare JavaDoc; - pulire codice; - sistemare la history dell'avversario (probabilmente no);
- modificato il modo in cui i file delle immagini vengono caricati da file, perché una volta buildato il jar non erano più visibili; - spostate le risorse del client in package organizzati meglio; TO-DO: - mostrare la pedina sulla cella di destinazione, quando è stata selezionata quella di partenza e l'utente ci sposta il mouse sopra; - sistemare JavaDoc; - sistemare la history dell'avversario (probabilmente no); - (forse) aggiungere un'opzione per il multiplayer locale?
- ora quando l'utente seleziona una pedina e sposta il cursore su una cella raggiungibile, viene mostrata la pedina su tale cella; - piccole modifiche: Cell -> BoardPawn (ha più senso chiamarla così, ma volevo evitare confusione con State.Pawn). TO-DO: - sistemare JavaDoc; - sistemare la history dell'avversario (probabilmente no); - (forse) aggiungere un'opzione per il multiplayer locale?
+ aggiunto scroll automatico all'ultimo elemento nella lista delle azioni; + resi final alcuni membri privati del controller
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Riassunto
Ho creato un client con grafica in JavaFX, basato su MVC. Di seguito una piccola demo:
Potrebbe essere utile per capire meglio il funzionamento e le regole del gioco, per testare un'intelligenza artificiale, oppure semplicemente per divertimento :-)
Aggiunte
Ho aggiunto i seguenti client in
it.unibo.ai.didattica.competition.tablut.client:Tutto il codice relativo al nuovo client è stato inserito nel package
it.unibo.ai.didattica.competition.tablut.gui.client:Tutti i file di risorse sono stati inseriti in
it.unibo.ai.didattica.competition.tablut.gui.resources.client:Funzionalità del Client
Problema
Per lanciare l'applicazione non basta aver installato openjdk in quanto JavaFX non è integrato, ma serve un JDK/JRE che contenga i componenti necessari.
Soluzione
A tal proposito ho creato un piccolo documento con qualche link per scaricare il JDK/JRE con Java 8 + supporto per JavaFX e, alternativamente, dei link per scaricare l'app standalone dal mio fork della repo. Infine ho inserito una sezione nel README in cui ho messo una GIF di demo ed il link al documento con le istruzioni.