import java.awt.Point; public class Robot { final static int POTMIN = 3; private static int numRobot; private int potenza; private int direzione; private Point posizione; Robot() { direzione = 0; potenza = 0; posizione = new Point(); numRobot++; } Robot(int d, int pot) { this(); direzione = d; potenza = pot; } Robot(Point pos) { this(); posizione = pos; } public int carica (int c) { potenza = c; return potenza; } public int setDir (int d) { direzione = d%360; return direzione; } // riporta la nuova direzione dopo aver effettuato la rotazizone public int giraDestra(int gradi) { return setDir(direzione+gradi); } public int giraSinistra(int gradi) { return setDir(direzione-gradi); } // avanza di passi nella direzione attuale. // Aggiorna la carica. Riporta la nuova posizione public Point avanza(int passi) { double rad = direzione * 2 * Math.PI/360; double newX = posizione.getX()+passi*Math.sin(rad); double newY = posizione.getY()+passi*Math.cos(rad); posizione = new Point((int)newX, (int)newY); potenza = potenza-passi; return posizione; } public boolean haiCarica() { return (this.potenza>POTMIN); } public String toString() { return "posizione: " + (int)posizione.getX() + ", " + (int)posizione.getY() + "; potenza: " + potenza + "; direzione: " + direzione; } public static int getNumRobot() { return numRobot; } }