Problem mit Imagescollide
Übersicht

Kevin_bleBetreff: Problem mit Imagescollide |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Tach,
heute zum ersten mal das ich mein code ins forum stellen muss weil ich den Fehler nicht finde....Ich hoffe ihr könnt mir helfen. Also hier der code Code: [AUSKLAPPEN] Graphics 800,600,32,1 Global tr1 Global tr2 Global tr3 Global tr4 Global tr5 Global see Global cursor Text 150,100,"Mapeditor wird geladen!" Dim Map(999,2) tr1 = LoadImage("tr.bmp") tr2 = LoadImage("tr2.bmp") tr3 = LoadImage("tr3.bmp") tr4 = LoadImage("tr4.bmp") tr5 = LoadImage("tr5.bmp") see = LoadImage("see.bmp") dornen= LoadAnimImage("dornen.bmp",64,64,0,9) Global framed MaskImage dornen,191,123,199 MaskImage see,255,255,255 cursor = LoadImage("cursor.png") MaskImage cursor,255,255,255 SetBuffer BackBuffer() Repeat Cls Color 255,255,255 Text 100,230,"Bitte wählen sie den Boden aus." DrawImage tr1,100,250 DrawImage tr2,170,250 DrawImage tr3,240,250 DrawImage tr4,310,250 DrawImage tr5,380,250 Select auswahl Case 1 Color 255,255,255 Rect 100,250,62,47,0 Case 2 Color 255,255,255 Rect 170,250,62,46,0 Case 3 Color 255,255,255 Rect 240,250,65,48,0 Case 4 Color 255,255,255 Rect 310,250,63,47,0 Case 5 Color 255,255,255 Rect 380,250,64,48,0 End Select If ImagesCollide (cursor,MouseX(),MouseY(),0,tr1,100,250,0) auswahl = 1 EndIf If ImagesCollide (cursor,MouseX(),MouseY(),0,tr2,170,250,0) auswahl = 2 EndIf If ImagesCollide (cursor,MouseX(),MouseY(),0,tr3,240,250,0) auswahl = 3 EndIf If ImagesCollide (cursor,MouseX(),MouseY(),0,tr4,310,250,0) auswahl = 4 EndIf If ImagesCollide (cursor,MouseX(),MouseY(),0,tr5,380,250,0) auswahl = 5 EndIf If MouseHit(1) Then Goto haupt EndIf DrawImage cursor,MouseX(),MouseY() Flip Until KeyHit(1) End .haupt Repeat SetBuffer BackBuffer() ;- If auswahl = 1 Then TileImage tr1 EndIf If auswahl = 2 Then TileImage tr2 EndIf If auswahl = 3 Then TileImage tr3 EndIf If auswahl = 4 Then TileImage tr4 EndIf If auswahl = 5 Then TileImage tr5 EndIf ;- If lauswahl = 0 Then Repeat SetBuffer BackBuffer() Color 0,0,0 Rect 0,0,800,600,1 Color 255,255,255 Text 400,10,"Bitte Landschaftsobjekt auswählen",1,0 DrawImage see,10,50 DrawImage dornen,380,50,framed If ImagesCollide (cursor,MouseX(),MouseY(),0,see,10,50,0) ; <- Diese Zeile wird beim Debugger makiert Color 0,0,0 Rect 10,50,357,260,0 lauswahl = 1 EndIf If ImagesCollide (cursor,MouseX(),MouseY(),0,dornen,380,50,framed) Then Color 255,255,255 Rect 380,50,64,64,0 lauswahl = 2 EndIf DrawImage cursor,MouseX(),MouseY() Flip ;----Delete!______ If KeyHit(1) Then End EndIf ;----------------- Until endlauswahl=1 EndIf If x <> 0 And y <> 0 Then DrawImage see,x,y EndIf DrawImage cursor,MouseX(),MouseY() Flip Until KeyHit(1) Wie ihr sehen könnt habe ich die Stelle die beim debugger angezeigt wird makiert. Als Fehler Meldung kommt Memory acces violation. Für diesen Fehler bin ich immer folgende Punkte durchgegangen: • Der Pfad stimmt nicht • Der Pfad stimmt zwar aber in diesem teil des codes ist diese variable gleich 0 • Der Arbeitsspeicher wurde zugemüllt Ich bin alle Punkte durchgegangen aber nichts trifft ein. den ersten und zweiten punkt kann man ausschliessen weil kurz vor der imagecollide ja Drawimage see steht. Und der dritte Punkt ists auch nicht. Ich hab auch schon mal die etwas große dim raus geschmissen aber daran lags auch nicht. Ich weiß nicht mehr weiter seht ihr den fehler? Achja ich hab den Teil des Codes einfach mall ganz raus geschnitten. Das Imagescollide danach funktioniert komischerweise also liegt es an der Variable cursor also auch nicht... |
||
Jeder Tag ohne meinen Pc ist ein verlorener Tag!
Aktuelles Projekt: Universe War 2 Suche noch Hilfe! Für mehr Infos http://www.kfgames.2page.de/ User posted image |
Matthias |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hay.
Ich würde dir kerne helfen. Aber ich kann dein Prg nicht testen. Weil ich die bilder nicht habe kannst du sie mal im Archiv hochladen. |
||
Kevin_ble |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
du brauchst es ja nicht testen. Wenn du es startest sollst du lediglich einen hintergrund auswählen und wenn du das hast kommt die fehlermeldung...aber wenn du mir damit helfen kannst...
So hochgeladen ist eine zipdatei. Name: bilder-imagecollidefehler |
||
Jeder Tag ohne meinen Pc ist ein verlorener Tag!
Aktuelles Projekt: Universe War 2 Suche noch Hilfe! Für mehr Infos http://www.kfgames.2page.de/ User posted image |
MatthiasBetreff: Geht doch alles |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hay habe dein Programm ausprobiert aber bei mir funcktioniert alles
Blitz3D auch mit debbuger. Was soll das eigentilich für ein prg werden? Ein TileEditor? |
||
Matthias |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hach so jetz fält es mir ein die Demo Versionen können nur Bmp Bilder Laden. Corsor ist aber png >Umkonfertieren | ||
Kevin_ble |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
sry ich besitze die vollversion
sehr seltsam hab auch blitz3d und debugger!? Soll ein mapeditor werden das seltsame ist ja das das Imagecollide danach geht und ausser dass das image see mit dornen und die koordinaten anders sind ists ja das gleiche wie oben. Das gibts doch nicht warum geht das bei mir nicht.... |
||
Jeder Tag ohne meinen Pc ist ein verlorener Tag!
Aktuelles Projekt: Universe War 2 Suche noch Hilfe! Für mehr Infos http://www.kfgames.2page.de/ User posted image |
Matthias |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Cool aber mach mal noch ne lupe das man gleich zeichnen kann und es sich anpasst Weist du wie ich das meine?? | ||
Kevin_ble |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ne kp was du meinst | ||
Jeder Tag ohne meinen Pc ist ein verlorener Tag!
Aktuelles Projekt: Universe War 2 Suche noch Hilfe! Für mehr Infos http://www.kfgames.2page.de/ User posted image |
Matthias |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Auserdem verändert sich der boden garnicht wenn ich den Auwähle.
Ich schreibe dir mal ein Beispiel Dauert so 10min |
||
Matthias |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das ist nur ein Beispiel aber vieleicht hilft es dir.
Code: [AUSKLAPPEN] Dim TileMap(100,100) Tiles=LoadAnimImage("Ani.Bmp",64,64,0,4) SetBuffer BackBuffer() Text 20,20,"Wähle den Boden":Color 255,255,0 Repeat: For Z=0 To 3:X=100+128*Z:Y=100:DrawBlock Tiles,X,Y,Z If MouseX()=>X And MouseX()<X+64 And MouseY()=>Y And MouseY()<Y+64 Then Rect X,Y,64,64,0:BodenTile=Z End If Next Flip:Until MouseHit(1)=1 Or KeyDown(1)=1 For ZX=0 To 100:For ZY=0 To 100 TileMap(ZX,ZY)=BodenTile Next:Next Repeat: For ZX=0 To (GraphicsWidth()/64) For ZY=0 To (GraphicsHeight()/64) DrawBlock Tiles,ZX*64,ZY*64,TileMap(ZX,ZY) Next:Next For Z=0 To 3:X=64*Z:Y=GraphicsHeight()-64:DrawBlock Tiles,X,Y,Z If MouseX()=>X And MouseX()<X+64 And MouseY()=>Y And MouseY()<Y+64 Then Rect X,Y,64,64,0:If MouseHit(1)=1 Then TilAusw=Z End If Next MX=MouseX()/64:MY=MouseY()/64 DrawBlock Tiles,MX*64,MY*64,TilAusw If MouseHit(1)=1 Then TileMap(MX,MY)=TilAusw Flip Until KeyDown(1) End Ich habe mal die ganzen Bodenimages zusammengefast, und im Arschiv neu gespeichert |
||
Kevin_ble |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke. Werd mir den code mal genauer anschauen. Aber leider weiß ich immer noch nicht warum das bei mir nicht geht. Wenn ich das Minimap von dir starte (das ist ja die datei die du nur zurückgeschickt hast) gehts immer noch nicht. Der selbe fehler | ||
Jeder Tag ohne meinen Pc ist ein verlorener Tag!
Aktuelles Projekt: Universe War 2 Suche noch Hilfe! Für mehr Infos http://www.kfgames.2page.de/ User posted image |
Matthias |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja aber Minimap2 geht doch oder??? | ||
Kevin_ble |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
jo minimap 2 geht einwandfrei^^ | ||
Jeder Tag ohne meinen Pc ist ein verlorener Tag!
Aktuelles Projekt: Universe War 2 Suche noch Hilfe! Für mehr Infos http://www.kfgames.2page.de/ User posted image |
Matthias |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Weil du bei 200 Tiles nicht dauernt drawblock schreiben kannst
das geht voll auf die schnelligkeit. Mfg Matthias |
||
![]() |
garret |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mal ein paar Hinweise zu deinem Code Kevin_ble:
- Warum drei Mal SetBuffer Backbuffer()? Einmal am Anfang reicht. - Mehrere If-Bedingungen kannst du zu Select-Case zusammenfassen, hast du ja schon ein Mal gemacht: Code: [AUSKLAPPEN] If auswahl = 1 Then TileImage tr1 EndIf If auswahl = 2 Then TileImage tr2 EndIf If auswahl = 3 Then TileImage tr3 EndIf If auswahl = 4 Then TileImage tr4 EndIf If auswahl = 5 Then TileImage tr5 EndIf Außerdem musst du Bedingungen mit nur einer Anweisung nicht mit EndIf umklammern. Da reicht: If (Bedingung=True) Then (Anweisung) - Gleiche Bilder wie tr1,tr2 usw. am Besten zu einem Bild zusammenfassen und mit LoadAnimImage() laden. Das erleichtert auch das Setzen von Tiles, da du nur eine Variable brauchst, z.B. aktuell. Das Teilbild aktuell wird dann angezeigt. DrawImage tiles(x, y, aktuell) - Und Leute: Schaut euch eure Beiträge wenigstens noch mal kurz an, bevor ihr sie abschickt... Ich kenne zum Beispiel kein Arschiv ![]() MfG garret |
||
>>nec aspera terrent<< (Auch Widerwärtigkeiten schrecken nicht) |
Kevin_ble |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
da mir letztlich niemand helfen konnte habe ich nach langem probieren den Fehler behoben. Wie? Ich habe die selben images mit der selben variable vor dem Imagecollide nochmal geladen. Warum es jetz geht ist mir unerklärlich ich denke es ist irgendein Fehler in Blitz. Für alle die sich dafür Interessieren hier der verbesserte code: (Er hat keine richtige aufgabe man kann nur sehen das es jetz funktioniert)
Code: [AUSKLAPPEN] Graphics 800,600,32,1 Global tr1 Global tr2 Global tr3 Global tr4 Global tr5 Global see Global cursor Text 150,100,"Mapeditor wird geladen!" Dim Map(999,2) tr1 = LoadImage("tr.bmp") tr2 = LoadImage("tr2.bmp") tr3 = LoadImage("tr3.bmp") tr4 = LoadImage("tr4.bmp") tr5 = LoadImage("tr5.bmp") see = LoadImage("see.bmp") dornen= LoadAnimImage("dornen.bmp",64,64,0,9) Global framed MaskImage dornen,191,123,199 MaskImage see,255,255,255 cursor = LoadImage("cursor.png") MaskImage cursor,255,255,255 SetBuffer BackBuffer() Repeat Cls Color 255,255,255 Text 100,230,"Bitte wählen sie den Boden aus." DrawImage tr1,100,250 DrawImage tr2,170,250 DrawImage tr3,240,250 DrawImage tr4,310,250 DrawImage tr5,380,250 Select auswahl Case 1 Color 255,255,255 Rect 100,250,62,47,0 Case 2 Color 255,255,255 Rect 170,250,62,46,0 Case 3 Color 255,255,255 Rect 240,250,65,48,0 Case 4 Color 255,255,255 Rect 310,250,63,47,0 Case 5 Color 255,255,255 Rect 380,250,64,48,0 End Select If ImagesCollide (cursor,MouseX(),MouseY(),0,tr1,100,250,0) auswahl = 1 EndIf If ImagesCollide (cursor,MouseX(),MouseY(),0,tr2,170,250,0) auswahl = 2 EndIf If ImagesCollide (cursor,MouseX(),MouseY(),0,tr3,240,250,0) auswahl = 3 EndIf If ImagesCollide (cursor,MouseX(),MouseY(),0,tr4,310,250,0) auswahl = 4 EndIf If ImagesCollide (cursor,MouseX(),MouseY(),0,tr5,380,250,0) auswahl = 5 EndIf If MouseHit(1) Then Goto haupt EndIf DrawImage cursor,MouseX(),MouseY() Flip Until KeyHit(1) End .haupt Repeat ;- If auswahl = 1 Then TileImage tr1 EndIf If auswahl = 2 Then TileImage tr2 EndIf If auswahl = 3 Then TileImage tr3 EndIf If auswahl = 4 Then TileImage tr4 EndIf If auswahl = 5 Then TileImage tr5 EndIf ;- If lauswahl = 0 Then Repeat Color 0,0,0 Rect 0,0,800,600,1 Color 255,255,255 Text 400,10,"Bitte Landschaftsobjekt auswählen",1,0 DrawImage see,10,50 DrawImage dornen,380,50,framed If ImagesCollide (cursor,MouseX(),MouseY(),0,dornen,380,50,framed) Then Text 10,10,framed Color 255,255,255 Rect 380,50,64,64,0 lauswahl = 2 EndIf DrawImage cursor,MouseX(),MouseY() ; durch diesen Abschnitt funktioniert der Code nun If sb = 0 Then sb=1 see = LoadImage("see.bmp") MaskImage see,255,255,255 cursor = LoadImage("cursor.png") MaskImage cursor,255,255,255 EndIf ;---------------------------------------------------------------- If ImagesCollide (cursor,MouseX(),MouseY(),0,see,10,50,0) ; <- Diese Zeile wird beim Debugger makiert Color 255,255,255 Rect 10,50,196,216,0 lauswahl = 1 EndIf If KeyHit(205) Then Select lauswahl Case 2 framed=framed+1 If framed = 9 Then framed=0 End Select EndIf If KeyHit(203) Then Select lauswahl Case 2 framed=framed-1 If framed = -1 Then framed=8 End Select EndIf Flip ;----!Delete!______ If KeyHit(1) Then End EndIf ;------------------ Until endlauswahl=1 EndIf If x <> 0 And y <> 0 Then DrawImage see,x,y EndIf DrawImage cursor,MouseX(),MouseY() Flip Until KeyHit(1) |
||
Jeder Tag ohne meinen Pc ist ein verlorener Tag!
Aktuelles Projekt: Universe War 2 Suche noch Hilfe! Für mehr Infos http://www.kfgames.2page.de/ User posted image |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group