Deutsch
Forum & Hilfe

Proc - Aufruf / irgendwas fehlt

 
- 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
 
03.04.2016  
 



 
- 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)!!! 
 
06.04.2016  
 




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
 
07.04.2016  
 




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 X3
System: 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
 
07.04.2016  
 




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 X3
System: 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
 
07.04.2016  
 




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.
 
07.04.2016  
 




Erasmus.Herold
Habe das dann mal so umgesetzt und nachgebildet.
Prima!!!
// globale Variablen
glob = 50
print "1: (50): " + glob
meineProc
print "2: (100): " + glob

proc meineProc

    global glob
    print "3: (50): " + glob
    glob = 2 * glob
    print "4: (100): " + glob

endproc


Thx - Erasmus
 
07.04.2016  
 




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
 
08.04.2016  
 



@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.
 
08.04.2016  
 



 
- 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
 
08.04.2016  
 



Deshalb hatte ich das Beispiel bei Global auch schon so gewählt:  [...] 
 
08.04.2016  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

13.430 Betrachtungen

Unbenanntvor 0 min.
Torsten Rümker10.05.2016
Uwe Lang17.04.2016
Julian Schmidt13.04.2016
GDL12.04.2016
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie