Dim Kollision [gelöst]

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

relentless92

Betreff: Dim Kollision [gelöst]

BeitragDo, Okt 22, 2009 19:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Huhu,
ich programmier mich grad so ein bisschen in Arrays ein.
Dazu hab ich vor einen Breakout Clon zu schreiben.
Hat soweit alles geklappt, komme ich nun zur Kollision:

Wie frage ich die ab?
So:
Code: [AUSKLAPPEN]
Function Colli_Pruefen()

For level1_y=0 To 12
For level1_x=0 To 15

If ImagesCollide(bred,level1_x,level1_y,0,balli,ballx,bally,0) Then
   Return 1
EndIf

...

Next
Next

End Function


Funktioniert es nicht; Die Funktion ist dauerhaft auf 0. Kollidieren soll der Ball:

Code: [AUSKLAPPEN]
ballx=ballx+Cos(wBall)*ballspeed
bally=bally-Sin(wBall)*ballspeed
DrawImage balli,ballx,bally


mit einem der Blöcke, dann dreht sich der ball (*-1) und das entsprechende Feld wird auf 0 gesetzt, so das kein Bild mehr gezeichnet wird.
Meine Ansätze bis jetzt aber schlugen fehl. Tipps?

MfG
~
Fussball spielen viele, Kart fahren nur die Besten.
~
  • Zuletzt bearbeitet von relentless92 am Fr, Okt 23, 2009 1:04, insgesamt 2-mal bearbeitet

Xeres

Moderator

BeitragDo, Okt 22, 2009 19:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, wo ist denn der Array den du benutzt Question
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)

relentless92

BeitragDo, Okt 22, 2009 19:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab ich rausgelassen. Hier isser:

Code: [AUSKLAPPEN]
Dim dimLevel1(16,13)

Restore level1
For level1_y=0 To 12
   For level1_x=0 To 15
      Read dimLevel1(level1_x,level1_y)
   Next
Next


Code: [AUSKLAPPEN]
Function Level1_Malen()

For level1_y=0 To 12
   For level1_x=0 To 15
   
      If dimLevel1(level1_x,level1_y)=1 Then
         DrawImage bred,level1_x*50,level1_y*20
      EndIf
      If dimLevel1(level1_x,level1_y)=2 Then
         DrawImage borange,level1_x*50,level1_y*20
      EndIf
      If dimLevel1(level1_x,level1_y)=3 Then
         DrawImage byellow,level1_x*50,level1_y*20
      EndIf
      If dimLevel1(level1_x,level1_y)=4 Then
         DrawImage bgreen,level1_x*50,level1_y*20
      EndIf
      If dimLevel1(level1_x,level1_y)=5 Then
         DrawImage bmagenta,level1_x*50,level1_y*20
      EndIf
      If dimLevel1(level1_x,level1_y)=6 Then
         DrawImage bblue,level1_x*50,level1_y*20
      EndIf
      If dimLevel1(level1_x,level1_y)=7 Then
         DrawImage bpink,level1_x*50,level1_y*20
      EndIf
      If dimLevel1(level1_x,level1_y)=8 Then
         DrawImage bgray,level1_x*50,level1_y*20
      EndIf
      If dimLevel1(level1_x,level1_y)=9 Then
         DrawImage b2hit,level1_x*50,level1_y*20
      EndIf
      If dimLevel1(level1_x,level1_y)=10 Then
         DrawImage FlashBrick$,level1_x*50,level1_y*20
      EndIf
      
   Next
Next

End Function


Level ist über Data aufgebaut.

/Edit: Das das auch per Select;Case funktioniert, ist mir bekannt Wink

MfG

Xeres

Moderator

BeitragDo, Okt 22, 2009 19:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Oben hast du bei ImagesCollide nur level1_x /y angegeben - zeichnen tust du sie bei level1_x*50 / y*20 Exclamation
Und wenn du alle Steine in ein Bild packst, kannst du den Parameter Frame benutzen und auf unzählige Abfragen verzichten...
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)

Nicdel

BeitragDo, Okt 22, 2009 19:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Bilder sind normalerweise keine Strings...
Code: [AUSKLAPPEN]
FlashBrick$

Kollision am besten mit ImageRectCollide überprüfen, besser noch mit der Ersatzfunktion (wegen MAV bei nVidia-Karten).
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

relentless92

BeitragDo, Okt 22, 2009 20:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Doch Nicdel, das stimmt schon.
Die Funktion liefert den Pfad zurück. Das ist ein String. ^^

Und danke Xeres, das mit den Frames erleichtert die Abfrage natürlich Wink

mpmxyz

BeitragDo, Okt 22, 2009 22:56
Antworten mit Zitat
Benutzer-Profile anzeigen
"LoadImage" liefert keinen String zurück.
"Handles" sind Integer.

Und falls du doch mal unterschiedliche Steinbilder hast, solltest du "Select" zum Unterscheiden benutzen; das ist dann übersichtlicher.
mfG
mpmxyz
Edit: @Nicdel Ah, daran lag es... Ich habe nur eine eckige Klammer darum gesetzt gehabt... Das hatte nicht funktioniert.
  • Zuletzt bearbeitet von mpmxyz am Fr, Okt 23, 2009 14:10, insgesamt einmal bearbeitet

relentless92

BeitragFr, Okt 23, 2009 0:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Achso, na gut.
Die Funktion funktioniert trotzdem, von daher. Aber danke für den Hinweis.
Zu dem Select hatte ich schon meinen Senf dazugegeben Wink

MfG

Nicdel

BeitragFr, Okt 23, 2009 12:50
Antworten mit Zitat
Benutzer-Profile anzeigen
@mpmxyz: Um die Befehle so aussehen zu lassen, einfach den Befehl in 2 eckigen Klammern schreiben,
also:

Code: [AUSKLAPPEN]
[[Befehl]]
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group