Probleme beim berechnen der Spiefigur?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

bruce85

Betreff: Probleme beim berechnen der Spiefigur?

BeitragDo, Nov 23, 2006 0:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
Ich hab da ein kleines problem, ich habe folgender Code geschrieben wenn z.B. Spieler1 auf den Spieler2 spring, dann soll das hier ausgeführt werden:

Code: [AUSKLAPPEN]
If Spielfeld((spieler_x+16)/32,(spieler_y+32)/32) = Spielfeld((spieler2_x+16)/32,(spieler2_y)/32) Then
    Spiel = 0
EndIf


das funktioniert aber nicht, der Code wird sofort bei Spielstart ausgeführt und ich erhalte auch gleich die Meldung "Array index out of bounds"

Edit: Also das soll nur ausgeführt werden wenn der spieler auf den spieler2 sein Kopf springt, also von oben nach unten.

Wisst ihr vieleicht was ich da falsch gemacht habe?
Vielen Dank schonmal.

MFG Andreas
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250
 

coldie

BeitragDo, Nov 23, 2006 0:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Hast du das Array "Spielfeld" auch mit mindestens

Code: [AUSKLAPPEN]
Dim Spielfeld(32,32)


dimensioniert?

bzw. spieler_x+32 muss halt kleiner sein als die Dimensionierung des Arrays.
 

bruce85

BeitragDo, Nov 23, 2006 0:47
Antworten mit Zitat
Benutzer-Profile anzeigen
ne das ist richtig so, spieler_x+32 ist also 32 pixel von links nach rechts vom spieler, also die berechnung.
ich muss nurnoch überprüfen wann der spieler auf den anderen drauf springt Rolling Eyes

Edit: ich habe solche grosse map erstellt:
Dim Spielfeld(199,29)
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250
 

coldie

BeitragDo, Nov 23, 2006 0:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Und wenn du den code den du oben gepostet hast entfernt funktioniert es?
 

bruce85

BeitragDo, Nov 23, 2006 1:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, es funktioniert sehr gut wenn das entfernt ist.
Ich möchte einfach nur die berechnung machen wenn man beim anderen player drauf springt Wink
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250
 

coldie

BeitragDo, Nov 23, 2006 1:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Manchmal gibt es auch probleme mit dem teilen bei Integervariablen.

Hast du eigentlich nicht die Möglichkeit das mit Code: [AUSKLAPPEN]
 If spieler_x=spieler2_x And spieler_y=spieler2_y...


abzufragen? Oder muss die If Abfrage unbedingt mit dem Array sein?

Ansonsten kann es eigentlich fast nur sein (wie die Fehlermeldung auch sagt), dass die Arraygröße bei der Abfrage überschritten wird. Ich würde das mal so überprüfen:

Code: [AUSKLAPPEN]

Text 0,0,"Wert Spieler X: "+(spieler_x+16)/32+" Wert Spieler Y: "+(spieler_y+32)/32
Text 0,10,"Wert Spieler2 X: "+(spieler2_x+16)/32+" Wert Spieler2 Y: "+(spieler2_y+32)/32
 

bruce85

BeitragDo, Nov 23, 2006 2:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, des muss berechnet werden.
So geht das ja nicht, wenn ich z.B. dann neben den spieler2 dran stoße, dann soll das ja nich ausgefhührt werden, sondern nur wenn ich auf dem kopf drauf springe.

sonst wird es ja immer ausgeführt sobald die sich berühren.

MFG Andreas
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250
 

bruce85

BeitragDo, Nov 23, 2006 2:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab es so gelöst:

Code: [AUSKLAPPEN]
If ImagesCollide(spieler,spieler_x,spieler_y+32,spieler_frames,spieler2,spieler2_x,spieler2_y,spieler2_frames) Then
  Spiel=0
EndIf


Danke trotzdem für die Antwort.

Gruss Andreas
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group