Natascha Geschrieben 26. Januar 2012 Teilen Geschrieben 26. Januar 2012 (bearbeitet) Hallo erstmal, leider reicht mein Wissen bei folgendem Problem nicht aus. Ich möchte einen Fisch von links oben nach rechts oben dann nach unten und danach nach unten links schwimmen lassen. Ich komme soweit, dass er bis nach rechts unten schwimmt, und dann stehen bleibt. Es sieht so bei mir aus: import acm.graphics.*; import acm.program.*; import acm.util.*; =============================================== public class Animation { // Objekte: GImage hintenA, hintenB; GCanvas canvas; Fisch f1,f2; public Animation () { hintenA = new GImage("aquarium.jpg"); canvas = Fenster.getCanvas(); canvas.add(hintenA); f1 = new Fisch(0,0); f2 = new Fisch(450,250); //f1.drehL(); //f1.pause(500); for (int loop=0;loop<4;loop++) { f1.setPause(0); for (int i=0;i<50;i++) { f1.move(); f2.move(); } f1.drehL(); //Richtung nach unten ändern //f2.drehR(); for (int loop1=0;loop<2;loop++) { f1.move(); f1.drehL(); } for (int loop2=0;loop<-50;loop++) { f1.move(); f1.drehL(); ===================================================== import acm.graphics.*; import acm.program.*; import acm.util.*; ====================================================== public class Fisch { // Hier Datentyp und Name fuer Zustandsvariablen und "Bestandteile" GImage zBild; // Aussehen des Fisches boolean zSchautR; // true (wahr) oder false (falsch) int z_ms; // Pausendauer in ms // Konstruktor Maus() erzeugt Maeuse: public Fisch (double pX, double pY) { // p wie Parameter = Input zBild = new GImage("fisch2.gif"); zSchautR = true; z_ms = 10; Fenster.setze(zBild, pX,pY); } public void drehL() { // Methode mit void = kein Output zBild.setImage("fisch2.gif"); zSchautR = false; zBild.pause(z_ms); } public void drehR() { zBild.setImage("fisch2.gif"); zSchautR = true; zBild.pause(z_ms); } public void setPause(int p_ms) { // Wartezeit in ms z_ms = p_ms; } public void move() { // springt um 8 Pixel if (zSchautR) zBild.move(18,0); oder 0 gerade else zBild.move(0,10); zBild.pause(z_ms); } public void move1() { if (zSchautR) zBild.move(0,10); else zBild.move(20,1); //zBild.pause(z_ms); } } Danke im Voraus Bearbeitet 26. Januar 2012 von flashpixx Code-Tags Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sacaldur Geschrieben 26. Januar 2012 Teilen Geschrieben 26. Januar 2012 und was willst du von uns wissen? was genau ist dein Problem? weißt du nicht, wie du weiter vorgehen sollst? oder bist du gerade zu faul und willst, dass wir es machen? da ich gerade nich in meiner Wohnung bin, kan ich keinen Blick auf meine Glaskugel werfen... benutze für Code bitte auch die Code-Tags - dafür sind sie da Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Natascha Geschrieben 26. Januar 2012 Autor Teilen Geschrieben 26. Januar 2012 Hallo, mit den Code-Tags habe ich nicht gewußt, ich bin zum erstenmal in einem Forum, Entschuldigung. Ich habe alles mögliche probiert, aber ich bekomme ihn nicht nach unten links. Wie müste ich die Schleife ändern das er zurück schwimmt. wie gesagt rechts und nach unten bekomme ich hin. Ich hoffe ich habe es jetzt einigermassen verständlich formuliert. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 26. Januar 2012 Teilen Geschrieben 26. Januar 2012 Deine Fische bewegen sich immer nur in einer Dimension. Ausgehend von einem Koordinatensystem (dein Bildschirm bzw. deine Canvas ist nichts anderes) ergeben sich die Möglichkeiten: Bewegung horizontal (y - Achse ändert sich nicht, x - Wert wird größer bzw. kleiner, je nachdem in welche Richtung sich der Fisch bewegt); Bewegung vertikal funktioniert entsprechend. In deiner Schleife rufst du die Bewegung auf und verschiebst die Position immer ein Stück weiter. Wenn du andere Richtungen haben willst, musst du den Schritt anpassen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Natascha Geschrieben 26. Januar 2012 Autor Teilen Geschrieben 26. Januar 2012 Vielen Dank, ich werde es mal so versuchen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Natascha Geschrieben 26. Januar 2012 Autor Teilen Geschrieben 26. Januar 2012 Hallo nochmal. Habe alles ausprobiert der blöde Fisch bleibt immer unten rechts stehen. Ich wäre über einen erneuten Denkanstoß dankbar Danke im Voraus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 26. Januar 2012 Teilen Geschrieben 26. Januar 2012 Du läuft im Moment z.B. von in der X-Koordinate von 0 bis n, d.h. bei jedem Schlaufedurchlauf wird die Variable um 1 größer. Um das ganze "rückwärts" zu machen läufst Du von n bis 0 oder oder eben auch wieder von 0 bis n wobei Du aber dann aber die Position berechnen musst, nämlich n-x (wenn n = 5 und x = 0,1,2,3 ist, dann wäre das dann 5,4,3,2). Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Natascha Geschrieben 26. Januar 2012 Autor Teilen Geschrieben 26. Januar 2012 Erstmal danke:) Heißt das, dass ich eine neue Schleife erzeugen muss?? und diese dann rückwärts laufen lassen??? Bin völlig verwirrt Ich habe alle Koordinaten in der vorhandenen Schleife ausprobiert er schwimmt schrägt, von oben nach unten usw. nur nicht von rechts unten nach links unten Ich bin sehr dankbar für die Antworten, aber ich kann sie nicht umsätzen danke Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 26. Januar 2012 Teilen Geschrieben 26. Januar 2012 Die Y-Koordinate bewegt ein Objekt in de Y-Achse (oben-unten), die X-Koordinate eben in der X-Achse (links-rechts). Je nachdem wo Dein Nullpunkt liegt (0/0) liegt eben rechts-links oder links-rechts bzw unten-oben oder oben-unten, wenn der Wert der Koordinate größer wird. Wenn Du von (0/0) nach (1/1), (2/2) gehst, dann wird das eben eine Diagonale. Ich gebe keine Lösung für das Problem, Du musst schon mal selbst darüber nachdenken wie man das umsetzt. Versuch doch zuerst einmal nur eine Bewegung korrekt und richtig hinzu bekommen, also entweder oben-unten oder links-rechts. Wie müssen sich die Koordinaten für eine gerade Bewegung ändern. Du wirst mit ausprobieren nicht weit kommen, Du musst dir überlegen, wie sich Deine Koordinaten von Schritt zu Schritt verändern müssen, um eben die gewünschte Bewegung hin zu bekommen. Man kann das auch auf einem Stück Papier auf malen und sich überlegen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Natascha Geschrieben 26. Januar 2012 Autor Teilen Geschrieben 26. Januar 2012 Vielen Dank, aber ich habe nie nach einer Lösung gefragt und das mit den koordinaten habe ich verstanden, sonst wäre ich nicht soweit gekommen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 26. Januar 2012 Teilen Geschrieben 26. Januar 2012 und das mit den koordinaten habe ich verstanden, sonst wäre ich nicht soweit gekommen. Und wo ist das Problem, wenn Du das Prinzip der Koordinaten verstanden hast? Die Gesamtbewegung setzt sich letztendlich aus Teilbewegungen zusammen, wenn das Objekt ein Rechteck folgen soll, dann ist das die Bewegung: links-rechts, oben-unten, rechts-links, unten-oben Dafür braucht man ein paar Schleifen und etwas Rechenarbeit bezüglich der Koordinaten. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 27. Januar 2012 Teilen Geschrieben 27. Januar 2012 Erstmal danke:) Heißt das, dass ich eine neue Schleife erzeugen muss?? und diese dann rückwärts laufen lassen??? Bin völlig verwirrt Ich habe alle Koordinaten in der vorhandenen Schleife ausprobiert er schwimmt schrägt, von oben nach unten usw. nur nicht von rechts unten nach links unten Ich bin sehr dankbar für die Antworten, aber ich kann sie nicht umsätzen danke Wie sehen denn jetzt deine move-Methoden aus? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Natascha Geschrieben 27. Januar 2012 Autor Teilen Geschrieben 27. Januar 2012 Hallo , jetzt läuft es, nochmals danke Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.