Funktion mehrfach nutzen?
Übersicht

![]() |
FobsiBetreff: Funktion mehrfach nutzen? |
![]() Antworten mit Zitat ![]() |
---|---|---|
hi @ll
hab da mal bisschen gespielt mit nem rpg beispiel und dabei etwas entdeckt worüber ich forher noch nicht bescheid gewusst habe. Man kann eine Funktion nur 1mal in einer Schleife nutzen? z.b: die Folgende Funktion:(kolision) Code: [AUSKLAPPEN] Function koli(plxx,plyy,mapmm,linksa,rechtsa,hocha,runtera)
If playerx = plxx And playery = plyy And mapm = mapmm Then le = linksa ue = hocha re = rechtsa de = runtera Else ue = 1 le = 1 de = 1 re = 1 EndIf End Function mapm = map ID hoffe der Code erklärt sich vonselbst. naja wenn ich nun z.b: Code: [AUSKLAPPEN] koli(1,1,1,0,1,0,1)
koli(2,1,1,1,1,0,1) code wird nur koli(2,1,1,1,1,0,1) ausgeführt und koli(1,1,1,0,1,0,1) wird überschrieben. wie löse ich das problem das jede Funktion einzeln ausgeführt wird? lg Fobsi |
||
![]() |
NightPhoenix |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also bist du dir sicher, dass du nicht irgendwo im Code oder beim Aufrufen der Function einen Fehler hast?
Functions kann man nämlich beliebig oft aufrufen! Ich empfehle dir da nochmal drüber zu schaun. |
||
![]() |
Fobsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
100% ich habe es getestet und leider wird immernur die funktion die ich als letztes schreibe auch wirklich ausgeführt ![]() im Beispiel: Code: [AUSKLAPPEN] koli(1,1,1,0,1,0,1)
koli(2,1,1,1,1,0,1) wird ausgeführt und koli(2,1,1,1,1,0,1) bezweckt einen effekt. nähmlich das der spieler nicht nach oben gehen kann auf dem xfeld 2 und yfeld 1. habe wohl iw n fehler ![]() lg Fobsi |
||
![]() |
NightPhoenix |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ach was, wenn wir dir helfen sollen kannst du uns den Code ruhig zeigen.
Muss ja nicht alles sein, die entsprechende Passage würde reichen. |
||
![]() |
Fobsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
nagut das hier ist der code:
Code: [AUSKLAPPEN] Repeat
WaitTimer(Timer) Cls Select menustate Case 1 PB_DisableAll() If le = 1 Then PB_EnableButton(Btn_left) EndIf If ue = 1 Then PB_EnableButton(Btn_up) EndIf If re = 1 Then PB_EnableButton(Btn_right) EndIf If de = 1 Then PB_EnableButton(Btn_down) EndIf DrawImage map1_1, rpx,rpy DrawImage MainImage, 0, 0 DrawImage att,272,513,wid DrawImage player,275,245,playerid If dbm = 1 Then Text 20,20,"X"+MouseX() Text 20,35,"Y"+MouseY() Text 20,45,"XP:"+playerx Text 20,55,"YP:"+playery Text 20,65,"rpx:"+rpx Text 20,75,"rpy:"+rpy Text 20,85,"mapm:"+mapm EndIf ;---- ;rechts = rpx + 32 ;links = rpx - 32 ;hoch = rpy - 32 ;runter = rpy + 32 ;--- ;Function ein(mapid,mx,my,zmapid,zmapname$,mrpx,mrpy,plx,ply) ein(1,4,4,2,maphaus,84,83,6,5) aus(2,6,6,1,map1_2,148,83,4,5) ein(1,8,4,3,maphaus,84,83,6,5) aus(3,6,6,1,map1_2,20,83,8,5) koli(1,1,1,0,1,0,1) koli(2,1,1,1,1,0,1) sprechen(1,12,6,"Herzlich Willkommen!","Ich bin Mr. Grintor","beim mir kannst du","Quests anehmen/beenden") If PB_ButtonHit(Btn_up) Then playery = playery - 1 rpy = rpy + 32 If PB_ButtonHit(Btn_left) Then playerx = playerx - 1 rpx = rpx +32 If PB_ButtonHit(Btn_right) Then playerx = playerx + 1 rpx = rpx -32 If PB_ButtonHit(Btn_down) Then playery = playery + 1 rpy = rpy -32 Funktionen Include: Alles geht zu 100% Code: [AUSKLAPPEN] Function ein(mapid,mx,my,zmapid,zmapname$,mrpx,mrpy,plx,ply)
If mapm = mapid And playerx = mx And playery = my Then mapm = zmapid map1_1 = zmapname$ rpx = mrpx rpy = mrpy playerx = plx playery = ply EndIf End Function ;mapid = zmapid von ein() Function aus(mapid2,mx2,my2,zmapid2,zmapname2$,mrpx2,mrpy2,plx2,ply2) If mapm = mapid2 And playerx = 6 And playery= 6 Then mapm = zmapid2 map1_1 = zmapname2$ rpx = mrpx2 rpy = mrpy2 playerx = plx2 playery = ply2 EndIf End Function Function koli(plx8,ply8) plx7 = plx8 ply7 = ply8 plx5 = plx8 +1 ply5 = ply8 +1 plx6 = plx8 -1 ply6 = ply8 -1 If playerx = plx5 And playery = ply7 Then le = 0 Else le = 1 EndIf If playerx = plx6 And playery = ply7 Then re = 0 Else re = 1 EndIf If playerx = plx7 And playery = ply6 Then de = 0 Else de = 1 EndIf If playerx = plx7 And playery = ply5 Then ue = 0 Else ue = 1 EndIf End Function Erklärung: Funktion ein() = Eingang auf der Hauptmap. Funktion aus() = Ausgang Aus der Instanz (z.b aus einem Haus.) Funktion koli() = damit man da nicht durchkommt ![]() naja mein erstes richtiges spiel indem man auch herumlaufen kann(unendliche map möglich 99999999x123123123 z.b) Edit: hab das spiel mal compiliert: Man kann durch die türen des linken oberen hauses gehen und mit dem roten magier am See reden. https://www.blitzforum.de/upload/file.php?id=5123 lg Fobsi |
||
![]() |
PSYBetreff: Re: Funktion mehrfach nutzen? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Function koli(plxx,plyy,mapmm,linksa,rechtsa,hocha,runtera)
If playerx = plxx And playery = plyy And mapm = mapmm Then le = linksa ue = hocha re = rechtsa de = runtera Else ue = 1 le = 1 de = 1 re = 1 EndIf End Function Hm. Du fragst in der Funktion ab If playerx = plxx And playery = plyy ... Wenn Du jetzt die Funktion aufrufst mit 1,1,1,0,1,0,1 wird überprüft, ob playerx = 1 ist und playery = 1 Danach rufst Du sofort erneut die Funktion mit 2,1,1,1,1,0,1 auf. Es wird überprüft, ob playerx=2 und playery=1 ist. Wenn also bei einem Aufruf was passiert, ist folglich bei einer Parameterübergabe die IF-Abfrage WAHR und bei der zweiten FALSCH....es können ja nicht beide korrekt sein. Bei einem Aufruf wird also der IF-Teil ausgeführt und bei dem andern der ELSE-Teil. Ich glaub, Du hast da nen Denkfehler drin ![]() L8er, PSY |
||
PSY LABS Games
Coders don't die, they just gosub without return |
![]() |
Fobsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
also muss ich die else abfrage irgendwie umgehen... mhh wenn ich es ohne else mache wird wie in dem Folgenden Beispiel:
![]() also muss ich den Effekt eingrzenzen... mhh gut werde mal überlegen lg Fobsi Edit: Problem gelöst: Code: [AUSKLAPPEN] koli(1,1,1,0,1,0,1)
koli(1,2,1,1,1,0,1) Function: Code: [AUSKLAPPEN] Function koli(mapmode,playeryy,playerxx,hochss,runterss,linkss,rechtss)
If mapm = mapmode And playery = playeryy And playerx = playerxx Then le = linkss ue = hochss re = rechtss de = runterss EndIf End Function Natürlich müssen bevor die Funktion in der Hauptschleife kommt wieder alle bottons aktiviert werden. Beispiel: Code: [AUSKLAPPEN] le = 1 de = 1 re = 1 ue = 1 koli(1,1 ,1 ,0,1,0,1) koli(1,2 ,1 ,1,1,0,1) koli(1,3 ,1 ,1,1,0,1) koli(1,4 ,1 ,1,1,0,1) koli(1,5 ,1 ,1,1,0,1) koli(1,6 ,1 ,1,1,0,1) koli(1,7 ,1 ,1,1,0,1) koli(1,8 ,1 ,1,1,0,1) koli(1,9 ,1 ,1,1,0,1) koli(1,10,1 ,1,0,0,1) Effekt: __ {P {P {P {P {P {P |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group