| |
|
|
- Seite 1 - |
|
Erasmus.Herold | Hallöchen ...
Ich rufe oben im Programm meine Prozedur "Spielfigur" einfach mit ihrem Namen auf. Unten steht folgender Code.
proc Spielfigur (grid_mitte, position) gui.background [grid_mitte 3, position] rgb 255 255 0 endproc
In diesem Grid erfolgt keine Einfärbung. Setze ich die gui.background... nach oben (ohne Prozedur) funktioniert es. Wahrscheinlich mache ich einen Fehler im Aufruf der Variablen beim PROC?
Gruß - Erasmus |
|
|
| |
|
|
|
| |
|
- Seite 1 - |
|
HofK | So funktioniert es:
Seit vorhin habe ich wieder DSL - völlig ungewohnt nach fast drei Wochen. Da konnte ich mal wieder die IDE aufrufen! (vgl. hofk.de)!!! |
|
|
| |
|
|
|
Erasmus.Herold | Funktioniert großartig. Danke. Also benötige ich bei Infinity-Profan einen Variablennamen, um in die Prozedur zu gehen und die Daten zu übergeben, aber einen anderen innerhalb dieser Routine?
Folgefrage: Wenn ich aber nun ein Event in einer Procedur abfrage (proc event id data), z.B. es hat jemand auf den Bildschirm geklickt, so ist es leicht mit Print ein "Hallo" oder "runter" zu schreiben. Was aber, wenn ich in diesem Zuge auch noch eine Variable erhöhen will?
ausführlicher Code-Auszug:
if (id >= 200) AND (id <= 201) AND (data.y > (gui.height() - gui.height() / 10)) print "runter" position_gelenkt = position_gelenkt + 1 if (position_gelenkt > 24) position_gelenkt = 24 endif print "Pos: " + position_gelenkt endif
Erklärung:
Klickt man unten auf den Bildschirm (die letzten 10%) erscheint "runter". Kein Problem. Aber "position_gelenkt" wird nicht mitgenommen, bleibt immer leer.
Gruß Erasmus |
|
|
| |
|
|
|
Michael W. | Die Variable sollte dann außerhalb der Proc angelegt und natürlich auch mit einem Startwert vorbelegt werden.
Dadurch ist die Variable dann numerisch und wird auch verändert. |
|
|
| XProfan X3System: Windows 8/10, XProfan X4 Programmieren, das spannendste Detektivspiel der Welt. | 07.04.2016 ▲ |
|
|
|
|
Erasmus.Herold | So hatte ich das außen definiert: position_gelenkt = 13
... aber die 13 kommen entsprechend in der EVENT PROC nicht an.
Meine PROC sieht so aus
proc event id data .... (siehe oben) endproc
Dank und Gruß Erasmus |
|
|
| |
|
|
|
Michael W. | Ok, wenn die Event-Prozedur bockig ist und keine globalen Variablen erkennt, dann würde ich einfach ausweichen. Setze das Erhöhen in eine eigene Proc und rufe diese innerhalb von IF auf.
'in der Event-Proc if ... runter_proc() endif
Wenn das dann auch nicht funktioniert, dann ist da ein Käferchen gefunden. Weckglas drauf und auf David warten... |
|
|
| XProfan X3System: Windows 8/10, XProfan X4 Programmieren, das spannendste Detektivspiel der Welt. | 07.04.2016 ▲ |
|
|
|
|
Erasmus.Herold | Sehr coole Idee, werde ich testen und melde mich wieder.
Danke - Erasmus |
|
|
| |
|
|
|
HofK | Mal immer den Quelltext als solchen mit dem Dreieck nach unten neben Beitrag Schrift Smillies formatieren. Dann sind auch größere Quelltexte kein Problem und es wird deutlicher wo das Problem liegt.
Hab' das mal oben nachträglich so dargestellt!
Variablen aus dem Hauptprogramm kann man direkt in der Prozedur nutzen, wenn man sie mit dem Befehl global in der Prozedur als globale Variablen ausweist. Ansonsten übergibt man sie beim Aufruf der Prozedur mit ihrem globalen Namen. Bei der Prozedurdefinition sollte man dann einen leicht abweichenden Namen verwenden. Das erhöht die Übersichtlichkeit im Programm.
Das Kapitel 3 Prozeduren & Include 3.1 Prozeduren definieren und aufrufen im InfinityProfanBuchBeta ist generell noch gültig, mal reinschauen und dabei aber beachten, dass durch die neue Syntax das var wegfällt, dafür aber bei Nutzung globaler Variablen in der Prozedur nun diese in der Prozedurdefinition hinter global aufgeführt werden müssen. |
|
|
| |
|
|
|
Erasmus.Herold | Habe das dann mal so umgesetzt und nachgebildet. Prima!!!
Thx - Erasmus |
|
|
| |
|
|
|
Erasmus.Herold | Nachtrag: Das mit dem GLOBAL hat mir sehr weitergeholfen, um nun alle Variablen-Werte in eine Prozedur zu übernehmen.
Danke und closed.
Erasmus |
|
|
| |
|
|
|
| @Erasmus:
Vielleicht noch der Tip um Umgang mit Variablen in Infinity anhand einem Beispiel:
Es lohnt sich also Globale bzw. "Programmvariablen" in Arrays mit OOP-Klassenschreibweise zu verpacken, um in Prozeduren nur die "Klasse" per Global importieren zu müssen etwa statt "20" globale Variablen.
Es ist aber auch aus Sicht arr.serialize interessant die eigenen Variablen ordentlich in "Klassen" zu verpacken, da man so in einem Rutsch eine Vielzahl von Informationen serialisieren kann etwa zum Speichern bzw. zum Übermitteln.
Michael W. (07.04.2016)
Ok, wenn die Event-Prozedur bockig ist und keine globalen Variablen erkennt, dann würde ich einfach ausweichen.
Das sollte nicht der Fall sein, Proc Event "kann" "global" wie alle anderen Procs auch. |
|
|
| |
|
|
| |
|
- Seite 2 - |
|
|
Erasmus.Herold | => ... nur die "Klasse" per Global importieren zu müssen etwa statt "20" globale Variablen.
Das ist der Tipp des Tages. Danke, das macht es leicht.
Gruß Erasmus |
|
|
| |
|
|
|
| Deshalb hatte ich das Beispiel bei Global auch schon so gewählt: [...] |
|
|
| |
|
|