Robottino.java (12998B)
1 import java.util.Scanner; 2 class Robottino extends PartiDelRobot { 3 static PartiDelRobot pdr[][] = { 4 { 5 new PartiDelRobot (false, "il braccio sinistro alzato"), 6 new PartiDelRobot (false, "il braccio destro alzato"), 7 new PartiDelRobot (false, "la gamba sinistra alzata"), 8 new PartiDelRobot (false, "la gamba destra alzata") 9 } 10 }; 11 static String nomeRobot[] = { "" }; 12 int robotIndex = 0; 13 public static void main(String argv[]) { 14 Scanner sc = new Scanner(System.in); 15 String comando; 16 Robottino robottino = new Robottino(); 17 System.out.println ("**********************************************"); 18 System.out.println ("**********************************************"); 19 System.out.println ("*************Programma interattivo************"); 20 System.out.println ("**********************************************"); 21 System.out.println ("***Software realizzato da Sebastiano Tronto***"); 22 System.out.println ("**********************************************"); 23 System.out.println ("**********************************************"); 24 System.out.println ("Questo programma simula un robot al quale ven-"); 25 System.out.println ("gono assegnati ordini tramite comandi, simil-" ); 26 System.out.println ("mente a quanto bisognava fare con i computer " ); 27 System.out.println ("alcuni anni fa." ); 28 System.out.println ("Dato che all'epoca i comandi che dovevano es-" ); 29 System.out.println ("sere dati erano (e sono tutt'ora) in similin-" ); 30 System.out.println ("glese, ho cercato di mantenerli tali." ); 31 System.out.println ("Il programma non fa distinzioni tra lettere" ); 32 System.out.println ("maiuscole o minuscole." ); 33 System.out.println ("In questa versione non sono ancora disponibi-" ); 34 System.out.println ("li immagini e/o effetti grafici." ); 35 System.out.println ("" ); 36 System.out.println ("Digita un comando e premi INVIO" ); 37 System.out.println ("l = legenda comandi" ); 38 System.out.println (""); 39 do { 40 comando = sc.nextLine(); 41 System.out.println (""); 42 System.out.println (robottino.Azioni(comando, nomeRobot, pdr)); 43 System.out.println (""); 44 } while ( !(comando.equalsIgnoreCase("exit")) ); 45 } 46 String Azioni(String comando, String nomeRobot[], PartiDelRobot pdr[][]) { 47 Scanner sc2 = new Scanner(System.in); 48 int contatore = 0; 49 String stat[] = {"", "", "", ""}; 50 String Return = "Errore - si consiglia di picchiare il programmatore"; 51 if (comando.equalsIgnoreCase("leftarmmove")) 52 this.pdr[this.robotIndex][0].statoParte = !this.pdr[this.robotIndex][0].statoParte; 53 else if (comando.equalsIgnoreCase("rightarmmove")) 54 this.pdr[this.robotIndex][1].statoParte = !this.pdr[this.robotIndex][1].statoParte; 55 else if (comando.equalsIgnoreCase("leftlegmove")) 56 this.pdr[this.robotIndex][2].statoParte = !this.pdr[this.robotIndex][2].statoParte; 57 else if (comando.equalsIgnoreCase("rightlegmove")) 58 this.pdr[this.robotIndex][3].statoParte = !this.pdr[this.robotIndex][3].statoParte; 59 else if (comando.equalsIgnoreCase("leftarmon")) 60 this.pdr[this.robotIndex][0].statoParte = true; 61 else if (comando.equalsIgnoreCase("rightarmon")) 62 this.pdr[this.robotIndex][1].statoParte = true; 63 else if (comando.equalsIgnoreCase("leftlegon")) 64 this.pdr[this.robotIndex][2].statoParte = true; 65 else if (comando.equalsIgnoreCase("rightlegon")) 66 this.pdr[this.robotIndex][3].statoParte = true; 67 else if (comando.equalsIgnoreCase("leftarmoff")) 68 this.pdr[this.robotIndex][0].statoParte = false; 69 else if (comando.equalsIgnoreCase("rightarmoff")) 70 this.pdr[this.robotIndex][1].statoParte = false; 71 else if (comando.equalsIgnoreCase("leftlegoff")) 72 this.pdr[this.robotIndex][2].statoParte = false; 73 else if (comando.equalsIgnoreCase("rightlegoff")) 74 this.pdr[this.robotIndex][3].statoParte = false; 75 else if (comando.equalsIgnoreCase("exploud")) { 76 System.out.println ("Che atroce! Hai fatto esplodere il robottino " + nomeRobot[this.robotIndex] + "! Aspetta che te ne faccio un altro"); 77 System.out.println ("..."); 78 for (int i = 0; i < pdr[this.robotIndex].length; i++) { 79 pdr[this.robotIndex][i].statoParte = false; 80 } 81 nomeRobot[this.robotIndex] = ""; 82 return "Fatto, puoi continuare a giocare"; 83 } 84 else if (comando.equalsIgnoreCase("bier")) { 85 System.out.println ("Il robottino " + nomeRobot[this.robotIndex] + "sta trangugiando una birra..."); 86 System.out.println ("Buurrrrrrrrp!"); 87 return "La birra analcolica fa schifo!"; 88 } 89 else if (comando.equalsIgnoreCase("rename")) { 90 System.out.println ("Con questo comando quoi cambiare il nome del robottino " + nomeRobot[this.robotIndex]); 91 System.out.println ("Digita il nuovo nome e premi invio per coninuare"); 92 nomeRobot[this.robotIndex] = sc2.nextLine(); 93 if (!(nomeRobot[this.robotIndex].equalsIgnoreCase(""))) 94 nomeRobot[this.robotIndex] += " "; 95 return "Ora il robottino si chiama " + nomeRobot[this.robotIndex]; 96 } 97 else if (comando.equalsIgnoreCase("porky")) { 98 System.out.println ("Porky è un grande"); 99 System.out.println ("Per maggiori informazioni visita il sito"); 100 return "http://kakati.forumfree.net/"; 101 } 102 else if (comando.equalsIgnoreCase("xxx")) { 103 System.out.println ("Il robottino " + nomeRobot[this.robotIndex] + "ha incontrato una bella robottina..."); 104 return "*Censura*"; 105 } 106 else if (comando.equalsIgnoreCase("dance")) { 107 System.out.println ("Immagini che il robottino " + nomeRobot[this.robotIndex] + " stia ballando..."); 108 System.out.println ("Il robottino ha smesso di ballare"); 109 for (int i = 0; i < pdr[this.robotIndex].length; i++) { 110 pdr[0][i].statoParte = false; 111 } 112 return "Il robottino " + nomeRobot[this.robotIndex] + "si è fermato ed è tornato nella posizione originale"; 113 } 114 else if (comando.equalsIgnoreCase("newrobot")) { 115 PartiDelRobot pdrAus[][] = new PartiDelRobot[(addRobot(this.pdr, this.pdr[this.robotIndex])).length][(addRobot(this.pdr, this.pdr[this.robotIndex]))[(addRobot(this.pdr, this.pdr[this.robotIndex])).length-1].length]; 116 this.pdr = new PartiDelRobot[pdrAus.length][pdrAus[pdrAus.length-1].length]; 117 for (int i=0; i<pdrAus.length; i++) { 118 for (int j=0; j<pdrAus[i].length; j++) { 119 pdrAus[i][j] = (addRobot(pdr, pdr[this.robotIndex]))[i][j]; 120 pdrAus[i][j].stringaParte = (addRobot(pdr, pdr[this.robotIndex]))[i][j].stringaParte; 121 pdrAus[i][j].statoParte = (addRobot(pdr, pdr[this.robotIndex]))[i][j].statoParte; 122 } 123 } 124 for (int i=0; i<this.pdr.length; i++) { 125 for (int j=0; j<this.pdr[i].length; j++) { 126 this.pdr[i][j] = pdrAus[i][j]; 127 this.pdr[i][j].stringaParte = pdrAus[i][j].stringaParte; 128 this.pdr[i][j].statoParte = pdrAus[i][j].statoParte; 129 } 130 } 131 System.out.println ("È stato creato un nuovo robot. Vuoi dare un nome al nuovo robot?"); 132 System.out.println ("Inserisci il nuovo nome e premi INVIO oppure lascia vuoto e premi INVIO"); 133 String newName = sc2.nextLine(); 134 String nomeRobotAus[] = new String[(addName(this.nomeRobot, newName)).length]; 135 this.nomeRobot = new String[nomeRobotAus.length]; 136 for (int i=0; i<nomeRobotAus.length; i++) { 137 nomeRobotAus[i] = (addName(nomeRobot, newName))[i]; 138 } 139 for (int i=0; i<nomeRobotAus.length; i++) { 140 this.nomeRobot[i] = nomeRobotAus[i]; 141 } 142 return "È stato creato il robottino " + newName; 143 } 144 else if (comando.equalsIgnoreCase("deleterobot")) 145 return "Comando non disponibile in questa versione del programma"; 146 else if (comando.equalsIgnoreCase("changerobot")) { 147 if (pdr.length==1) { 148 return "Hai solo un robottino, non puoi cambiarlo con un altro!"; 149 } 150 else { 151 System.out.println ("A quale robottino vuoi dare i comandi?"); 152 System.out.println (""); 153 for (int numRobot = 0; numRobot<this.pdr.length; numRobot++) { 154 System.out.println (numRobot + ". " + this.nomeRobot[numRobot]); 155 } 156 System.out.println (""); 157 System.out.println ("Digita il numero corrispondente alla tua scelta e premi INVIO"); 158 this.robotIndex = sc2.nextInt(); 159 if (this.robotIndex<this.pdr.length) 160 return "È stato selezionato il robottino numero " + this.robotIndex + ": " + this.nomeRobot[this.robotIndex]; 161 else 162 return "Numero non valido"; 163 } 164 } 165 else if (comando.equalsIgnoreCase("robotlist")) { 166 for (int numRobot = 0; numRobot<this.pdr.length; numRobot++) { 167 System.out.println (numRobot + ". " + this.nomeRobot[numRobot]); 168 } 169 return ""; 170 } 171 else if (comando.equalsIgnoreCase("l")) { 172 System.out.println ("Legenda comandi"); 173 System.out.println (""); 174 System.out.println ("Comandi relativi agli arti"); 175 System.out.println (""); 176 System.out.println ("LeftArmMove: cambia la posizione corrente del braccio sinistro del robot"); 177 System.out.println ("RightArmMove: cambia la posizione corrente del braccio destro del robot"); 178 System.out.println ("LeftLegMove: cambia la posizione corrente della gamba sinistra del robot"); 179 System.out.println ("RightLegMove: cambia la posizione corrente della gamba destra del robot"); 180 System.out.println ("LeftArmOn: se il braccio sinistro non è alzato, lo alza, altrimenti la posizione resta invariata"); 181 System.out.println ("RightArmOn: se il braccio destro non è alzato, lo alza, altrimenti la posizione resta invariata"); 182 System.out.println ("LeftLegOn: se la gamba sinistra non è alzata, la alza, altrimenti la posizione resta invariata"); 183 System.out.println ("RightLegOn: se la gamba destra non è alzata, la alza, altrimenti la posizione resta invariata"); 184 System.out.println ("LeftArmOff: se il braccio sinistro non è abbassato, lo abbassa, altrimenti la posizione resta invariata"); 185 System.out.println ("RightArmOff: se il braccio destro non è abbassato, lo abbassa, altrimenti la posizione resta invariata"); 186 System.out.println ("LeftLegOff: se la gamba sinistra non è abbassata, la abbassa, altrimenti la posizione resta invariata"); 187 System.out.println ("RightLegOff: se la gamba destra non è abbassata, la abbassa, altrimenti la posizione resta invariata"); 188 System.out.println (""); 189 System.out.println ("Altri comandi:"); 190 System.out.println (""); 191 System.out.println ("NewRobot: aggiunge un nuovo robot"); 192 System.out.println ("ChangeRobot: cambia il robot attuale"); 193 System.out.println ("RobotList: visualizza la lista dei robot"); 194 System.out.println ("Rename: rinomina il robottino"); 195 System.out.println (""); 196 System.out.println ("Comandi a sorpresa:"); 197 System.out.println (""); 198 System.out.println ("Exploud"); 199 System.out.println ("Bier"); 200 System.out.println ("Porky"); 201 System.out.println ("xxx"); 202 System.out.println ("dance"); 203 System.out.println (""); 204 System.out.println ("Exit: esci dal programma"); 205 return ""; 206 207 } 208 else if (comando.equalsIgnoreCase("exit")) 209 return ""; 210 else 211 System.out.println ("Comando non riconosciuto - digitare l per una legenda dei comandi disponibili"); 212 System.out.println (""); 213 for (int i = 0, j = 0; i < pdr[this.robotIndex].length; i++) { 214 if (pdr[robotIndex][i].statoParte) { 215 contatore += 1; 216 stat[j++] = pdr[this.robotIndex][i].stringaParte; 217 } 218 } 219 switch (contatore) { 220 case 0: 221 Return = "Comunque il robottino " + nomeRobot[this.robotIndex] + "non sta facendo niente"; 222 break; 223 case 1: 224 Return = "Immagini che il robottino " + nomeRobot[this.robotIndex] + "abbia " + stat[0] + "."; 225 break; 226 case 2: 227 Return = "Immagini che il robottino " + nomeRobot[this.robotIndex] + "abbia " + stat[0] + " e " + stat[1] + "."; 228 break; 229 case 3: 230 Return = "Immagini che il robottino " + nomeRobot[this.robotIndex] + "abbia " + stat[0] + ", " + stat[1] + " e " + stat[2] + "."; 231 break; 232 case 4: 233 Return = "Immagini che il robottino " + nomeRobot[this.robotIndex] + "abbia " + stat[0] + ", " + stat[1] + ", " + stat[2] + " e " + stat[3] + "."; 234 break; 235 } 236 return Return; 237 } 238 static PartiDelRobot[][] addRobot(PartiDelRobot pdrOld[][], PartiDelRobot pdrElement[]) { 239 PartiDelRobot pdrNew[][] = new PartiDelRobot [pdrOld.length+1][pdrOld[pdrOld.length-1].length]; 240 for (int i=0; i<pdrOld.length; i++) { 241 for (int j=0; j<pdrOld[i].length; j++) { 242 pdrNew[i][j] = new PartiDelRobot(pdrOld[i][j].statoParte, pdrOld[i][j].stringaParte); 243 } 244 } 245 for (int i=0; i<pdrElement.length; i++) { 246 pdrNew[pdrNew.length-1][i] = new PartiDelRobot(false, pdrElement[i].stringaParte); 247 } 248 return pdrNew; 249 } 250 static String[] addName(String nomeRobot[], String name) { 251 String nomeNewRobot[] = new String [nomeRobot.length+1]; 252 for (int i=0; i<nomeRobot.length; i++) { 253 nomeNewRobot[i] = nomeRobot[i]; 254 } 255 nomeNewRobot[nomeNewRobot.length-1] = name; 256 if (!(nomeNewRobot[nomeNewRobot.length-1].equalsIgnoreCase(""))) { 257 nomeNewRobot[nomeNewRobot.length-1] += " "; 258 } 259 return nomeNewRobot; 260 } 261 } 262 263 264 265 266 267 268 269 270