# Fussballroboter



## Guest (10. Nov 2004)

ich hab als aufgabe folgendes programm zu schreiben:  

FUSSBALLROBOTER
Ein Roboter mit 2 Rädern, der zum Fussballspielen verwendet wird, ist zu steuern.

Erstellen Sie eine Klasse Roboter, welche das Arbeiten mit dem Roboter ermöglicht: 
Die Methoden (Funktionen) für das Geradeausbewegen bewegen(int schritte, boolean vorwaerts), 
das Drehen d rehe(doulbe grad) und zum Ermitteln der Position getPosition() sind zu realisieren.
Erzeugen und Initialisieren Sie diese Klasse mit einem Konstruktor, der den Roboter auf die Anfangspositi on x,y stellt..
Erweitern Sie Ihre Klasse um die Funktionen boolean equals(Roboter R) auf gleichen
 Inhalt mit einem ander en Roboter, toString() 
zur Ausgabe der Instanzvariablen und Roboter clone() zum duplizieren der Werte eines R oboters.


leider weiß ich nicht wie ich da anfangen soll...

WEIß WER WIE DAS GEHEN SOLL??


----------



## Manfred (10. Nov 2004)

Ich nehme an, du sollst das alles NICHT grafisch darstellen!

Du erstellst eine Klasse Roboter mit allen Eigenschaften, die du brauchst!
Und dazu jeweilige Methoden um diese zu ändern!

z.B.


```
public class Roboter
{
    private int xPos;
    private int yPos;
    private double grad;

    public Roboter(int xPos, int yPos)
    {
        this.xPos=xPos;
        this.yPos=yPos;
        grad=0;
     }

    public void bewegen(int schritte, boolean vor)
    {
        if(vor)
        {
            yPos+=schritte;
        }
        else
        {
            yPos-=schritte;
        }
    }

    public String getPosition()
    {
        return ("x: "+xPos+"  y:"+yPos);
    }

usw...usw
}
```

Das selbe mit Grad. Nur kann man eigentlich nicht die y-Pos verändern so wie ich das sehe, ausser man würde die grade irgendwie mitbeachten!


----------



## Guest (10. Nov 2004)

Soweit so gut, aber wie solls jetzt weitergehen. Das eigentliche Problem ist ja das mit den Graden etc.!!! :lol:


----------



## Grizzly (10. Nov 2004)

Anonymous hat gesagt.:
			
		

> Soweit so gut, aber wie solls jetzt weitergehen. Das eigentliche Problem ist ja das mit den Graden etc.!!! :lol:



Was ist das Problem damit? Ich würde die Koordinaten x und y als Gleitkommazahl deklarieren - ist besser für die Berechnung (sonst bewegt sich der Roboter u.U. gar nicht oder nicht in die gewünschte Richtung  ). Und die Bewegung in eine entsprechende Richtung kannst Du Dir ja dann mit Cosinus und Sinus am Einheitskreis ausrechnen. Du musst es halt noch um die Strecke skalieren.


----------



## Manfred (10. Nov 2004)

Ich denke nicht, dass eine Richtungsänderung verlangt wird! Denn wenn man sich die Fläche als kariertes Blatt vorstellt und ein Schritt immer gleich lang ist, dann kanns auch passieren, dass bei einer Drehung man zwischen 2 Quadraten steht! Dann mit double, aber es wird int verlangt!

Ich kann aus Zeitgründen einstweil nicht mehr schreiben! Evtl. später!


----------



## Grizzly (10. Nov 2004)

Die Drehung erfolgt ja in Grad. Von einem int steht nirgends etwas - oder ich habe mich ganz grob verlesen.

Nehmen wir an, der Roboter schaut - von oben gesehen - nach rechts. Nehmen wir witer an, dass er auf den Koordinaten x=0,y=0 steht.
Dann lassen wir ihn um 45° nach links bzw. oben drehen. Wenn er jetzt einen Schritt macht, dann steht er jetzt auf x=0.5,y=0.5. Wenn ich hier nur mit int rechne bzw. einen int zum Speichern der Koordinaten verwende, steht der Roboter danach immer noch auf x=0,y=0, da ja die Nachkommastellen abgeschnitten werden.
Das Problem taucht natürlich nicht auf, wenn man den Fussballroboter nur um 90°, 180°, 270° und 360° Grad drehen kann.

Außerdem finde ich es persönlich auch praktischer, da ja die Cosinus- und Sinus-Funktionen der Klasse Math auch double Werte zurück gibt. Dann kann man gleich alles in double rechnen.


----------

