This site requires JavaScript, please enable it in your browser!
Greenfoot back
helpmeplease
helpmeplease wrote ...

2023/6/30

Objekte sollen mit der zeit schneller und mehr runterfallen

helpmeplease helpmeplease

2023/6/30

#
ich muss für die Schule ein Projekt machen idem ein Baer Gegenstände isst die vom Himmel fallen, diese sollen nun mit im laufe der Zeit schneller und mehr werden und ich weiß leider nicht wie ich anfagen kann. Es wäre sehr nett wenn mir jemand helfen könnte :)
Super_Hippo Super_Hippo

2023/6/30

#
Ich empfehle, in Schritten vorzugehen und somit eins nach dem anderen zu machen. Jeder einzelne Schritt wirkt dann einfacher als es im Ganzen zu machen. Viel Glück! 1. Erstelle den Bären. Sorge dafür, dass er bewegt werden kann (Maus oder Tastatur). 2. Definiere Gegenstände und ihre Bewegung nach unten. 3. Gib dem Bär die Möglichkeit, die hoffentlich essbaren „Gegenstände“ zu essen. 4. Sorge dafür, dass neue Gegenstände mit der Zeit zufällig platziert werden. 5. Sorge dafür, dass sich das Spiel mit der Zeit verändert. Die Welt setzt in kürzeren Abständen Gegenstände ein und die Gegenstände selbst bewegen sich schneller. 6. Evtl. möchtest du noch weitere Dinge ergänzen wie eine Anzeige, in der die Anzahl eingesammelter Gegenstände festgehalten wird. Und eine Lebensanzeige für nicht eingesammelte Gegenstände etc.
helpmeplease helpmeplease

2023/7/1

#
Ich glaube ich habe mich falsch ausgedrückt eigentlich intresiert mich nur wie man die Objakte die vom himmel fallen jetzt mit der zeit schneller werden lassen kann und dazu mit der zeit mehr werden
Super_Hippo Super_Hippo

2023/7/1

#
Es wäre sicher am einfachsten, wenn du deinen bisherigen Code zeigtest. Nutze den ,code‘ tag für eine gute Formatierung. Grundlegend kann man aber folgendes sagen: 1. Nutze eine Variable in deiner Welt und erhöhe sie jeden Zeitschritt um eins (act-Funktion in der Welt). 2. Basierend auf dieser Variable, senke die Zeit zwischen dem Neuerstellen der Gegenstände und erhöhe die Geschwindigkeit der Gegenstände.
helpmeplease helpmeplease

2023/7/1

