ImagesCollide und delete...Hilfe...SOS
Übersicht

MarieBubeBetreff: ImagesCollide und delete...Hilfe...SOS |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also langsam werde ich wahnsinnig ![]() Ich hab halt so ein Spiel, bei dem sich unten ein Mammut hin und her bewegt und Cookies auffängt bzw. isst, die von oben runter fallen. Aber ich bekomme es nicht hin, dass diese Cookies verschwinden, wenn sie mit dem Mammut kollidieren > ![]() Könnt ihr mir sagen, was ich da schreiben muss? Tut mir Leid, dass ich den ganzen Code reinstelle, aber ich weiß nicht, was ihr da braucht... Code: [AUSKLAPPEN] m=MilliSecs()
;name AppTitle "Mammuth hat Hunger!" ;counter Const width=10,height=10,depth=1 Graphics 1000,600 landschaft=LoadImage("Landschaft.bmp") ScaleImage landschaft,0.65,0.65; i=MilliSecs() zeit=i-m ;bilder hochladen Mammoth=LoadImage("Mammoth3.bmp") ScaleImage Mammoth,0.75,0.75; MaskImage mammoth,255,255,255 cookie=LoadImage("cookie.bmp") MaskImage cookie, 255,255,255 ScaleImage cookie, 0.05,0.05; ;type erstellen Type cookie Field x Field y Field punkte Field speed End Type SetBuffer BackBuffer() ;counter counter = 1 fontno=LoadFont("verdana",50) SetFont fontno While Not KeyDown(1) Color Rnd(256),Rnd(256),Rnd(256) epeat counter = counter + 1 If counter>60 Then cake.cookie=New cookie cake\x=Rnd(1,950) cake\y=0 cake\speed=Rnd(0.5,2) cake\punkte=z counter=0 EndIf ;steuerung If KeyDown (205); a=a+10; EndIf If KeyDown(203); a=a-10; EndIf; Cls DrawImage landschaft,x,y; DrawImage Mammoth,a,410 If a>820 a=820 EndIf If a<0 a=0 EndIf For cake.cookie=Each cookie If ImagesCollide(Mammoth,a,410,0,cookie,cake\x,cake\y,0) Then Delete cake EndIf DrawImage cookie, cake\x,cake\y cake\y = cake\y + cake\speed ;If cake\y>410 Then Delete cake Next ;anzeige Text 230,1,"Zeit: " Text 230,10,"Leben: " Text 230, 20,"Punkte: " ;counter Text 900,550,counter Flip Forever Wend Liebe Grüße, Marie ![]() Und bitte macht mich nicht wegen sämlichen Anfängerfehlern zur Schnecke ![]() |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nachdem du ein cake gelöscht hast, versuchst du nun das ungültige Handle noch einmal zu zeichen. Und genau das geht nicht.
Code: [AUSKLAPPEN] For cake.cookie=Each cookie
If ImagesCollide(Mammoth,a,410,0,cookie,cake\x,cake\y,0) Then Delete cake EndIf DrawImage cookie, cake\x,cake\y cake\y = cake\y + cake\speed ;If cake\y>410 Then Delete cake Next Versuch es also anders rum. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
ZaP |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zwei Sachen sind mir jetzt aufgefallen:
Du prüfst jeden Keks auf Kollision, wenn er kollidiert, löschst Du ihn, aber zeichnest danach ein Bild an den soeben gelöschten Koordinaten -> vertauschen, sonst MAV. Dann hast Du noch Repeat und While verschachtelt, wieso auch immer. |
||
Starfare: Worklog, Website (download) |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei Dir heißt ein TYPE und ein geladenes Bild gleich: "Cookie". Das darf nicht sein.
könnte die Ursache sein. |
||
MarieBube |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hectic hat Folgendes geschrieben: Nachdem du ein cake gelöscht hast, versuchst du nun das ungültige Handle noch einmal zu zeichen. Und genau das geht nicht.
Code: [AUSKLAPPEN] For cake.cookie=Each cookie
If ImagesCollide(Mammoth,a,410,0,cookie,cake\x,cake\y,0) Then Delete cake EndIf DrawImage cookie, cake\x,cake\y cake\y = cake\y + cake\speed ;If cake\y>410 Then Delete cake Next Versuch es also anders rum. Wenn ich das mache, kommt da "Object does not exist" |
||
MarieBube |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ZaP hat Folgendes geschrieben: Zwei Sachen sind mir jetzt aufgefallen:
Du prüfst jeden Keks auf Kollision, wenn er kollidiert, löschst Du ihn, aber zeichnest danach ein Bild an den soeben gelöschten Koordinaten -> vertauschen, sonst MAV. Dann hast Du noch Repeat und While verschachtelt, wieso auch immer. Danke für die Antwort, aber in meinem Gesicht steht ein fettes Fragezeichen. |
||
MarieBube |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Midimaster hat Folgendes geschrieben: Bei Dir heißt ein TYPE und ein geladenes Bild gleich: "Cookie". Das darf nicht sein.
könnte die Ursache sein. Ich dachte, das Bild ist der Type?! |
||
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du solltest Doppel- oder Trippelposts vermeiden, benutze den Edit-Button.
Edit: Nein, Bild und Type sind getrennt ![]() |
||
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 |
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ähh, Marie, wir (inkl. dir ![]() Benutze in Zukunft den Edit-Button ( ![]() Danke mfG Holzchopf |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
MarieBube |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ok, mit den Doppel- oder Trippelposts, das wird nicht nochmal vorkommen. Tut mir Leid.
Also wegen dem "cookie". Wie soll ich den denn nennen, das BB trotzdem weiß, dass ich dieses Bild auch als Type verwenden will? |
||
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Egal, wie du ihn nennst, du musst nur den Namen auch bei DrawImage verwenden ![]() |
||
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 |
MarieBube |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das Problem ist, ich weiß nicht, welches Bild und welches Type ist, weil sie ja beide "Cookie" heißen... | ||
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
So, weil ich grade Langeweile hatte, hab ich dir deinen Code mal so umgeschrieben, dass er funktioniert, und nochmal n paar strukturelle Sachen verbessert.
Code: [AUSKLAPPEN] AppTitle "Mammuth hat Hunger!"
SeedRnd MilliSecs() Const width=10,height=10,depth=1 Global points=0,mx=100,my=525 Graphics 1000,600 SetBuffer BackBuffer() landschaft=LoadImage("Landschaft.bmp") ScaleImage landschaft,0.65,0.65 i=MilliSecs() zeit=i-m ;bilder hochladen Mammoth=LoadImage("Mammoth3.bmp") ScaleImage Mammoth,0.75,0.75 MaskImage mammoth,255,255,255 cookie=LoadImage("cookie.bmp") ScaleImage cookie, 0.05,0.05 MaskImage cookie,255,255,255 ;type erstellen Type cookie Field x Field y Field punkte Field speed End Type ;counter counter = 1 fontno=LoadFont("verdana",50) SetFont fontno While Not KeyDown(1) Color Rnd(256),Rnd(256),Rnd(256) counter = counter + 1 If counter>60 Then c.cookie = New cookie c\x = Rnd(1,950) c\y = 0 c\speed = Rnd(0.5,2) c\punkte = z counter = 0 EndIf ;steuerung If KeyDown(205) mx=mx+10 EndIf If KeyDown(203) mx=mx-10 EndIf Cls DrawImage landschaft,x,y DrawImage Mammoth,mx,my If mx>820 Then mx=820 EndIf If mx<0 Then mx=0 EndIf For c.cookie=Each cookie DrawImage cookie,c\x,c\y c\y = c\y + c\speed If ImagesCollide(Mammoth,mx,my,0,cookie,c\x,c\y,0) Then Delete c.Cookie points = points+10 EndIf Next ;anzeige Text 10,0,"Zeit: " Text 10,40,"Leben: " Text 10,80,"Punkte: "+points ;counter Text 900,550,counter Flip Wend End Mfg, N0X |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also die Variable fürs Bild nennst Du CookieBild, den Typ nennst Du CookieTyp.
Zitat: Wie soll ich den denn nennen, das BB trotzdem weiß, dass ich dieses Bild auch als Type verwenden will?
Du kannst NICHT einem Bild und einem TYPE den gleichen Namen geben, weil BB eben nicht beherscht, dass ein Bild gleichzeitig ein TYPE sein kann. Und es ist auch gar nicht nötig! Das bekommst Du anders hin. gleich mehr.... so könnte die Kollision aussehen: BlitzBasic: [AUSKLAPPEN] For cake.cookie=Each cookie |
||
- Zuletzt bearbeitet von Midimaster am Sa, Jan 02, 2010 20:01, insgesamt einmal bearbeitet
MarieBube |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
OH MEIN GOTT, NOX!! JE T'AIME ![]() ![]() ![]() ![]() danke danke danke ![]() und auch an die andern: VIELEN DANK!!! supi supi supi ^^ |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
@nox
ist da nicht noch der cookie-fehler in der Collision? Zitat: If ImagesCollide(Mammoth,mx,my,0,cookie,c\x,c\y,0) Then
|
||
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
Achja, stimmt, hier nochmal verbessert. ![]() Code: [AUSKLAPPEN] AppTitle "Mammuth hat Hunger!"
SeedRnd MilliSecs() Const width=10,height=10,depth=1 Global points=0,mx=100,my=525 Graphics 1000,600 SetBuffer BackBuffer() landschaft=LoadImage("background.jpg") i=MilliSecs() zeit=i-m ;bilder hochladen Mammoth=LoadImage("krum.png") MaskImage mammoth,255,0,220 cookie=LoadImage("cookie.png") MaskImage cookie,255,255,255 ;type erstellen Type cookie Field x Field y Field gfx Field punkte Field speed End Type ;counter counter = 1 fontno=LoadFont("verdana",50) SetFont fontno While Not KeyDown(1) Color Rnd(256),Rnd(256),Rnd(256) counter = counter + 1 If counter>60 Then c.cookie = New cookie c\x = Rnd(1,950) c\y = 0 c\gfx = cookie c\speed = Rnd(0.5,2) c\punkte = z counter = 0 EndIf ;steuerung If KeyDown(205) mx=mx+10 EndIf If KeyDown(203) mx=mx-10 EndIf Cls DrawImage landschaft,x,y DrawImage Mammoth,mx,my If mx>820 Then mx=820 EndIf If mx<0 Then mx=0 EndIf For c.cookie=Each cookie DrawImage c\gfx,c\x,c\y c\y = c\y + c\speed If ImagesCollide(Mammoth,mx,my,0,c\gfx,c\x,c\y,0) Then Delete c.Cookie points = points+10 EndIf Next ;anzeige Text 10,0,"Zeit: " Text 10,40,"Leben: " Text 10,80,"Punkte: "+points ;counter Text 900,550,counter Flip Wend End Mfg, N0X |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
MarieBube hat anfangs gebeten nicht jeden Anfängerfehler zu kritisieren aber wenn hier schon jemand anfängt feritge Codes zu servieren so sollten wenigstens die perfekt sein oder?
daher: -) Die Zeile Const width=10,height=10,depth=1 kann man sich sparen, die Variablen werden nicht benutzt im hier gezeigten Code -) Die Auflösung 1000*600 ist ziemlich exotisch (obwohl sie "rund" ist) - nimm besser 1024*768 oder 800*600 -) Das Bild Handle "Mammoth" wird einmal groß und einmal klein geschrieben - kein Fehler aber auch nicht schön -) Ich unterstütze es an sich auch, dass man png-Bilder anstatt bmp verwendet aber vlt hat MarieBube nur die Demoversion die nur bmp unterstützt - außerdem ist ein kommentarloses ändern des Namens eine potenzielle Fehlerquelle. -) Dem Type-Field "speed" einen Float-Wert mittels Rnd zuzuweisen ergibt nicht viel Sinn, besser ist Rand ![]() -) Wenn wir schon beim ausbessern sind erwähnen wir am besten auch diesen Thread bzgl. Flip: https://www.blitzforum.de/foru...hp?t=25242 --> Flip 0 und Timer verwenden. Schönen Abend! |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
- Zuletzt bearbeitet von Eingeproggt am Sa, Jan 02, 2010 22:01, insgesamt einmal bearbeitet
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hast ja recht ![]() Aber wozu sind eigentlich diese Zeilen gut? Code: [AUSKLAPPEN] i=MilliSecs()
zeit=i-m |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
MarieBube |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ICH LIEBE EUCH, wenn ich das mal erwähnen darf ^^ | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group