Problem mit Imagerectoverlap
Übersicht

DarkbyteBetreff: Problem mit Imagerectoverlap |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi Leute ich habe da ein Problem. Ich bin noch anfänger und möchte mir einen kleine CD spiler Programmieren. Ich erläutere das an einem Biespiel:
Graphics 300, 300 Test = LoadImage("Test") Drawimage Test, 1, 1, Maus habe ich schon und dann möchte ich: If Imagerectoverlap ( maus, X, Y, Test, 1, 1,) and Mousdown(1) Then Print "geklickt" Bie mir klappt das nicht. Bitte helft mir. Was habe ich falsch gemacht und wie kriege ich ds richtig hin. Zugefügt: so müsste es stimmen das Test habe ich schon in meinem Programm drinne. beimir klappt nur das mit dem imageoverlap nicht. |
||
- Zuletzt bearbeitet von Darkbyte am Do, Jan 18, 2007 21:01, insgesamt einmal bearbeitet
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
Kann des sein das des bild(test) nicht auf der Koordinate,1,1 liegt ? | ||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich hoffe du lädsts ein "Test.bmp" oder ein "Test.jpg" oder ein "Test.png", sonst sehe ich dark für deine bytes ![]() |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
Darkbyte |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also ich weis das da Fehler drinne sind ich wollte nur wissen wie das ghet mir dem Overlap Befehl. | ||
![]() |
AraneA |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich denke mal das Problem liegt an deinem Print
oder daran, das du das nicht in einer Schleife hast.. Du musst das ganze in einer Schleife abfrage.. ZB while wend oder repeat until/forever ALs beispiel: Code: [AUSKLAPPEN] graphics 640,480,16,2
setbuffer backbuffer() maus = loadimage("maus.bmp") repeat rect 10,10,100,100 if imagerectoverlap(maus,mousex(),mousey(),10,10,100,100) then text 300,300,"Kollision" if keydown(1) then freeimage maus end forever |
||
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
Naja den Overlap befehl haste soweit schon richtig gemacht. Haste es in ner Schleife ? Wenn ja kann s eigentlich nur an den Bildern liegen. Ich würde dir aber für die Zukunft den "imagescollide" befehl empfelen(der is genauer).
Der Funzt eigentlich genauso wie der Overlap befehl nur das man nen Frame mit angeben muss. (ein Frame ist ein einzelbild einer Animation Z.B) Also so : if imagescollide(bild,bild_x,bild_y,0,bild2,bild2_x,bild2_y,0) then ... 0 Stellt den Frame dar (da du keinen Frame hast machste einfach 0) ~Edit~ Man bin ich langsam.. ^^ |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
DarkbyteBetreff: hmm irgenwie geht das noch nicht so |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
also ich scheibe mal den ganzen Quelltext hier rein:
Graphics 300, 300 SetBuffer BackBuffer() Maus = LoadImage("pointer.bmp") PfeilL = LoadImage("P1m.bmp") PFeilR = LoadImage("P2m.bmp") Repeat Cls SetBuffer BackBuffer() DrawImage PfeilL, 1, 20 DrawImage PfeilR, 50, 20 X = MouseX() Y = MouseY() DrawImage Maus, X, Y Flip Until KeyDown(1) Repeat Cls X = MouseX() Y = MouseY() If ImagesCollide (Maus,X,Y,0,PfeilL,1,20,0) And MouseDown(1) Then Text 100,100,"Kollision" Until KeyHit(1) WAs mache ich falsch? Da kommt kein Text Kollision |
||
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bin mir nicht sicher aber könnte an der zweiten Schleife liegen.
Als ich mit 2D geproggt hab, hab ich immer alles in Functionnen gelegt und dan des in eine Schleife ^^ |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
DarkbyteBetreff: schon |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
schon möglich aber was mache ich bei mir falsch? köntetn ihr mir bitte zeigen was ich falsch mache? | ||
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie gesagt könntest du das ganze auch in einer Schleife schreiben.
Und in der 2ten Schleife Braucht man wen dan noch ein Flip. Vielleicht funtz des ja so Code: [AUSKLAPPEN] Graphics 300, 300 SetBuffer BackBuffer() Maus = LoadImage("pointer.bmp") PfeilL = LoadImage("P1m.bmp") PFeilR = LoadImage("P2m.bmp") Repeat cls DrawImage PfeilL, 1, 20 DrawImage PfeilR, 50, 20 X = MouseX() Y = MouseY() DrawImage Maus, X, Y If ImagesCollide (Maus,X,Y,0,PfeilL,1,20,0) then end flip until keyhit(1) |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
DarkbyteBetreff: DANKE |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
![]() |
||
![]() |
AraneA |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mit meinem Code oben hätte es auch funktionieren müssen...
Du MUSST das sogar in eine Schleife packen... Code: [AUSKLAPPEN] Repeat
Cls SetBuffer BackBuffer() <- Falsch in deinem Code einmal VOR die Schleife DrawImage PfeilL, 1, 20 DrawImage PfeilR, 50, 20 X = MouseX() Y = MouseY() DrawImage Maus, X, Y Flip Until KeyDown(1) Wenn du jetzt mit Esc aus der schleife gehst kommt es erst zur Kollisionsprüfung Code: [AUSKLAPPEN] Repeat
Cls <- hier unnötig , sowieso alles unnötig, da du gar nicht mehr flipst X = MouseX() Y = MouseY() If ImagesCollide (Maus,X,Y,0,PfeilL,1,20,0) And MouseDown(1) Then Text 100,100,"Kollision" Until KeyHit(1) Richtig wäre: Code: [AUSKLAPPEN] SetBuffer BackBuffer() <- Einmal vor der Schleife
Reapeat cls Alles Zeichnen if Kollision() then text 10,10,"Kollision" flip Until KeyDown(1) Function Kollision() If Imagerectoverlap(maus,mousex(),mousey(),10,10,100,100) then return 1 End Function Du rufst halt einmal in der Hauptschleife die Function auf. Wichtig ist halt, das du nur eine Schleife hast... (jedenfalls in diesem Beispiel) |
||
DarkbyteBetreff: Das klapt immer noch nicht! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Graphics 300, 300
SetBuffer BackBuffer() Maus = LoadImage("pointer.bmp") PfeilL = LoadImage("P1m.bmp") PfeilR = LoadImage("P2m.bmp") Repeat Cls DrawImage PfeilL, 1, 20 X = MouseX() Y = MouseY() DrawImage Maus, X, Y If K() And MouseDown(1) Then Print "Test" Flip Until KeyDown(1) End Function K() If ImagesCollide (Maus,X,Y,0,PfeilL,1,20,0) Print "Hallo" End Function Das ist dein Quelltext etwas abegeändert. Aber es funktioniert nicht da steht immer image does not exist. |
||
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn du Variablen in einer Funktion nutzen willst sollte man dies auch global machen...
also ist der Fehler das du beim Bildladen es nicht als Global geladen hast. Alos z.B. global Bild = loadimage("test") dann erkennt er das bild in ner Funktion. ~Nachtrag~ : Bin etz ne Zeitlang nicht anwesend, muss Prospekte austeilen. (Hat ma mal Schulfrei und muss trotzdem Arbeiten...) |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
- Zuletzt bearbeitet von Dottakopf am Fr, Jan 19, 2007 12:55, insgesamt einmal bearbeitet
DarkbyteBetreff: erkent |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
zwar das bild aber es erscheint kein Text wenn ich auf den Pfeil klicke. | ||
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
hab schnell bevor ich losdüse des nochmal angeschaut und auch gelöst !
Code: [AUSKLAPPEN] Graphics 300, 300 SetBuffer BackBuffer() Global Maus = LoadImage(" pfad") Global PfeilL = LoadImage("pfad") Global PfeilR = LoadImage("pfad") Repeat Cls menu() Flip Until KeyDown(1) End ;alles in eine Function packen (is doch viel übersichtlicher) Function menu() x = MouseX() y= MouseY() DrawImage maus,x,y DrawImage pfeilL,100,20 If ImagesCollide(maus,x,y,0,pfeilL,100,20,0) Then Text 10,10,"KOLLISION" End Function Solltest du was nicht verstanden haben frag bitte ! mfg Dottakopf |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group