Oppure

Loading
27/05/10 17:48
S0n1C
salve a tutti posto di seguito una piccola implementazione in java di un turtle graphics:

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