1. wenn du die variablen als shared benutzen willst,
musst du sie auch im hauptprogramm ganz am anfang deklarieren.
eine andere möglichkeit wäre, sie als global zu definieren, das käme aufs selbe raus.
2. speed_x muss auch einen wert haben.
innerhalb deiner proc ist es immer =0, weil es nirgendwo definiert wird.
also auch shared oder global.
3. schau noch mal in bizzls erstes post.
ein problem hast du immernoch:
angenommen, speed_x hat den wert 3 wenn die kollision passiert, dann wird es auf -3 gesetzt.
aber gleich danach kommt eine abfrage, ob es -3 ist, und dann wird es auf +3 gesetzt.
am einfachsten ist ganz simpel nur den wert negieren:
Code: Alles auswählen
If SpriteCollision(2,ball_x,ball_y,sprite,x,y) = 1
speed_x = -speed_x
EndIf
für solche "kleinigkeiten" lohnt eigentlich keine procedure,
so ein vergleichsweise winziges If packt man direkt in die hauptschleife.
du siehst, du müßtest 3 werte shared oder global machen,
drei andere übergibst du als argumente.
es gibt keinen grund, warum so herum und nicht grad anders,
irgendwann wirst du also durcheinanderkommen,
warum ausgerechnet diese variablen global sind und jene nicht.
außerdem raten viele von globalen variablen ab.
wichtig ist vor allem, dass man es nicht übertreiben sollte.
global sollten immer nur ganz wenige ganz besondere variablen sein,
und die sollten auch ganz markante namen tragen,
damit man die namen keinesfalls unbeabsichtigt in irgendeiner
procedure für irgendwelche lokal geplanten variablen verwendet.
auch deine argumente sind neue variablen!
die x und y in deiner proc sind andere als außerhalb.
wenn du in der proc x und y veränderst,
passiert mit den x und y im hauptprogramm garnichts!
lange rede, kurzer sinn:
Variablen, die du innerhalb einer proc benutzt sind immer local,
d.h. es sind physikalisch andere speicheorte als variablen
gleichen namens außerhalb der proc.
ausnahmen bilden nur globale variablen oder per shared deklarierte.
sowas kleines mach besser einfach so in der hauptschleife.
ist auch kurz genug, um die übersichtlichkeit nicht zu gefährden.
(einrücken hilft

)