Kollisions abfrage Fehler
Übersicht

![]() |
YankeeBetreff: Kollisions abfrage Fehler |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
Ich habe da ein problem mit meiner kollisionsabfrage. Ich abeite gerade an einen Asteroiden Spiel und wollte mal schauen, wie es schon ausschaut....Aber wie immer klappt es beim ersten mal net^^ ![]() Die schüsse und die Asteroiden werden mit Types geladen/gesetzt und dann wollte ich abfragen, ob die raketen mit den Asteroiden kolidieren... Hier der Code: erst alles setzten und laden: Code: [AUSKLAPPEN] Type asteroid Field x Field y Field speed Field nr End Type Type schuss Field x Field y End Type Und dann in einer Funktion abfragen: Code: [AUSKLAPPEN] Function schuesse() ;die meinen schüsse For neu.schuss = Each schuss neu\y = neu\y - 4 DrawImage bullet, neu\x, neu\y For ast.asteroid = Each asteroid For i = 0 To 9 If ImagesCollide(schuss,neu\x,neu\y,0,asteroid(ast\nr),ast\x,ast\y,0) Then PlaySound treffer Delete neu.schuss Delete ast.asteroid EndIf Next Next Next ;damit unsere schüsse nicht zu weit fliegen(aus dem bildschirm) For neu.schuss = Each schuss If neu\y < 0 Then Delete neu.schuss Next End Function Function asteroids() ;eine zufälligen wert ihrgendwo... neuer = Rnd(0,10) ;wenn neuer die zahl ist, dann ein neuer zufälliger asteroid If neuer = 10 Then zfg = Rnd(0,9) ast.asteroid = New asteroid ast\x = Rnd(0,610) ast\y = 0 ast\speed = Rnd(2,10) ast\nr = Rnd(0,9) EndIf For ast.asteroid = Each asteroid ast\y = ast\y + ast\speed If ast\y > 480 Then Delete ast.asteroid DrawImage asteroid(ast\nr) Next End Function Wisst ihr wo ad der Fehler ist? Währe sehr dankebar, wenn mir da jmd helfen würde. Danke im vorraus, Yankee |
||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Eine genaue Fehlerbeschreibung wäre einfacher!
Was sagt dir denn der Debugger....."Objekt does not exist" wahrscheinlich oder? BlitzBasic: [AUSKLAPPEN]
Hier dann nochmal ein ähnliches Problem BlitzBasic: [AUSKLAPPEN]
|
||
[BB2D | BB3D | BB+]
|
![]() |
Yankee |
![]() Antworten mit Zitat ![]() |
---|---|---|
![]() ![]() Jetzt bin ich schon viel weiter, aber jetzt kommt immer bei dem Schuss der Fehler, also da: Code: [AUSKLAPPEN] For ast.asteroid = Each asteroid ast\y = ast\y + ast\speed If ast\y > 480 Then Delete ast.asteroid If ast.asteroid <> Null Then DrawImage asteroid(ast\nr), ast\x, ast\y;Hier EndIf Next der Fehler"Function not found"...... Weis wer warum? Danke im Vorraus, Yankee |
||
Um so kleiner der code, um so schwieriger den Fehler zu finden:
Siehst du den Fehler? Klick mal hier drauf... hehehe |
ke^kx |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also erstmal solltest du ast.asteriod globaln. Und dann musst du das astereoid () aus dieser Zeile logischerweiße entfernen, denn was soll das bewirken? Also manchmal sollteset du auch selber denken ![]() Jiriki |
||
http://i3u8.blogspot.com
Asus Striker II Intel Core2Quad Q9300 @ 2,5 GHz (aber nur zwei Kerne aktiv aufgrund der Instabilität -.-) Geforce 9800 GTX 2GB RAM |
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
1. Wenn du eine For each schleife benutzt, muß das nicht global sein!
2. Wenn du innerhalb dieser Schleife eine Function mit Parameter übergabe machst muß das auch nicht global sein. so, zu deinem Problem, wie sieht die Zeile aus wo du das Bild von deinem Asteroiden lädst? Ich habe angenommen das du das in einem Array geladen hast! Asteroid(0) = loadimage(bla bla) Aber so scheint es nicht zu sein, da du diesen Fehler bekommst! Abgesehen davon sollte man auch type und Arrays nicht den gleichen Namen geben! BlitzBasic: [AUSKLAPPEN]
|
||
[BB2D | BB3D | BB+]
|
![]() |
Yankee |
![]() Antworten mit Zitat ![]() |
---|---|---|
![]() Also ich lade das Bild so: Code: [AUSKLAPPEN] Global asteroid0 = LoadImage("graphics\Asteroid1.bmp") insgesamt 10 mal also 0-9 Und dan will ich das Bild malen so: Code: [AUSKLAPPEN] For ast.asteroid = Each asteroid ast\y = ast\y + ast\speed If ast\y > 480 Then Delete ast.asteroid If ast.asteroid <> Null Then DrawImage asteroid(ast\nr) EndIf Next Und ich bekomme ja das asteroid(ast\nr) schon von dem Type.... Also was ist den da jetzt nun der Fehler? Danke, Yankee |
||
Um so kleiner der code, um so schwieriger den Fehler zu finden:
Siehst du den Fehler? Klick mal hier drauf... hehehe |
ke^kx |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ach, so hast du das geladen... Da muss ich auch erstmal drauf kommen ![]() Dann ist dein Fehler klar. Was du möchtest ist ein ql:Dim. Das heißt, du musst bei deinem Lade Code das ganze etwa so machen: Code: [AUSKLAPPEN] Dim asteroidbild(9)
asteroidbild(0) = LoadImage("graphics\Asteroid1.bmp") asteroidbild(1) = LoadImage("graphics\Asteroid2.bmp") . . . Das ganze geht auch in einer Schleife (wenn ich davon ausgehe, dass deine Asterioiden Bilder bei 1 anfangen und bei 10 aufhören: Code: [AUSKLAPPEN] Dim asteroidbild(9) For i = 1 to 10 asteroidenbild(i-1) = LoadImage("graphics\Asteroid" + i + ".bmp") Next Btw als verständnisfrage: Was genau soll diese Prüfung mit "<> Null" Es ist eigentlich viel einfacher erst zu malen und dann zu löschen. Hm, wobei mir gerade auffällt, dass der Player dann z.B. zu viel Lebensenergie verlieren könnte, da der Asterioid noch gezeichnet wird... Obwohl, eigenlich nicht. Also ich verstehe es nicht so ganz^^ @Rallimen: Achso, das hab ich nicht gewusst ![]() Jiriki |
||
http://i3u8.blogspot.com
Asus Striker II Intel Core2Quad Q9300 @ 2,5 GHz (aber nur zwei Kerne aktiv aufgrund der Instabilität -.-) Geforce 9800 GTX 2GB RAM |
![]() |
Yankee |
![]() Antworten mit Zitat ![]() |
---|---|---|
![]() JUHU, habe ich mir gedacht, als kein Fehler kam, doch dann kam natürlich wie immer ein Fehler...^^ ![]() Nähmlich "Image does not exist" Und ich weis net warum... Wisst ihr warum? Der Fehler kommt immer hier: Code: [AUSKLAPPEN] For ast.asteroid = Each asteroid ast\y = ast\y + ast\speed If ast\y > 480 Then Delete ast.asteroid If ast.asteroid <> Null Then DrawImage asteroid(ast\nr), ast\x, ast\y;hier kommt der Fehler immer EndIf Next Bitte nochmal helfen^^ Danke, Yankee |
||
Um so kleiner der code, um so schwieriger den Fehler zu finden:
Siehst du den Fehler? Klick mal hier drauf... hehehe |
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
der Fehler liegt garantiert daran das das Bild nicht in diese asteroid(ast\nr) geladen wurde!
asteroid(0) = Loadimage ("Arteroid.bmp") Wenn das nicht so geladen wurde dann gehts mit Drawimage auch nicht! Beispiel wie es generel geht: BlitzBasic: [AUSKLAPPEN]
|
||
[BB2D | BB3D | BB+]
|
![]() |
Yankee |
![]() Antworten mit Zitat ![]() |
---|---|---|
grml....
Jetzt hab ich des mit dem Runtimeerror auch schon versucht, aber es klappt net. Der runtimeerror sagt nichts, aber dann später wo er dann bei dem drawimage(ast\nr) ist, kommt wieder der Fehler. Es klappt so. hier der Beweis^^. Code: [AUSKLAPPEN] Dim teil(9) For n = 0 To 9 teil(n) = False Next fire = 0 SetBuffer BackBuffer() Repeat Cls If KeyHit(57) Then If teil(fire) = False Then fire = fire + 1 teil(fire) = True If fire = 10 Then fire = 0 Else teil(fire) = True EndIf EndIf For n = 0 To 9 If teil(fire) = True Then Text 10,(20*(fire)), "Teil " + (fire) + " = True" ElseIf teil(fire) = False Then Text 10,(5*(fire)), "Teil " + (fire) + " = True" EndIf Next Flip Until KeyHit(1) End Hoffe der klappt...^^ Aber kann mir jetzt jmd sagen, wieso des jetzt immer noch net klappt? Danke, Yankee |
||
Um so kleiner der code, um so schwieriger den Fehler zu finden:
Siehst du den Fehler? Klick mal hier drauf... hehehe |
ke^kx |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dann guck mal in den Werten welchen Wert asteroid/nr gerade hat (am besten du legst zu testzwecken eine Variable an), wenn der Error kommt. Und dann vergleich ob das hinhaut.
Jiriki |
||
http://i3u8.blogspot.com
Asus Striker II Intel Core2Quad Q9300 @ 2,5 GHz (aber nur zwei Kerne aktiv aufgrund der Instabilität -.-) Geforce 9800 GTX 2GB RAM |
![]() |
Yankee |
![]() Antworten mit Zitat ![]() |
---|---|---|
grml....
Am anfang kommen ein paar Asteroiden, doch dann kommt der Fehler schon wieder. Mist. Hilfe! Weis jmd wieso das andauernd passiert? Danke, Yankee |
||
Um so kleiner der code, um so schwieriger den Fehler zu finden:
Siehst du den Fehler? Klick mal hier drauf... hehehe |
ke^kx |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Lad doch mal das gesamte Teil mit bildern und Sounds usw im Archiv hoch. Dann kann ich mal schaun ![]() Jiriki |
||
http://i3u8.blogspot.com
Asus Striker II Intel Core2Quad Q9300 @ 2,5 GHz (aber nur zwei Kerne aktiv aufgrund der Instabilität -.-) Geforce 9800 GTX 2GB RAM |
![]() |
Yankee |
![]() Antworten mit Zitat ![]() |
---|---|---|
OK habs im Archiv drinne... Is aber noch net sehr weit, also noch fast garnichts, weil ich wollte, dass ich immer erst die Probleme wegschaffe, bevor ihrgendwas anderes^^
schaus dir doch bitte mal an, danke, Yankee |
||
Um so kleiner der code, um so schwieriger den Fehler zu finden:
Siehst du den Fehler? Klick mal hier drauf... hehehe |
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bin gerade dabei es zu testen...
1. du hast nur 5 Asteroidenbilder und versuchst 9 zu laden BlitzBasic: [AUSKLAPPEN]
2. hier fehlt das n+1BlitzBasic: [AUSKLAPPEN]
3. bei der Kollsion mußtdu das Bildhandle nehmen BlitzBasic: [AUSKLAPPEN] For neu.schuss = Each schuss 4. die Zuweisung mußt du auch an die Bilder Anzahl anpassen BlitzBasic: [AUSKLAPPEN] ast\nr = Rnd(0,4) So es läuft einiigermaßen wenn du diese Änderungen machst! |
||
[BB2D | BB3D | BB+]
|
ke^kx |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Naja, jetzt hat es Rallimen ja schon gemacht ![]() Sorry trotzdem, da ich mich ja eigentlich "gemeldet" habe um es zu korrigieren ![]() Jiriki |
||
http://i3u8.blogspot.com
Asus Striker II Intel Core2Quad Q9300 @ 2,5 GHz (aber nur zwei Kerne aktiv aufgrund der Instabilität -.-) Geforce 9800 GTX 2GB RAM |
![]() |
Yankee |
![]() Antworten mit Zitat ![]() |
---|---|---|
JUHU!!!!
Danke an euch alle! Endlich klappt es, nur jetzt habe ich das problem, dass zu viele Asteroiden kommen^^. Aber keine sorge, das schaffe ich schon alleine.... Danke an euch, Yankee |
||
Um so kleiner der code, um so schwieriger den Fehler zu finden:
Siehst du den Fehler? Klick mal hier drauf... hehehe |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group