aboutsummaryrefslogtreecommitdiff
path: root/robottino/all_versions/v2.2/src/RobottinoMain/Robottino.java
blob: 37e2dffcbf262551df6c8ee51497a594337f2765 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
// 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.
}









Generated with cgit - Back to sebastiano.tronto.net