Wir sammeln alle Infos der Bonusepisode von Pokémon Karmesin und Purpur für euch!

Zu der Infoseite von „Die Mo-Mo-Manie“
  • Hallo,


    Ich habe mir ein kleines "Programm" geschrieben in Minecraft.(mit hilfe von ComputerCraft) Dieses Programm steuert einen Öl zu Benzin Generator und zeigt mir eben an, ob noch Öl da ist, oder ob den Benzin Tank eben voll ist. Und wenn das so ist, wird der Generator abgeschaltet. Das Problem liegt bei den If-Befehlen. Wenn der If Befehl nicht wahr ist, funzt ja noch alles, aber sobald ein If Befehl wahr ist, hat er kein Bock mehr und spuckt mir die Nachricht 1000 mal aus, die kommen soll, wenn der If Befehl wahr ist. Aber weiter läuft das Programm dann net. Kann mir jmd. helfen? Hier nochmal der komplette Code:


    Ich hoffe das mir jmd. helfen kann. Ach Ja, ich bin Anfänger, also bitte Einfach erklären...

  • Um Übersichtlichkeit und Verständlichkeit des Codes zu verbessern, rückt man grundsätzlich Dinge wie den Inhalt der If-Anweisung (stell dir eine Klammer darum vor, wie es bei manchen anderen Sprachen der Fall ist).
    Weshalb der das Skript in einer Endlosschleife ausführt ist doch offensichtlich, du setzt die Variable Generator ja nie auf einen anderen Wert, genau so gut hättest du als Bedingung "true" nehmen können, da bringen dir auch deine drei (unnötigen) "end"s nichts. Du musst zur passenden if-Anweisung noch das Setzen von "Generator" auf einen anderen Wert hinzufügen, dann sollte er die Schleife auch verlassen.

  • Ja, klar, aber ich will ja, dass er regelmäßig die Werte aktualisiert. Wenn er die Schleife ja verlassen würde, würden ja Änderungen an den Redstobesignalen Rechts oder links igoniert.
    /Edit: Habe nun das Problem selber durch probieren gelöst:
    Hier der Korrekte Code, damit ich besser erklären kann was anders ist:


    Zuerst habe ich die Variable weggelassen, da sie unnötig ist, wenn der Wert sich eh net ändert.
    Die Ends wurden nach den If-Befehlen gesetzt. Ich dachte immer das sie am Ende aller If-Befehlen sein müssen, bzw. mehere If-Befehle in einer Schleife sein dürfen.
    Die sleep Zeit wurde verkürzt, damit das Programm schneller aktualsiert. Und nach dem mit hilfe von shell.run("generator") startet das Programm neu ohne Probleme....
    Danke dennoch für die tipps.

  • Auch wenn es funktioniert, schönes Programmieren ist das nicht. Manch einer würde dir dafür den Kopf abreißen...
    Da du es quasi als Endlosschleife haben willst ist eine while true-Schleife gar nicht so schlecht, nur musst du halt den Fehler mit den If-Bedingungen ausbügeln (das end muss denke ich direkt hinter die Anweisung, die es ausführen soll) und du musst das clear mit in die Schleife packen. Dann funktioniert das ganze auch.



  • Hm... mit Lua kenne ich mich eigentlich nicht aus, kann schon sein, dass es dafür benötigt wird, aber mit den Sprachen die ich kenne, könnte man auch darauf verzichten, aber okay, du hast es ausprobiert, du weißt es besser als ich.