#
public class Pouwelt extends World { Pou pou; Boden boden; GreenfootSound backgroundMusic = new GreenfootSound("hintergrundmusik.wav"); // erstellt neue hintergrundmusik /* * Erzeugt die Welt, färbt den Hintergrund und * platziert ein Pou-Objekt unten in die Mitte. */ public Pouwelt() { super(800, 600, 1); /* erzeugt den Boden am unteren Rand der Welt */ boden = new Boden(); int bodenHoehe = boden.getImage().getHeight(); addObject(boden, 400, 600 - bodenHoehe/2); /* erzeugt Pou und platziert ihn mittig oberhalb des Bodens */ pou = new Pou(); int pouHoehe = pou.getImage().getHeight(); addObject(pou, 400, 620 - bodenHoehe - pouHoehe/2); } // erzeugt mit der Wahrscheinlichkeit 0,01 ein Essen-Objekt public void act() { erzeugeMitWahrscheinlichkeit(0.01, new Pizza()); erzeugeMitWahrscheinlichkeit(0.01, new Pommes()); erzeugeMitWahrscheinlichkeit(0.01, new Bombe()); erzeugeMitWahrscheinlichkeit(0.01, new Erdbeere()); erzeugeMitWahrscheinlichkeit(0.01, new Stein()); erzeugeMitWahrscheinlichkeit(0.01, new Schuh()); erzeugeMitWahrscheinlichkeit(0.01, new Schoki()); erzeugeMitWahrscheinlichkeit(0.01, new Katzenfutter()); backgroundMusic.playLoop(); //spielt die Hintergrundmusik in dauerschleife ab. } /* * Erzeugt mit Wahrscheinlichkeit p (zwischen 0 und 1) den angegebenen Akteur. */ void erzeugeMitWahrscheinlichkeit(double p, Actor akteur) { double zufallszahl = Math.random(); if (zufallszahl <= p) { platziereZufaellig(akteur); } } /* * Platziert das Objekt gegenstand an zufälliger Stelle am oberen Rand der Welt. */ void platziereZufaellig(Actor gegenstand) { int x = 50 + Greenfoot.getRandomNumber(700); // zwischen 50 und 749 int y = Greenfoot.getRandomNumber(50); // zwischen 0 und 49 addObject(gegenstand, x, y); // platziert das Objekt gegenstand an der Stelle (x|y) } /* * Setzt die Hintergrundmusik auf 0 wenn man auf stopp drückt. */ public void stopped() { backgroundMusic.setVolume(0); } /* * Wenn man das Spiel startet setzt es die hintergrundmusik auf 50. */ public void started() { backgroundMusic.setVolume(50); //change bg to what you declared the file as } }
helpmeplease helpmeplease

2023/7/1

#
helpmeplease helpmeplease

2023/7/1

#
public class Pouwelt extends World { Pou pou; Boden boden; GreenfootSound backgroundMusic = new GreenfootSound("hintergrundmusik.wav"); // erstellt neue hintergrundmusik /* * Erzeugt die Welt, färbt den Hintergrund und * platziert ein Pou-Objekt unten in die Mitte. */ public Pouwelt() { super(800, 600, 1); /* erzeugt den Boden am unteren Rand der Welt */ boden = new Boden(); int bodenHoehe = boden.getImage().getHeight(); addObject(boden, 400, 600 - bodenHoehe/2); /* erzeugt Pou und platziert ihn mittig oberhalb des Bodens */ pou = new Pou(); int pouHoehe = pou.getImage().getHeight(); addObject(pou, 400, 620 - bodenHoehe - pouHoehe/2); } // erzeugt mit der Wahrscheinlichkeit 0,01 ein Essen-Objekt public void act() { erzeugeMitWahrscheinlichkeit(0.01, new Pizza()); erzeugeMitWahrscheinlichkeit(0.01, new Pommes()); erzeugeMitWahrscheinlichkeit(0.01, new Bombe()); erzeugeMitWahrscheinlichkeit(0.01, new Erdbeere()); erzeugeMitWahrscheinlichkeit(0.01, new Stein()); erzeugeMitWahrscheinlichkeit(0.01, new Schuh()); erzeugeMitWahrscheinlichkeit(0.01, new Schoki()); erzeugeMitWahrscheinlichkeit(0.01, new Katzenfutter()); backgroundMusic.playLoop(); //spielt die Hintergrundmusik in dauerschleife ab. } /* * Erzeugt mit Wahrscheinlichkeit p (zwischen 0 und 1) den angegebenen Akteur. */ void erzeugeMitWahrscheinlichkeit(double p, Actor akteur) { double zufallszahl = Math.random(); if (zufallszahl <= p) { platziereZufaellig(akteur); } } /* * Platziert das Objekt gegenstand an zufälliger Stelle am oberen Rand der Welt. */ void platziereZufaellig(Actor gegenstand) { int x = 50 + Greenfoot.getRandomNumber(700); // zwischen 50 und 749 int y = Greenfoot.getRandomNumber(50); // zwischen 0 und 49 addObject(gegenstand, x, y); // platziert das Objekt gegenstand an der Stelle (x|y) } /* * Setzt die Hintergrundmusik auf 0 wenn man auf stopp drückt. */ public void stopped() { backgroundMusic.setVolume(0); } /* * Wenn man das Spiel startet setzt es die hintergrundmusik auf 50. */ public void started() { backgroundMusic.setVolume(50); //change bg to what you declared the file as } }
rdFx rdFx

2023/7/1

#
Füge der Klasse Pouwelt folgende Attribute hinzu:
int zaehler = 0;
double p = 0.01;
In der act-Methode, ersetze jede Konstante (0.01) mit p, z. B.:
erzeugeMitWahrscheinlichkeit(0.01, new Pizza());
// ersetzen mit 
erzeugeMitWahrscheinlichkeit(p, new Pizza());
Weiterhin in der act-Methode; erhöhe den zaehler mit jedem Aufruf von act:
zaehler++;
Weiterhin in der act-Methode; und nutze den zaehler, um p zu erhöhen, z. B.:
if( (zaehler % 3) == 0)
{
    p += 0.01;
}
Wenn p mit jedem act-Aufruf erhöht werden kann, dann wird kein zaehler benötigt (in act-Methode):
p += 0.01; // oder was auch immer angemessen ist
Die Wahrscheinlichkeit das ein Objekt erzeugt wird ist von p abhängig. Je größer p ist, desto wahrscheinlicher ist es, dass ein Objekt erzeugt wird. Drei Anmerkungen: Falls der zaehler verwendet wird, kann der Wert überlaufen falls das Szenario seeeeeeehr lange läuft (Integer overflow - sollte hier egal sein). Da hier double verwendet wird (für p), wird die Summe nicht den Erwartungen entsprechen (kleine Abweichungen). Für weitere Erläuterungen kannst du externe Quellen bemühen (Double-precision floating-point format). Sollte hier aber ebenfalls kein Problem sein. Irgendwann wird p so groß, dass
zufallszahl <= p
immer erfüllt ist und somit immer das jeweilige Objekt erzeugt wird.
helpmeplease helpmeplease

2023/7/1

#
dankeschön und wie mach ich das jetzt mit der fallgeschwindigkeit
You need to login to post a reply.