Problem mit ImagesCollide

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Surat

Betreff: Problem mit ImagesCollide

BeitragSa, Apr 02, 2005 11:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi@all,
ich habe da ein Problem mit dem ImagesCollide-Befehl.
Ich habe so aus Spaß ein kleines 2Spieler-Spiel erstellt.
Die eine Figur lässt sich mit Buchstaben steuern, die andere
mit Pfeiltasten. (Übringens sind Xenawas die Figuren)
Figur 1 (Xenawa1) soll einen Pfeil schießen und damit Figur 2(Xenawa2)
ausschalten. Irgendwie funzt das nicht. Muss ich die Figuren(obwohl man
sie steuert) in Dim-Felder speichern? (und wenn ja wie)

Ich bin für jede Hilfe dankbar Wink

BlitzBasic: [AUSKLAPPEN]


AppTitle \"Der Xenawa\"
Graphics 640,480
SetBuffer BackBuffer()

xenawa = LoadImage(\"c:\xen.bmp\")
xenawa2 = LoadImage(\"c:\32.bmp\")
hintergrund = LoadImage(\"c:\hinter.jpg\")
pfeil = LoadImage(\"c:\xpfeil.bmp\")
pfeil2 = LoadImage(\"c:\xpfeil2.bmp\")

font = LoadFont(\"Arial\",20,0,0,0)

Dim pf1(100,2)
Dim pf2(100,2)

X=500
Y=240

s=0
t=240


Repeat
SetFont font
Print \"Bitte nennen Sie ihre Namen!\"
name1$ = Input(\"Name1: \")
name2$ = Input(\"Name2: \")
Print \"Willkommen \" + name1$ + \" und \" + name2$
Print \"Nun bitte das Passwort, masters: \"
passwort$ = Input(\"Passwort \")
Select passwort$
Case \"Ramak\" Gosub hauptschleife
Default Print \"Falsch! Tschuess!\" And End
End Select
Forever

.hauptschleife
Repeat
DrawImage hintergrund, 0,0
DrawImage xenawa, s,t
DrawImage xenawa2,X,Y

MaskImage xenawa, 255,0,255
MaskImage xenawa2, 255,0,255

;erster Xenawa
If KeyDown(30) = 1 Then t=t-2
If KeyDown(31) = 1 Then t=t+2

If KeyDown(32) = 1 Then s=s-2
If KeyDown(33) = 1 Then s=s+2


; zweiter Xenawa
If KeyDown(205) = 1 Then X=X+2
If KeyDown(203) = 1 Then X=X-2

If KeyDown(200) = 1 Then Y=Y-2
If KeyDown(208) = 1 Then Y=Y+2


MaskImage pfeil, 255,0,255
MaskImage pfeil2, 255,0,255

; Rand einrichten
; Xen1
If X<0 Then X=0
If X>540 Then X=540

If Y<0 Then Y=0
If Y>400 Then Y=400


;Xen2

If s<0 Then s=0
If s>540 Then s=540

If t<0 Then t=0
If t>400 Then t=400


; Xenawa 1 Pfeil
If KeyHit(29) Then
schuss1 = schuss1 + 1
If schuss1 = 21 Then schuss1 = 0
pf1(schuss1,0) = 1
pf1(schuss1,1) = s+50
pf1(schuss1,2) = t+43
EndIf

For I=1 To 100
If pf1(I,0) = 1 Then
DrawImage pfeil, pf1(I,1),pf1(I,2)
pf1(I,1) = pf1(I,1) + 6
EndIf
Next

; Xenawa 2 Pfeil
If KeyHit(54) Then
schuss2 = schuss2 + 1
If schuss2 = 21 Then schuss2 = 0
pf2(schuss2,0) = 1
pf2(schuss2,1) = X-50
pf2(schuss2,2) = Y+43
EndIf

For I=1 To 100
If pf2(I,0) = 1 Then
DrawImage pfeil2, pf2(I,1),pf2(I,2)
pf2(I,1) = pf2(I,1) - 6
EndIf
Next

; Die Kollision, die nicht funktioniert
If ImagesCollide(pfeil,pf1(I,1),pf1(I,2),xenawa2,X,Y)
Then Print \"GETROFFEN\"
EndIf

Flip
Until KeyHit(1)
[/quote]
"DER GRÖßTE FEIND IST IN DEN EIGENEN REIHEN" (Trygonia-Xen's Quest)

AZUON-Beyond the dark life (2%)
SOULS OF DESTINY (23%)

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSa, Apr 02, 2005 12:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Schau dir die Hilfe mal genau an, da sind zu wenige Parameter angegeben!
hier ein Auszug:BlitzBasic: [AUSKLAPPEN]
ImagesCollide (image1,x1,y1,frame1,image2,x2,y2,frame2)  


wenn keine Frames da sind wie bei deinem Code dann einfach Frame durch 0 ersetzen!
[BB2D | BB3D | BB+]

Surat

BeitragSa, Apr 02, 2005 15:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die Hilfe,
leider läuft das auch nicht! Crying or Very sad

BlitzBasic: [AUSKLAPPEN]

; Die Kollision, die nicht funktioniert
If ImagesCollide(pfeil,pf1(I,1),pf1(I,2),0,xenawa2,X,Y,0)
Then Print \"Getroffen\"
EndIf

Es kommt immer die Fehlermeldung:
Expecting "EndIf"
dabei habe ich doch schon ein EndIf.
Danke im Vorraus für eure Hilfe Wink
"DER GRÖßTE FEIND IST IN DEN EIGENEN REIHEN" (Trygonia-Xen's Quest)

AZUON-Beyond the dark life (2%)
SOULS OF DESTINY (23%)

Tobchen

BeitragSa, Apr 02, 2005 16:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Weil das Then in die If-Zeile muss.
Tobchen - die Welt von Tobi!

Surat

BeitragSa, Apr 02, 2005 16:10
Antworten mit Zitat
Benutzer-Profile anzeigen
yo, danke aber :
Jetzt meckert Runtime Error ab der Hauptschleife rum:
"Array index out of bounds"
Rolling Eyes Was soll das bedeuten?
(Ich bin immer noch für jede Hilfe dankbar)
"DER GRÖßTE FEIND IST IN DEN EIGENEN REIHEN" (Trygonia-Xen's Quest)

AZUON-Beyond the dark life (2%)
SOULS OF DESTINY (23%)
 

Thoth

BeitragSa, Apr 02, 2005 16:23
Antworten mit Zitat
Benutzer-Profile anzeigen
vielleicht hier?:

dim pf1(100,2)

pf1(I,1) = pf1(I,1) + 6,

da darf doch höchstens ne zwei hin sonst wärs müsste es doch heißen:

dim pf1 (100,7),

oder nicht???

Surat

BeitragSa, Apr 02, 2005 16:30
Antworten mit Zitat
Benutzer-Profile anzeigen
äh, nein.

pf1(I,1) = pf1(I,1) + 6


; Das +6 ist die Höhe der Geschwindigkeit des Pfeils(der sich von links
nach rechts bewegt).
Das ist eigentlich genau das Gleiche wie bei Keydown.
X=X+1 gibt an wie schnell die Figur ist.
Weiß sonst wirklich keiner mehr bescheit? Crying or Very sad
"DER GRÖßTE FEIND IST IN DEN EIGENEN REIHEN" (Trygonia-Xen's Quest)

AZUON-Beyond the dark life (2%)
SOULS OF DESTINY (23%)
 

Gerhard

BeitragSa, Apr 02, 2005 19:29
Antworten mit Zitat
Benutzer-Profile anzeigen
If imagecollide.... THEN
...irgendwas
endif

Check mal die parameter von imagecollide!

Wenn du die Nullen drin hast und das then hinten statt vorne und die Dimensionierung auf 101 (danke simi), dann läuft es.
  • Zuletzt bearbeitet von Gerhard am Sa, Apr 02, 2005 19:55, insgesamt 2-mal bearbeitet

simi

BeitragSa, Apr 02, 2005 19:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich denke so sollte es gehen:
BlitzBasic: [AUSKLAPPEN]

For i = 1 To 100
If ImagesCollide(pfeil,pf1(I,1),pf1(I,2),xenawa2,X,Y) Then
Print \"GETROFFEN\"
EndIf
Next


Bei der vorhergehenden Schleife, ist beim Beenden i auf 101, das macht den Fehler.... (nicht gerade super deutsch Wink)

Surat

BeitragSo, Apr 03, 2005 9:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, jetzt funktioniert es! Very Happy
Vielen Dank!
"DER GRÖßTE FEIND IST IN DEN EIGENEN REIHEN" (Trygonia-Xen's Quest)

AZUON-Beyond the dark life (2%)
SOULS OF DESTINY (23%)

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group