Kennt sich jemand mit Greenfoot bzw. programmieren aus?
In der Aufgabe muss ein Roboter eine Reihe von Aufgaben erfüllen, jedoch reicht sein Akku nicht aus um das alles zu machen also muss er immer wieder einen Akku benutzen. Ich will jetzt also wissen ob es eine Möglichkeit gibt das der Roboter immer einen Akku benutzt wenn sein Energiestand unter einem bestimmten Level ist (also das nach Jeder Aktion sozusagen der Akkustand abgefragt wird und bei Bedarf ein Akku benutzt wird), weil ich nicht von Hand immer wieder in den Code benutze("Akku"); eingeben möchte. So wie ich es gerade habe mit der if-Klammer habe geht es nicht weil er ja das was unter else{ } steht alles am Stück macht und nicht immerwieder den Stand prüft. Sollte die Antwort darauf total banal und selbstverständlich sein Tut es mir leid, ich befasse mich erst seit wenigen Tagen mit Programmieren und co.
Danke für jede Hilfe

1 Antwort
Hast du dich denn bereits mit Themen wie switch-case und Schleifen befasst? Ich würde die Aktionen nämlich durch eine Kontrollstruktur in einen Prozess eingliedern. In Pseudo-Code:
for (i = 0; i < 4; ++i) switch (i) case 0: tuDies(); break; case 1: tuDas(); break; case 2: tuJenes(); break; case 3: tuSolches(); break; if (energie < 40) ladeAuf();
Deine Methodenaufrufe ordnest du in einem switch-case an. Die Schleife iteriert so lange, bis jede Methode einmal ausgeführt wurde. Am Ende einer jeden Iteration wird der Energiestand abgefragt und je nachdem wieder aufgefüllt.
Dein Code wird definitiv länger, nur nicht so lang wie mit einer stur imperativen Lösung.
Okay :D, danke nochmal für die Hilfe, mein Code ist jetzt zwar doppelt so lang wie davor, obwohl er nur um 5 Zeilen hätte länger sein müssen wenn ich einfach manuell 5x, gleichmäßig verteilt in den Code benutze("Akku"); geschrieben hätte ohne das er die Energie abfrägt sondern einfach einen Akku benutzt, aber so ist es um einiges professioneller. Danke
(...) jedoch reicht sein Akku nicht aus um das alles zu machen also muss er immer wieder einen Akku benutzen.
Also hat der Ersatzakku unendlich viel Energie? Die Aufgabenstellung scheint dann nicht so recht klar, wenn die Energieabfrage doch nicht notwendig ist.
Also er hat sozusagen 100 Akku Punkte und wenn er etwas macht verbraucht er die, und wenn er dann einen Akku benutzt füllen sich 40 dieser Akku Punkte wieder auf, und es kann halt nicht über 100 gehen. Also muss der Roboter immer wieder einen Akku benutzen weil wenn er 0 Akku Punkte hat kann er sich nicht mehr bewegen, und in dem Szenario habe ich 5 Akkus zur Verfügung und um alle Aufgaben zu erfüllen brauche ich, glaube ich so um die 240 Akku Punkte also muss er halt immer wieder einen Akku benutzen. Ich hab es aber nicht gemocht das in meinem Code quer verteilt ohne wirkliches Nachdenken immer wieder ein benutze("Akku"); stand also hab ich gefragt wie ich es professioneller machen kann, also halt so wie es jetzt ist dass er sobald seine Energie auf 60 Punkten ist er einen Akku benutzt. Ich weiß nicht ob das verständlich ist aber ja :D
Ja, es funktioniert so :DDDD aber versteh ich das richtig? Am ende wird der Code jetzt doppelt so lang sein wie davor, weil ja für jeden Methodenaufruf noch eine Zeile für die "case" dazu kommt oder?