Robottino.java (5103B)
1 // Robottino versione 2.2 2 // Da questa versione illustrerò tutte le parti del programma con dei commenti come questo. 3 4 // Dichiaro che questa classe fa parte del package RobottinoMain, che verrà poi importato 5 // dalle classi che dovranno interagire con essa. 6 package RobottinoMain; 7 8 // Importo le librerie iniziali: 9 // java.Util.Scanner per gestire gli input da tastiera. 10 import java.util.Scanner; 11 12 // java.util.Vector serve a gestire i vettori. 13 // I vettori sono come array, ma hanno due differenze principali: 14 // 1) la loro lunghezza può variare durante l'esecuzione del programma 15 // (per questo li ho preferiti agli array); 16 // 2) possono contenere soltanto oggetti, e non tipi primitivi. 17 import java.util.Vector; 18 19 // Questo è il package di utility da me creato per semplificare l'utilizzo degli elementi di altre classi 20 // (Grafica, PartiDelRobot). Nelle versioni precedenti c'erano solo le classi Robottino 21 // e PartiDelRobot, percui avevo deciso di far sì che una fosse derivata dall'altra. 22 import RobottinoUtils.*; 23 24 // Altro package da me definito. 25 import RobottinoAzioni.*; 26 27 // Dichiaro la classe. 28 public class Robottino { 29 30 // Istanzio anche le classi Robottino e RobottinoAzioni, per poter avere accesso agli elementi non-statici. 31 static Robottino robottino = new Robottino(); 32 static RobottinoAzioni robottinoazioni = new RobottinoAzioni(); 33 34 // Istanzio la classe Thread per poter utilizzare il metodo sleep(int millisecondi) 35 // che in un metodo dell'interfaccia WindowListener, overridato nella classe Listener 36 // servirà a mettere il programma in uno stato di pausa. 37 // Sarebbe comunque possibile invocarlo, ma così sarà più facile da modificare in futuro. 38 public static Thread threadMain; 39 40 // Inizio del metodo main... 41 public static void main(String[] args) { 42 43 threadMain = new Thread(Thread.currentThread()); 44 45 // Aggiungo gli elementi ai vettori. 46 // non potevo farlo prima, poiché al di fuori di un metodo è possibile soltanto 47 // dichiarare oggetti/variabili (e inizializzarli) o dichiarare un metodo 48 // e in RobottinoAzioni è presente solo il metodo Azioni che viene richiamato più volte. 49 RobottinoAzioni.pdrB.addElement(RobottinoAzioni.leftArm); 50 RobottinoAzioni.pdrB.addElement(RobottinoAzioni.rightArm); 51 RobottinoAzioni.pdrB.addElement(RobottinoAzioni.leftLeg); 52 RobottinoAzioni.pdrB.addElement(RobottinoAzioni.rightLeg); 53 RobottinoAzioni.pdrA.addElement(RobottinoAzioni.pdrB); 54 RobottinoAzioni.nomeRobot.addElement(""); 55 56 // Istanzio la classe Scanner per poter ricevere input 57 Scanner sc = new Scanner(System.in); 58 59 // Dichiaro la variabile comando che memorizzerà l'input dell'utente 60 String comando; 61 62 // Crea la finestra tramite un'istanza della classe Grafica, del package RobottinoUtils 63 Grafica finestra = new Grafica(); 64 65 // Output iniziale nellla shell 66 System.out.println ("**********************************************"); 67 System.out.println ("**********************************************"); 68 System.out.println ("*************Programma interattivo************"); 69 System.out.println ("**********************************************"); 70 System.out.println ("***Software realizzato da Sebastiano Tronto***"); 71 System.out.println ("**********************************************"); 72 System.out.println ("**********************************************"); 73 System.out.println ("Questo programma simula un robot al quale ven-"); 74 System.out.println ("gono assegnati ordini tramite comandi, simil-" ); 75 System.out.println ("mente a quanto bisognava fare con i computer " ); 76 System.out.println ("alcuni anni fa." ); 77 System.out.println ("Dato che all'epoca i comandi che dovevano es-" ); 78 System.out.println ("sere dati erano (e sono tutt'ora) in similin-" ); 79 System.out.println ("glese, ho cercato di mantenerli tali." ); 80 System.out.println ("Il programma non fa distinzioni tra lettere" ); 81 System.out.println ("maiuscole o minuscole." ); 82 System.out.println ("da questa versione (2.2) sono disponibili ef-" ); 83 System.out.println ("fetti grafici minimali e totalmente inutili." ); 84 System.out.println ("" ); 85 System.out.println ("Digita un comando e premi INVIO" ); 86 System.out.println ("l = legenda comandi" ); 87 System.out.println (""); 88 89 // Inizio del ciclo do-while che fa in modo di ricevere input ed eseguire il metodo "Azioni" 90 // fintando che il comando non è exit. 91 do { 92 93 // Inizializza la stringa comando con il valore dell'input. 94 comando = sc.nextLine(); 95 System.out.println (""); 96 97 // Esegue il metodo "Azioni" passando come argomenti il comando e i due vettori. 98 System.out.println (robottinoazioni.Azioni(comando, RobottinoAzioni.nomeRobot, RobottinoAzioni.pdrA)); 99 System.out.println (""); 100 } while ( !(comando.equalsIgnoreCase("exit")) ); 101 102 // Al termine del metodo main invoco il metodo "System.exit" per terminare completamente l'esecuzione del programma 103 System.exit(0); 104 } 105 // Fine del metodo main. 106 } 107 108 109 110 111 112 113 114 115