// Robottino versione 2.2 // Da questa versione illustrerò tutte le parti del programma con dei commenti come questo. // Dichiaro che questa classe fa parte del package RobottinoMain, che verrà poi importato // dalle classi che dovranno interagire con essa. package RobottinoMain; // Importo le librerie iniziali: // java.Util.Scanner per gestire gli input da tastiera. import java.util.Scanner; // java.util.Vector serve a gestire i vettori. // I vettori sono come array, ma hanno due differenze principali: // 1) la loro lunghezza può variare durante l'esecuzione del programma // (per questo li ho preferiti agli array); // 2) possono contenere soltanto oggetti, e non tipi primitivi. import java.util.Vector; // Questo è il package di utility da me creato per semplificare l'utilizzo degli elementi di altre classi // (Grafica, PartiDelRobot). Nelle versioni precedenti c'erano solo le classi Robottino // e PartiDelRobot, percui avevo deciso di far sì che una fosse derivata dall'altra. import RobottinoUtils.*; // Altro package da me definito. import RobottinoAzioni.*; // Dichiaro la classe. public class Robottino { // Istanzio anche le classi Robottino e RobottinoAzioni, per poter avere accesso agli elementi non-statici. static Robottino robottino = new Robottino(); static RobottinoAzioni robottinoazioni = new RobottinoAzioni(); // Istanzio la classe Thread per poter utilizzare il metodo sleep(int millisecondi) // che in un metodo dell'interfaccia WindowListener, overridato nella classe Listener // servirà a mettere il programma in uno stato di pausa. // Sarebbe comunque possibile invocarlo, ma così sarà più facile da modificare in futuro. public static Thread threadMain; // Inizio del metodo main... public static void main(String[] args) { threadMain = new Thread(Thread.currentThread()); // Aggiungo gli elementi ai vettori. // non potevo farlo prima, poiché al di fuori di un metodo è possibile soltanto // dichiarare oggetti/variabili (e inizializzarli) o dichiarare un metodo // e in RobottinoAzioni è presente solo il metodo Azioni che viene richiamato più volte. RobottinoAzioni.pdrB.addElement(RobottinoAzioni.leftArm); RobottinoAzioni.pdrB.addElement(RobottinoAzioni.rightArm); RobottinoAzioni.pdrB.addElement(RobottinoAzioni.leftLeg); RobottinoAzioni.pdrB.addElement(RobottinoAzioni.rightLeg); RobottinoAzioni.pdrA.addElement(RobottinoAzioni.pdrB); RobottinoAzioni.nomeRobot.addElement(""); // Istanzio la classe Scanner per poter ricevere input Scanner sc = new Scanner(System.in); // Dichiaro la variabile comando che memorizzerà l'input dell'utente String comando; // Crea la finestra tramite un'istanza della classe Grafica, del package RobottinoUtils Grafica finestra = new Grafica(); // Output iniziale nellla shell System.out.println ("**********************************************"); System.out.println ("**********************************************"); System.out.println ("*************Programma interattivo************"); System.out.println ("**********************************************"); System.out.println ("***Software realizzato da Sebastiano Tronto***"); System.out.println ("**********************************************"); System.out.println ("**********************************************"); System.out.println ("Questo programma simula un robot al quale ven-"); System.out.println ("gono assegnati ordini tramite comandi, simil-" ); System.out.println ("mente a quanto bisognava fare con i computer " ); System.out.println ("alcuni anni fa." ); System.out.println ("Dato che all'epoca i comandi che dovevano es-" ); System.out.println ("sere dati erano (e sono tutt'ora) in similin-" ); System.out.println ("glese, ho cercato di mantenerli tali." ); System.out.println ("Il programma non fa distinzioni tra lettere" ); System.out.println ("maiuscole o minuscole." ); System.out.println ("da questa versione (2.2) sono disponibili ef-" ); System.out.println ("fetti grafici minimali e totalmente inutili." ); System.out.println ("" ); System.out.println ("Digita un comando e premi INVIO" ); System.out.println ("l = legenda comandi" ); System.out.println (""); // Inizio del ciclo do-while che fa in modo di ricevere input ed eseguire il metodo "Azioni" // fintando che il comando non è exit. do { // Inizializza la stringa comando con il valore dell'input. comando = sc.nextLine(); System.out.println (""); // Esegue il metodo "Azioni" passando come argomenti il comando e i due vettori. System.out.println (robottinoazioni.Azioni(comando, RobottinoAzioni.nomeRobot, RobottinoAzioni.pdrA)); System.out.println (""); } while ( !(comando.equalsIgnoreCase("exit")) ); // Al termine del metodo main invoco il metodo "System.exit" per terminare completamente l'esecuzione del programma System.exit(0); } // Fine del metodo main. }