Hausaufgabe zum 29.10.07, wichtige Hinweise zum Vorgehen

"I", wie Informatikforum
Verfügbare Informationen zu "Hausaufgabe zum 29.10.07, wichtige Hinweise zum Vorgehen"

  • Qualität des Beitrags: 0 Sterne
  • Beteiligte Poster: Nadjafi - marco - MalteW - Anonymous - Eckey
  • Forum: "I", wie Informatikforum
  • Forenbeschreibung: Hier schreibt der Informatik-Kurs der Jahrgangsstufe 12 des CSG's alles Mögliche rein. Wirklich alles.
  • aus dem Unterforum: Hausaufgaben-Archiv
  • Antworten: 12
  • Forum gestartet am: Donnerstag 09.08.2007
  • Sprache: deutsch
  • Link zum Originaltopic: Hausaufgabe zum 29.10.07, wichtige Hinweise zum Vorgehen
  • Letzte Antwort: vor 16 Jahren, 5 Monaten, 27 Tagen, 20 Stunden, 13 Minuten
  • Alle Beiträge und Antworten zu "Hausaufgabe zum 29.10.07, wichtige Hinweise zum Vorgehen"

    Re: Hausaufgabe zum 29.10.07, wichtige Hinweise zum Vorgehen

    Nadjafi - 26.10.2007, 22:31

    Hausaufgabe zum 29.10.07, wichtige Hinweise zum Vorgehen
    Hallo,

    Im Anhang findet ihr die Programmtexte für die Klassen Pfeil, Zielscheibe und Hauptprogramm.

    Nach Absprache mit Herrn Eckey sollen alle Kursteilnehmer die gleichen Bezeichnungen für Klassen-, Objekt-, Attribut- und Methodennamen verwenden. Zudem sollen die Klassen und ihre Methoden mit den aus dem Unterricht besprochenen Inhalten bzw. UML-Diagrammen bzw. Struktogrammen übereinstimmen.

    Daher erzeugt ein neues Projekt mit dem Namen Pfeilprojekt.
    Erzeugt die drei Klassen Pfeil, Zielscheibe und Hauptprogramm und kopiert die angehängten Programmtexte in die vorgesehenen Klassen.
    Arbeitet anschließend mit diesem Projekt.

    Einige Änderungen sind vorgenommen, wie z.B. bei der Länge des Pfeils ( kürzer) und beim Datentyp des Parameters distanz ( double anstatt int, dadurch sind keine Typumwandlungen z.B. innerhalb der Methode pfeilFalle() notwendig).

    Da die Methode pfeilFalle(), die ich gestern vorgestellt habe, nicht dem Struktogramm entsprach, das ihr am Montag zuvor erarbeitet habt, habe ich die Methode dem Struktogramm angepasst.

    Zur Hausaufgabe:
    Programmierung einer Methode pfeilFlieg() in der Klasse Hauptprogramm mit folgender Beschreibung: Der Pfeil fliegt langsam in seiner Richtung und hält an, sobald seine Spitze eine "gedachte" vertikale Linie durch den Mittelpunkt der Zielscheibe erreicht hat.

    Alle notwendigen Anweisungen, um diese Methode zu programmieren, sind in der Klasse Hauptprogramm bereits an den richtigen Stellen kommentiert.

    Schickt die Hausaufgabe per eMail an mich und an Herrn Eckey. Dazu reicht es, wenn ihr das Java-Datei Hauptprogramm anhängt (Die Java-Datei ist eine Textdatei, gespeichert unter dem Verzeichnis Pfeilprojekt. Zu jeder Klasse findet ihr eine Java-Datei).

    Gibt es eine/en Freiwillige/n, die/der zu allen Klassen aus dem Pfeilprojekt die UML-Diagramme erstellt und diese im Forum anhängt?

    Gibt es noch eine/en Freiwillige/n, die/der zu der Methode pfeilFlieg() ein Struktogramm erstellt und diese am Montag vorstellt?

    Ein schönes Wochenende
    Nadjafi


    Anhang:


    Klasse Pfeil:


    import sum.kern.*;
    /**
    * Der Pfeil befindet sich auf einer genau definierten Position des Bildschirms und zeigt in eine Richtung, die durch Winkel beschrieben wird.
    * Er hat eine genau definierte Laenge.
    *
    * @author IF-Kurs-JgSt 11 - ueberarbeitet von Nadjafi
    * @version 16.09.2007 - ueberarbeitet am 25.10.07
    */
    public class Pfeil
    {
    // Bezugsobjekte
    //Bildschirm derBildschirm;
    Stift meinStift;

    // Attribute
    double xKoordinate;
    double yKoordinate;
    double laenge;
    double winkel;

    // Konstruktor
    /**
    * Der Pfeil wird initialisiert. Er ist 80 Px lang, sein Schaft steht an der Position (400,50) und zeigt in Richtung 30 Grad.
    */
    public Pfeil()
    {
    //derBildschirm = new Bildschirm(600,600);
    meinStift = new Stift();
    xKoordinate = 100; // x-Koordinate des hintersten Punktes vom Schaft des Pfeils
    yKoordinate = 450; // y-Koordinate des hintersten Punktes vom Schaft des Pfeils
    laenge = 80; // Laenge des Pfeils
    winkel = 30; // Neigungswinkel des Pfeils
    this.zeichnePfeil();
    }


    // Dienste

    // Eine Spitze (des Pfeils) wird gezeichnet.
    private void zeichneSpitze() // Diese Methode ist privat und deshalb nach außen nicht sichtbar.
    {
    meinStift.runter();
    meinStift.dreheBis(winkel);
    meinStift.dreheUm(135); // Ab hier wird die Linke Seite einer Spitze gezeichnet.
    meinStift.bewegeUm(8);
    meinStift.hoch(); //verhindert einen doppelstrich
    meinStift.dreheUm(180);
    meinStift.bewegeUm(8);
    meinStift.dreheUm(-90); // Ab hier wird die rechte Seite einer Spitze gezeichnet.
    meinStift.runter();
    meinStift.bewegeUm(8);
    meinStift.hoch(); //verhindert einen doppelstrich
    meinStift.dreheUm(180);
    meinStift.bewegeUm(8);
    meinStift.dreheBis(winkel); //Der Stift hat die gleiche Neigungswinkel wie der Pfeil.
    }


    // Ein Pfeil mit der Laenge "laenge" und dem Neigungswinkel "winkel" wird gezeichnet. Der Pfeil befindet sich mit dem Ende an der Positin (xKoordinate, yKoordinate) des Bildschirms.
    private void zeichnePfeil() // Diese Methode ist privat.
    {
    meinStift.hoch();
    meinStift.bewegeBis(xKoordinate, yKoordinate);
    meinStift.dreheBis(winkel);
    meinStift.runter();
    this.zeichneSpitze(); // die 1. Spitze am hintersten Ende vom Schaft des Pfeils
    meinStift.runter();
    meinStift.bewegeUm(8);
    this.zeichneSpitze(); // die 2. Spitze nach 8 Pixel
    meinStift.runter();
    meinStift.bewegeUm(8);
    this.zeichneSpitze(); // die 3. Spitze nach weiteren 8 Pixel
    meinStift.runter();
    meinStift.bewegeUm(laenge-16);
    this.zeichneSpitze(); // Diese Spitze ist die Spitze des Pfeils.
    meinStift.bewegeBis(xKoordinate, yKoordinate); // Der Stift hat dieselbe Koordinaten wie der Pfeil und zeigt nach oben.
    }

    // Die Methode radierePfeil loescht bzw. radiert den Pfeil.
    private void radierePfeil() // Diese Methode ist privat.
    {
    meinStift.radiere();
    this.zeichnePfeil();
    meinStift.normal(); // Der Stift hat dieselben Koordinaten und Winkel wie der Pfeils und zeigt nach oben.
    }

    /**
    * Der Pfeil bewegt sich langsam in seiner Richtung um die Laenge "distanz".
    * @param distanz Der Distanz, um den der Pfeil in seiner Richtung bewegt.
    */
    public void bewegeUm(double distanz)
    {
    while (distanz > 0)
    {
    this.radierePfeil();
    meinStift.bewegeUm(1);
    this.xKoordinate = meinStift.hPosition();
    this.yKoordinate = meinStift.vPosition();
    this.zeichnePfeil();
    distanz--;
    }
    }

    /**
    * Der Pfeil dreht sich blitz schnell im Uhrzeigersinn um die Winkelgroeße alpha.
    * @param alpha Die Winkelgroeße, um die der Pfeil sich dreht.
    */
    public void dreheUm(double alpha)
    {
    this.radierePfeil();
    meinStift.dreheUm(-alpha); // Diese und die naechste Anweisungszeile kann mann auch durch folgende Anweisung ersetzen: winkel = winkel + alpha;
    this.winkel = meinStift.winkel(); //
    this.zeichnePfeil();
    this.winkel = this.winkel % 360.0; // Der Betrag vom Winkel bleibt im Bereich von [0; 360[.
    }

    /**
    * Der Pfeil dreht sich unabhaengig von seiner vorherigen Richtung auf Winkelgroeße alpha und hat alpha als Neigungswinkel.
    * @param alpha Die Winkelgroeße, auf die der Pfeil gedreht wird.
    */
    public void dreheBis(double alpha)
    {
    this.radierePfeil();
    this.winkel = alpha;
    this.zeichnePfeil();
    this.winkel = this.winkel % 360.0; // Der Betrag vom Winkel bleibt im Bereich von [0; 360[.
    }

    /**
    * Zuerst dreht sich der Pfeil langsam nach unten und bewegt sich anschließend bis zum Bildschirmrand.
    */
    public void pfeilFalle()
    {
    int veraenderung; // Die Variable veraenderung wird definiert.
    if (this.winkel > 90 && this.winkel <270>1) // 4 Ringe beginnend mit dem aeußeren Ring werden gezeichnet.
    { // Die Schleife zeichnet beim 1. Durschlauf den aeußeren Ring mit Radius 40, beim 2. den naechst groeßeren Ring mit Radius 30 usw.
    meinStift.zeichneKreis(radius);
    radius = radius - abstand; // der Radius des naechst groeßeren Ringes wird berechnet und die Zahl 30 (=40-10) zugewiesen.
    }
    radius = ringanzahl*abstand; // Radius der Zielscheibe wird wieder auf 40 (= 4 * 10) gesetzt.
    }

    // Aufraeumen
    /**
    * Die Zielscheibe wird freigegeben.
    */
    public void gibFrei()
    {
    meinStift.gibFrei();
    //derBildschirm.gibFrei();
    }
    }

    Klasse Hauptprogramm:


    import sum.kern.*; // Alle Klassen aus sum.kern werden importiert.
    // Die Klasse Rechner aus sum.werkzeuge wird importiert.
    /**
    *Das Hauptprogramm ist das Modell einer "Spielhalle". Sie wird durch ein Fenster realiesiet, woauf ein Pfeil und eine Zielscheibe gezeichnet sind.
    *Der Pfeil kann sich drehen und bewegen.
    *
    * @author IF-Kurs-JgSt 11 - ueberarbeitet von Nadjafi
    * @version 17.10.2007 - ueberarbeitet am 25.10.07
    */
    public class Hauptprogramm
    {
    // Objekte
    Bildschirm derBildschirm;
    Stift meinStift;
    Pfeil meinPfeil;
    Zielscheibe dieZielscheibe;
    Maus dieMaus;
    // derRechner wird als Objektname definiert.

    //Attribute

    // Konstruktor
    /**
    * DAs Hauptprogramm (die Spielhalle mit dem Pfeil und mit der Zielscheibe) wird initialisiert.
    */
    public Hauptprogramm()
    {
    derBildschirm = new Bildschirm(600,600);
    meinStift = new Stift();
    meinPfeil = new Pfeil();
    dieZielscheibe = new Zielscheibe();
    dieMaus = new Maus();
    // Ein Rechner wird erzeugt, initialisiert und dem Objektname derRechner zugewiesen.
    }

    //Dienste

    /**
    * Der Pfeil wird entgegen dem Uhrzeigersinn solange gedreht, bis die Maus gedruckt wird.
    */
    public void pfeilDrehe()
    {
    while (!dieMaus.istGedrueckt())
    {
    meinPfeil.dreheUm(-1);
    }
    }

    /**
    * Zuerst dreht sich der Pfeil langsam nach unten und bewegt sich anschließend bis zum Bildschirmrand.
    */
    public void pfeilFalle()
    {
    meinPfeil.pfeilFalle();
    }


    /**
    * Der Pfeil fliegt langsam in seiner Richtung und haelt an, sobald seine Spitze eine "gedachte" vertikale Linie durch den Mittelpunkt der Zielscheibe erreicht hat.
    */
    public void pfeilFlieg()
    {
    // spitzeXKoordinate wird als eine Deziemalzahl definiert.
    // spitzeXKoordinate wird die errechnete Zahl fuer die x-Koordinate der Pfeilspitze zugeordnet.
    // Bedingung: Solange die Spitze die "gedachte" vertikale Linie nicht erreicht hat

    // Der Pfeil bewegt sich um 1 Pixel in seiner Richtung.
    // spitzeXKoordinate wird neu berechnet.

    }

    //Aufraeumen
    /**
    * Der Instanz wird freigegeben.
    */
    public void gibFrei()
    {
    // Aufraeumen
    derBildschirm.gibFrei();
    meinPfeil.gibFrei();
    dieMaus.gibFrei();
    //Der Rechner wird freigegeben.
    }
    }



    Re: Hausaufgabe zum 29.10.07, wichtige Hinweise zum Vorgehen

    marco - 27.10.2007, 12:24

    .
    phät, k



    Re: Hausaufgabe zum 29.10.07, wichtige Hinweise zum Vorgehen

    MalteW - 27.10.2007, 15:36

    fehler im programmtext?? oder kann ich nicht gucken^^
    hallo,

    ich weiß leider nicht was ich falsch gemacht habe. Aber in der KLasse Pfeil in Zeile 135 da zeigt er mir einen fehler an. operator> cannot be apploed to bootlean,int . Es ist auch kein Hilfetext verfügbar. Was muss geändert werden?-habe nix an dem vorgegeben Programm geändert außer aus den 8) ein 8 ) gemacht...



    Re: Hausaufgabe zum 29.10.07, wichtige Hinweise zum Vorgehen

    Anonymous - 28.10.2007, 01:02


    Ich hab da auch mal 'ne kleine Frage.
    Wo ist denn bitte der Programmtext zur Zielscheibe?
    Da stehen nur die Programmtexte für Hauptprogramm und Pfeil, obwohl wir ja eigentlich noch eine dritte Klasse erstellen sollen, halt die Zielscheibe, welche sich nicht im Anhang befindet. Odr bin ich zu blöd ^^?

    MfG
    Fabi

    PS: Hier zeigt er übrigens beim Übersetzen 'nen Fehler an:

    if (this.winkel > 90 && this.winkel <270>1) // 4 Ringe beginnend mit dem aeußeren Ring werden gezeichnet.

    Ich denke, das hat hat mit der Dartscheibe zu tun, oder?
    Als Fehlermeldung steht da:

    operator > cannot be applied to boolean,int

    Hoffe, jmd. kann mir helfen.

    BÄM!



    Re: Hausaufgabe zum 29.10.07, wichtige Hinweise zum Vorgehen

    Anonymous - 28.10.2007, 10:50


    Ich mein is kein wunder aber ich hab die fehlermeldung natürlich auch, und auch mit meinem alten quelltext, der von mir programmierten Dartscheibe funktioniert nicht, möchte also hier unserem lehrerteam mitteilen, dass ich die hausaufgaben deshalb nicht erledigen konnte



    Re: Hausaufgabe zum 29.10.07, wichtige Hinweise zum Vorgehen

    marco - 28.10.2007, 12:44


    Robin hat folgendes geschrieben: Ich mein is kein wunder aber ich hab die fehlermeldung natürlich auch, und auch mit meinem alten quelltext, der von mir programmierten Dartscheibe funktioniert nicht, möchte also hier unserem lehrerteam mitteilen, dass ich die hausaufgaben deshalb nicht erledigen konnte



    :!:



    Re: Hausaufgabe zum 29.10.07, wichtige Hinweise zum Vorgehen

    Nadjafi - 28.10.2007, 15:19

    Hausaufgabe zum 29.10.07, wichtige Hinweise zum Vorgehen
    Wer Probleme hat, die Dateien runter zu laden, soll eine mail an mich schreiben, ich schicke dann die Dateien per Mail.

    Gruß
    Nadjafi

    Hier ist der Fehlende Quelltext zur Zielscheibe:


    import sum.kern.*;
    /**
    * Die Zielscheibe befindet sich mit ihrem Mittelpunkt auf einer genau definierten Position des Bildschirms. Sie hat einen genau definierten Radius.
    * Sie besteht aus einer genau definierten Anzahl von Ringen, die den gleichen Mittelpunkt und den gleichen Abstand zu einander haben.
    *
    * @author IF-Kurs-JgSt 11 - ueberarbeitet von Nadjafi
    * @version 29.09.2007 - ueberarbeitet am 25.10.07
    */
    public class Zielscheibe
    {
    // Bezugsobjekte
    //Bildschirm derBildschirm;
    Stift meinStift;

    // Attribute
    double xKoordinate;
    double yKoordinate;
    double radius;
    double ringanzahl;
    //double abstand; // ist als einfache Variable innerhalb der Methode zeichneZielscheibe() definiert.

    // Konstruktor
    /**
    * Die Zielscheibe wird initialisiert. Sie besteht aus 4 Ringen, die den gleichen Mittelpunkt auf der Position (500,200) haben.
    * Der aeußere Ring hat einen Radius der Laenge 40 Px und alle Ringe stehen in einem Abstand von 10 Px zu einander.
    */

    public Zielscheibe()
    {
    //derBildschirm = new Bildschirm(600,600);
    meinStift = new Stift();
    xKoordinate = 500; // x-Koordinate des Mittelpunktes der Zielscheibe
    yKoordinate = 200; // y-Koordinate des Mittelpunktes der Zielscheibe
    radius = 40; // Außenradius der Zielscheibe
    ringanzahl = 4; // Anzahl der Ringe
    //abstand = radius/ringanzahl; // Siehe Auftrag zeichneZielscheibe()
    this.zeichneZielscheibe();
    }


    // Dienste

    // Die Zielscheibe wird gezeichnet.
    private void zeichneZielscheibe() // Dieser Auftrag ist privat und daher von außen nicht sichtbar.
    {
    double abstand = radius / ringanzahl; // abstand wird definiert und ihm wird die Zahl 10 (=40/4) zugewiesen.
    meinStift.hoch();
    meinStift.bewegeBis(xKoordinate, yKoordinate); // Der Stift ist an der Position des Mittelpunktes der Zielscheibe.
    while(radius>1) // 4 Ringe beginnend mit dem aeußeren Ring werden gezeichnet.
    { // Die Schleife zeichnet beim 1. Durschlauf den aeußeren Ring mit Radius 40, beim 2. den naechst groeßeren Ring mit Radius 30 usw.
    meinStift.zeichneKreis(radius);
    radius = radius - abstand; // der Radius des naechst groeßeren Ringes wird berechnet und die Zahl 30 (=40-10) zugewiesen.
    }
    radius = ringanzahl*abstand; // Radius der Zielscheibe wird wieder auf 40 (= 4 * 10) gesetzt.
    }

    // Aufraeumen
    /**
    * Die Zielscheibe wird freigegeben.
    */
    public void gibFrei()
    {
    meinStift.gibFrei();
    //derBildschirm.gibFrei();
    }
    }



    Re: Hausaufgabe zum 29.10.07, wichtige Hinweise zum Vorgehen

    Anonymous - 28.10.2007, 21:38


    Ok, danke für den Quelltext der Zielscheibe. Aber der zeigt mir immer noch den gleichen Fehler an der gleichen Stelle beim Pfeil an:

    if (this.winkel > 90 && this.winkel <270>1) // 4 Ringe beginnend mit dem aeußeren Ring werden gezeichnet.

    Fehler:
    operator > cannot be applied to boolean,int



    Re: Hausaufgabe zum 29.10.07, wichtige Hinweise zum Vorgehen

    Nadjafi - 28.10.2007, 22:08

    Überschneidung beim Kopieren
    Fabi hat folgendes geschrieben: Ok, danke für den Quelltext der Zielscheibe. Aber der zeigt mir immer noch den gleichen Fehler an der gleichen Stelle beim Pfeil an:

    if (this.winkel > 90 && this.winkel <270>1) // 4 Ringe beginnend mit dem aeußeren Ring werden gezeichnet.

    Fehler:
    operator > cannot be applied to boolean,int

    ich glaube, dass mir beim kopieren Fehler unterlaufen ist. Ab genau dieser Stelle sind Methoden der Zielscheibe ansatt des Pfeils kopiert.

    Hier noch einmal der Quelltext zur Klasse Pfeil:

    import sum.kern.*;
    /**
    * Der Pfeil befindet sich auf einer genau definierten Position des Bildschirms und zeigt in eine Richtung, die durch Winkel beschrieben wird.
    * Er hat eine genau definierte Laenge.
    *
    * @author IF-Kurs-JgSt 11 - ueberarbeitet von Nadjafi
    * @version 16.09.2007 - ueberarbeitet am 25.10.07
    */
    public class Pfeil
    {
    // Bezugsobjekte
    //Bildschirm derBildschirm;
    Stift meinStift;

    // Attribute
    double xKoordinate;
    double yKoordinate;
    double laenge;
    double winkel;

    // Konstruktor
    /**
    * Der Pfeil wird initialisiert. Er ist 80 Px lang, sein Schaft steht an der Position (400,50) und zeigt in Richtung 30 Grad.
    */
    public Pfeil()
    {
    //derBildschirm = new Bildschirm(600,600);
    meinStift = new Stift();
    xKoordinate = 100; // x-Koordinate des hintersten Punktes vom Schaft des Pfeils
    yKoordinate = 450; // y-Koordinate des hintersten Punktes vom Schaft des Pfeils
    laenge = 80; // Laenge des Pfeils
    winkel = 30; // Neigungswinkel des Pfeils
    this.zeichnePfeil();
    }


    // Dienste

    // Eine Spitze (des Pfeils) wird gezeichnet.
    private void zeichneSpitze() // Diese Methode ist privat und deshalb nach außen nicht sichtbar.
    {
    meinStift.runter();
    meinStift.dreheBis(winkel);
    meinStift.dreheUm(135); // Ab hier wird die Linke Seite einer Spitze gezeichnet.
    meinStift.bewegeUm(8);
    meinStift.hoch(); //verhindert einen doppelstrich
    meinStift.dreheUm(180);
    meinStift.bewegeUm(8);
    meinStift.dreheUm(-90); // Ab hier wird die rechte Seite einer Spitze gezeichnet.
    meinStift.runter();
    meinStift.bewegeUm(8);
    meinStift.hoch(); //verhindert einen doppelstrich
    meinStift.dreheUm(180);
    meinStift.bewegeUm(8);
    meinStift.dreheBis(winkel); //Der Stift hat die gleiche Neigungswinkel wie der Pfeil.
    }


    // Ein Pfeil mit der Laenge "laenge" und dem Neigungswinkel "winkel" wird gezeichnet.
    //Der Pfeil befindet sich mit dem Ende an der Positin (xKoordinate, yKoordinate) des Bildschirms.
    private void zeichnePfeil() // Diese Methode ist privat.
    {
    meinStift.hoch();
    meinStift.bewegeBis(xKoordinate, yKoordinate);
    meinStift.dreheBis(winkel);
    meinStift.runter();
    this.zeichneSpitze(); // die 1. Spitze am hintersten Ende vom Schaft des Pfeils
    meinStift.runter();
    meinStift.bewegeUm(8);
    this.zeichneSpitze(); // die 2. Spitze nach 8 Pixel
    meinStift.runter();
    meinStift.bewegeUm(8);
    this.zeichneSpitze(); // die 3. Spitze nach weiteren 8 Pixel
    meinStift.runter();
    meinStift.bewegeUm(laenge-16);
    this.zeichneSpitze(); // Diese Spitze ist die Spitze des Pfeils.
    meinStift.bewegeBis(xKoordinate, yKoordinate); // Der Stift hat dieselbe Koordinaten wie der Pfeil und zeigt nach oben.
    }

    // Die Methode radierePfeil loescht bzw. radiert den Pfeil.
    private void radierePfeil() // Diese Methode ist privat.
    {
    meinStift.radiere();
    this.zeichnePfeil();
    meinStift.normal(); // Der Stift hat dieselben Koordinaten und Winkel wie der Pfeils und zeigt nach oben.
    }

    /**
    * Der Pfeil bewegt sich langsam in seiner Richtung um die Laenge "distanz".
    * @param distanz Der Distanz, um den der Pfeil in seiner Richtung bewegt.
    */
    public void bewegeUm(double distanz)
    {
    while (distanz > 0)
    {
    this.radierePfeil();
    meinStift.bewegeUm(1);
    this.xKoordinate = meinStift.hPosition();
    this.yKoordinate = meinStift.vPosition();
    this.zeichnePfeil();
    distanz--;
    }
    }

    /**
    * Der Pfeil dreht sich blitz schnell im Uhrzeigersinn um die Winkelgroeße alpha.
    * @param alpha Die Winkelgroeße, um die der Pfeil sich dreht.
    */
    public void dreheUm(double alpha)
    {
    this.radierePfeil();
    meinStift.dreheUm(-alpha); // Diese und die naechste Anweisungszeile kann mann auch durch folgende Anweisung ersetzen: winkel = winkel + alpha;
    this.winkel = meinStift.winkel(); //
    this.zeichnePfeil();
    this.winkel = this.winkel % 360.0; // Der Betrag vom Winkel bleibt im Bereich von [0; 360[.
    }

    /**
    * Der Pfeil dreht sich unabhaengig von seiner vorherigen Richtung auf Winkelgroeße alpha und hat alpha als Neigungswinkel.
    * @param alpha Die Winkelgroeße, auf die der Pfeil gedreht wird.
    */
    public void dreheBis(double alpha)
    {
    this.radierePfeil();
    this.winkel = alpha;
    this.zeichnePfeil();
    this.winkel = this.winkel % 360.0; // Der Betrag vom Winkel bleibt im Bereich von [0; 360[.
    }

    /**
    * Zuerst dreht sich der Pfeil langsam nach unten und bewegt sich anschließend bis zum Bildschirmrand.
    */
    public void pfeilFalle()
    {
    int veraenderung; // Die Variable veraenderung wird definiert.
    if (this.winkel > 90 && this.winkel < 270) // Bedingung: Falls der Pfeil nach links zeigt
    {
    veraenderung = -1; // veraenderung wird die Zahl -1 zugewiesen.
    }
    else // sonst
    {
    veraenderung = 1; // veraenderung wird die Zahl 1 zugewiesen.
    }

    while (this.winkel != 270) // Bedingung: Solange der Pfeil nicht nach unten zeigt
    {
    this.dreheUm(veraenderung); // erfolgt eine Drehung um 1 Pixel nach rechts, falls veraenderung = 1 gilt, sonst um 1 Pixel nach links.
    }
    //this.bewegeUm(derBildschirm.hoehe() - this.yKoordinate - this.laenge); // Wenn der Bildschirm auskommentiert ist, fuehrt diese Anweisungszeile zu einer Fehlermeldung, daher
    this.bewegeUm(600 - this.yKoordinate - this.laenge); //Der Pfeil wird in seiner Richtung nach unten bis zum Bilsdschirmrand bewegt. Er steht mit der Spitze auf dem Bildschirmrand.
    }

    // Aufraeumen
    /**
    * Der Pfeil wird freigegeben.
    */
    public void gibFrei()
    {
    meinStift.gibFrei();
    //derBildschirm.gibFrei();
    }
    }



    Re: Hausaufgabe zum 29.10.07, wichtige Hinweise zum Vorgehen

    Anonymous - 29.10.2007, 16:31


    Gut, mit diesem Quelltext kommen keine Fehler mehr vor.
    Habe auch das Hauptprogramm gestartet, jedoch lässt sich der Pfeil nicht fliegen. Er lässt sich jedoch drehen und fallen.

    Wenn ich aber fliege mache, macht der Pfeil gar nichts. Woran kann das liegen?



    Re: Hausaufgabe zum 29.10.07, wichtige Hinweise zum Vorgehen

    Eckey - 29.10.2007, 21:25


    Hallo Fabian,

    die Methode pfeilFlieg() ist auch noch nicht fertig, es stehen dort nur die Kommentare. Deshalb fliegt der Pfeil auch nicht.
    Wenn Sie den Programmtext so eingeben, wie wir ihn heute im Unterricht besprochen haben, sollte der Pfeil fliegen.

    Gruß
    V. Eckey



    Re: Hausaufgabe zum 29.10.07, wichtige Hinweise zum Vorgehen

    Anonymous - 29.10.2007, 22:54


    Ah, na dann weiß ich ja bescheid :)



    Mit folgendem Code, können Sie den Beitrag ganz bequem auf ihrer Homepage verlinken



    Weitere Beiträge aus dem Forum "I", wie Informatikforum

    Problem beim Profil - gepostet von Till am Montag 13.08.2007



    Ähnliche Beiträge wie "Hausaufgabe zum 29.10.07, wichtige Hinweise zum Vorgehen"

    Wichtige Hinweise - unknow (Freitag 08.09.2006)
    Allgemeine Hinweise - 3am3yyp (Montag 22.05.2006)
    Hausaufgabe für Montag den 02.10.2006 - Tutti (Samstag 30.09.2006)
    Hinweise für Meilenstein Präsentationen - jane (Donnerstag 19.10.2006)
    Allgemeine Hinweise - ashanti (Donnerstag 29.03.2007)
    Allgemeine Hinweise - Lars (Dienstag 27.06.2006)
    Allgemeine Hinweise - manuxenia (Donnerstag 02.09.2004)
    Massives Vorgehen gegen Raubkopierer - gearbox (Samstag 20.03.2004)
    Hinweise - simon77 (Mittwoch 11.04.2007)
    Rechtliche Hinweise - Horst (Samstag 28.10.2006)