27/05/10 17:48
S0n1C
salve a tutti posto di seguito una piccola implementazione in java di un turtle graphics:
Main:
classe Turtle_graphics:
adesso vorrei migliorare l'implementazione di tale classe in modo che invece di digitare i numeri di passi da compiere verso destra o sinistra,dopo aver indicato di voler girare sia l'array bidimensionale a girare ed io devo solo dare il comando avanti.ci ho sbattuto la testa un mare di tempo senza trovare soluzione sapreste aiutarmi?
Main:
package esercizi_java; import javax.swing.JOptionPane; public class Main_Turtle { public static void main(String args[]) { Turtle_graphics turtle = new Turtle_graphics(); JOptionPane.showMessageDialog(null, "benvenuto in javaTurtle, i comandi disponibili sono:\n1 alza la penna\n2 abbassa la penna\n3 vai a destra\n4 vai a sinistra\n5 vai avanti\n6 stampaPercorso\n7 vai giù\n9 per uscire"); while (true) { turtle.scegli(); } } }
classe Turtle_graphics:
package esercizi_java; import javax.swing.JOptionPane; public class Turtle_graphics { private int floor[][]; public boolean penna; private int partenzaColonna; private int partenzaRiga; private int countColonne; private int countRighe; public Turtle_graphics() { this.floor = new int[20][20]; this.partenzaColonna = 3; this.partenzaRiga = 6; this.penna = true; this.countColonne = 0; this.countRighe = 0; for (int i = 0; i < this.floor.length; i++) { for (int a = 0; a < this.floor[i].length; a++) { this.floor[i][a] = 0; } } } public void scegli() { try { int x = Integer.parseInt(JOptionPane.showInputDialog(null, "Inserisci il comando da eseguire")); switch (x) { case 1: this.penna = false; break; case 2: this.penna = true; break; case 3: giraDestra(); break; case 4: giraSinistra(); break; case 5: vaiSu(); break; case 6: stampaArray(); break; case 7: vaiGiu(); break; case 9: System.exit(0); default: JOptionPane.showMessageDialog(null, "comando non riconosciuto"); break; } } catch (java.lang.NumberFormatException ax) { JOptionPane.showMessageDialog(null, "Si prega di inserire solo numeri"); } catch (java.lang.ArrayIndexOutOfBoundsException ex) { JOptionPane.showMessageDialog(null, "mi dispiace non è possibile effettuare tutti i passi richiesti"); azzeraArray(); } } private void giraDestra() { int x = Integer.parseInt(JOptionPane.showInputDialog("di quanti passi vuoi spostarti sulla destra?")); for (int i = this.partenzaColonna + 1; i <= this.partenzaColonna + x; i++) { if (this.penna == true) { this.floor[this.partenzaRiga][i] = 1; } this.countColonne = i; } this.partenzaColonna = this.countColonne; } private void giraSinistra() { int z = Integer.parseInt(JOptionPane.showInputDialog("di quanti passi vuoi andare a sinistra?")); for (int i = this.partenzaColonna - 1; i >= this.partenzaColonna - z; i--) { if (this.penna == true) { this.floor[this.partenzaRiga][i] = 1; } this.countColonne = i; } this.partenzaColonna = this.countColonne; } private void vaiSu() { int v = Integer.parseInt(JOptionPane.showInputDialog("inserisci di quanti passi vuoi andare avanti")); for (int i = this.partenzaRiga - 1; i >= this.partenzaRiga - v; i--) { if (this.penna == true) { this.floor[i][this.partenzaColonna] = 1; } this.countRighe = i; } this.partenzaRiga = this.countRighe; } private void vaiGiu() { int b = Integer.parseInt(JOptionPane.showInputDialog("di quanti passi vuoi andare giu?")); for (int i = this.partenzaRiga + 1; i <= this.partenzaRiga + b; i++) { if (this.penna == true) { this.floor[i][this.partenzaColonna] = 1; } this.countRighe = i; } this.partenzaRiga = this.countRighe; } private void stampaArray() { for (int i = 0; i < this.floor.length; i++) { for (int j = 0; j < this.floor[i].length; j++) { System.out.print(this.floor[i][j] + " "); } System.out.println(); } } private void azzeraArray() { for (int i = 0; i < this.floor.length; i++) { for (int a = 0; a < this.floor[i].length; a++) { this.floor[i][a] = 0; } } this.countColonne=this.partenzaColonna; this.countRighe=this.partenzaRiga; } }
adesso vorrei migliorare l'implementazione di tale classe in modo che invece di digitare i numeri di passi da compiere verso destra o sinistra,dopo aver indicato di voler girare sia l'array bidimensionale a girare ed io devo solo dare il comando avanti.ci ho sbattuto la testa un mare di tempo senza trovare soluzione sapreste aiutarmi?
aaa