Bleibende Folge nach Kollision?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

NoName23

Betreff: Bleibende Folge nach Kollision?

BeitragSo, Aug 26, 2007 23:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Gibt es eine Möglichkeit das eine Folge auf eine Kollision dauerhaft bestehen bleibt obwohl die Kollision schon fertig ist?
Ein Beispiel:
Code: [AUSKLAPPEN]

If ImagesCollide (kugel1 ,x,y,0,kugel2 ,c,d,0) Then DrawImage Beispielbild ,a,b


Ich will das das Beispielbild bestehen bleibt,also noch angezeigt wird obwohl die Kollision der Kugeln schon vorbei ist. Was könnte ich denn in dem Fall machen?

Eingeproggt

BeitragSo, Aug 26, 2007 23:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

If ImagesCollide (kugel1 ,x,y,0,kugel2 ,c,d,0) Then coll=True
If coll Then DrawImage Beispielbild ,a,b


Einfach eine Zwischenvariable einführen.
Willst du das Bild dann wiedermal weg haben, kannst du zB über die Zeit arbeiten oder über sonstige Ereignisse (Wenn die Kugel woanders anstößt,...)
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
 

gigi

BeitragMo, Aug 27, 2007 10:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Mach das doch einfach mit einer Variable:
Code: [AUSKLAPPEN]

If ImagesCollide (kugel1 ,x,y,0,kugel2 ,c,d,0) Then
a=1
Endif
If a=1 Then
Drawimage Beispielbild,a,b
Endif

Zum entfernen des Bildes ändert man einfach bei irgendeinem Ereignis die Variable auf null.

MFG gigi
 

NoName23

BeitragMo, Aug 27, 2007 10:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke, bin noch nicht lange dabei Rolling Eyes Sehe bis jetzt halt nur die einzelnen Befehle und komme nicht drauf Variablen oder Schleifen einzubinden....Da muss ich dran arbeiten.
 

NoName23

BeitragMo, Aug 27, 2007 11:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Ach ja, gleich noch eine Frage. Wie kann ich eigentlich Bilder löschen? Cls geht nicht und Delete kann nur für Objekte verwendet werden oder?

BladeRunner

Moderator

BeitragMo, Aug 27, 2007 11:13
Antworten mit Zitat
Benutzer-Profile anzeigen
-nicht mehr anzeigen: Einfach nicht mehr zeichnen in deinem nächsten Schleifendurchlauf. Das Prinzip ist das gleiche wie bei dieser Frage, Du setzt die Variable wieder auf null und das bild verschwindet...

-aus dem Speicher entfernen: ql:freeimage. Danach darf das Bild nicht wieder benutzt werden, da es komplett entfernt wurde. Das Programm stürzt ansonsten ab.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

NoName23

BeitragMo, Aug 27, 2007 15:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Noch eine kleine Frage.
Code: [AUSKLAPPEN]

If ImagesCollide (spieler ,x,y,0,kugel,g,h,0) And KeyDown (57) Then Variable = 1


Das die Variable 1 wird, lässt ein Ereigniss eintreten. Jetzt tritt dieses Ereigniss nur auf wenn der Spieler mit der Kugel kollidiert und man die Leertaste (57) gedrückt hält. Ich möchte aber das die Kollision und nur ein Tastendruck die Variable dauerhaft ändert und man mit einem weiteren Tastendruck die Variable wieder auf Null setzt. Wie stelle ich das am besten an?

Xeres

Moderator

BeitragMo, Aug 27, 2007 15:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
If Keyhit(15) Then Variable = Variable XOR 1 ;TAB schaltet um
Solange es sich um eine Schaltervariable mit den Zuständen 1 oder 0 handelt, bietet sich ein XOR 1 an, da dies die Variable immer in den anderen Zustand versetzt.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Eingeproggt

BeitragMo, Aug 27, 2007 16:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
If Keyhit(15) Then Variable = Variable XOR 1 ;TAB schaltet um

Ich benutze in diesem Fall immer
Code: [AUSKLAPPEN]
If Keyhit(15) Then Variable = Not Variable ;TAB schaltet um


ist aber geschmackssache und irrelevant.

@gigi: Was hast du geschrieben, was ich nicht geschrieben hab? Wink
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
 

gigi

BeitragMo, Aug 27, 2007 23:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Dein false und true ist ein bisschen umständlich, finde ich. Very Happy

P.S.: Jetzt hab ich deins auch kapiert!!! Wink

FireballFlame

BeitragDi, Aug 28, 2007 18:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Und ich benutze immer eine dritte Variante:
Code: [AUSKLAPPEN]
If Keyhit(15) Then Variable = 1-Variable ;TAB schaltet um

Laughing
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group