Mit Mausklick Bild bewegen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

bruce185

Betreff: Mit Mausklick Bild bewegen

BeitragDi, Nov 08, 2005 23:47
Antworten mit Zitat
Benutzer-Profile anzeigen
hi,
also ich bin gerade dabei ein Spiel zu schreiben und möchte wenn ich auf die linke maustaste klicke, und die maus dann bewege dann soll das Bild mitbewegt werden, habe es so versucht:

BlitzBasic: [AUSKLAPPEN]

If ImagesCollide(maus,MouseX(),MouseY(),0,ball,a,b,0)Then
If MouseHit(1) Then
a = a + MouseX()
b = b + MouseY()
EndIf
EndIf


ich bin euch sehr dankbar wenn ihr mir weiter helfen könnt Smile

Andreas

Hubsi

BeitragMi, Nov 09, 2005 0:52
Antworten mit Zitat
Benutzer-Profile anzeigen
So oder so ähnlich:BlitzBasic: [AUSKLAPPEN]
Graphics 640,480,16,2
SetBuffer BackBuffer()
HidePointer()
x=100:y=100

While Not KeyHit(1)
Cls
Text 10,10,\"Klicke auf das Quadrat um es aufzunehmen/abzulegen\"
mx=MouseX():my=MouseY()
Color 0,0,255
Rect x,y,50,50,1
Color 255,255,0
Oval mx-5,my-5,10,10,0

If MouseHit(1)
If mx>x And mx<x+50 And my>y And my<y+50 And go=False
go=True
korrx=mx-x
korry=my-y
Else
go=False
EndIf
EndIf

If go x=mx-korrx:y=my-korry
Flip
Wend
End
Have fun Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Hummelpups

BeitragMi, Nov 09, 2005 10:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit fällt immer wieder auf, dass der MausHit befehl in den Collsisions
befehl verschachtelt ist MACHT DAS NIE WIEDER, DAS IST BÖÖÖSE

Kollisionen könnt ihr immer abfragen aber Mousehit pro schleife am
besten nur EIN (!) mal!


gewöühnt euch das an und Proggen macht euch spaß!

IMurDOOM
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus
 

Silbersurfer

BeitragDo, Dez 29, 2005 15:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe da auch noch so ein Problem mit dem Mausgraben !
bei mir geht es darum ein vollen Bildschrim mit der Maus als art Griff zu bewegen, es funtz auch schon ganz gut nur wenn die Maus zu schnell bewegt wird
kommt es bei meiner Abfrage zu fehlern.

hier ein beispiel Code
BlitzBasic: [AUSKLAPPEN]
bild=LoadImage (\"c:\Dokumente und Einstellungen\All Users\Dokumente\Eigene Bilder\Beispielbilder\Wasserlilien.jpg\")
;wenn das Bild nicht geladen werden kann dann einfach ein eigenes bild hier einsetzen (muß aber größer als 640X480 sein !
fenster_x=640:fenster_y=480
mal_buffer=CreateImage (fenster_x,fenster_y)
Graphics fenster_x,fenster_y,0,2
SetBuffer ImageBuffer(bild) :GrabImage mal_buffer,0,0:SetBuffer BackBuffer ()
If ImageWidth (mal_buffer) <ImageWidth(bild) restx=ImageWidth(bild)-ImageWidth (mal_buffer)
If ImageHeight (mal_buffer)<ImageHeight (bild) resty=ImageHeight (bild)-ImageHeight (mal_buffer)
Repeat
Gosub mausgrab
DrawBlock mal_buffer,0,0


Flip
Until KeyHit (1)

.mausgrab
If MouseDown(1)
If maus=0
xdummy=MouseX():ydummy=MouseY():maus=1
EndIf
xx=x
yy=y
x=MouseX()-xdummy
y=MouseY()-ydummy
mx=imagex-x:my=imagey-y
If mx<0 mx=0 : x=xx
If mx>restx mx=restx: x=xx
If my<0 my=0 : y=yy
If my>resty my=resty: y=yy
SetBuffer ImageBuffer(bild) :GrabImage mal_buffer,imagex-x,imagey-y:SetBuffer BackBuffer ()
Else
If maus=1
imagex=mx
imagey=my
maus=0:
EndIf
EndIf
Return


Sicherlich gibt es da noch einiges zu verbessern, nur irgendwie habe ich da ein brett vor dem Kopf Smile
würde mich über Tipps von euch Freuen
-------------------------------------------------------
XP 2000+ 512DDR Radeon 9800 XL 340GB HD
Hompage : http://home.arcor.de/silbersurfer01/
Is Bob engine http://home.arcor.de/silbersur.../Isbob.zip
 

David

BeitragDo, Dez 29, 2005 15:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Jo, gibt was zu verbessern. Die Verwendung von Labels und Gosub z.B...

grüße

Hummelpups

BeitragDo, Dez 29, 2005 15:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Und relative Pfadangaben!!
Pack dein Projekt mit allen Bildern die dazu gehören in einen
Ordner bzw. unterordner. Beispiel:
mach auf den Desktop nen Ordner Projekt.

Dann machste in den Projekt Ordner ne Datei main.bb
und in den Ordner Projekt nen Ordner gfx. Da kommen dann
die grafiken rein. Dann hast du folgenden hierarchichschen aufbau:

->Projekt
-->gfx
--->Hallo.bmp
--->Plop.bmp
--->xXx.bmp
-->main.bb

dann kannst du aus der main.bb die dateien einfach per loadimage("gfx/xXx.bmp") laden.
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus
 

Silbersurfer

BeitragDo, Dez 29, 2005 15:40
Antworten mit Zitat
Benutzer-Profile anzeigen
David schrieb
Zitat:
Jo, gibt was zu verbessern. Die Verwendung von Labels und Gosub z.B...


hmm wie soll ich das jetzt verstehen ?
ist an dem Gosub was auszusetzen

IMurDOOM schrieb
Zitat:
Und relative Pfadangaben!!
Pack dein Projekt mit allen Bildern die dazu gehören in einen
Ordner bzw. unterordner. Beispiel:
mach auf den Desktop nen Ordner Projekt.


Das ist schon klar es dient ja auch nur als beispiel deshalb die Pfadangabe

PS: Mein Problem ist die abfrage der Maus wenn sie zu schnell bewegt wird,
da wären tipps ganz nett!
-------------------------------------------------------
XP 2000+ 512DDR Radeon 9800 XL 340GB HD
Hompage : http://home.arcor.de/silbersurfer01/
Is Bob engine http://home.arcor.de/silbersur.../Isbob.zip
 

David

BeitragDo, Dez 29, 2005 17:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Ja, ist es. Gosub und Goto sind sehr schlechter Programmierstil und können immer ersetzt werden. Verwende Funktionen und ähnliche Alternativen.

grüße

nX^

BeitragDo, Dez 29, 2005 18:08
Antworten mit Zitat
Benutzer-Profile anzeigen
also bei meinem Spiel benutzte ich das hier um eine Konsole im Hauptmenu hin und her zuziehen

BlitzBasic: [AUSKLAPPEN]
If MouseDown(1) Then
If mx>=x And mx<=x+560 And my>=y And my<=y+400 And inaktiv=0 Then
; 560=X Größe des Bildes, 400=Y Größe des Bildes
If aktiv=0
tempx=mx-x
tempy=my-y
aktiv=1
EndIf
If aktiv=1 Then
x=mx-tx
y=my-ty
Else
inaktiv=1
EndIf
Else
aktiv=0
inaktiv=0
EndIf
Else
aktiv=0
EndIf
;x=Posx
;y=Posy
;tempx=Temp Variable
;tempy=Temp Variable
;mx=Maus X
;my=Maus Y
;aktiv=Ob die Konsole bewegt wird
;inaktiv=Ob die Konsole nicht bewegt wird


Ich hoffe es hilft...
 

Silbersurfer

BeitragDo, Dez 29, 2005 19:43
Antworten mit Zitat
Benutzer-Profile anzeigen
David schrieb
Zitat:
Ja, ist es. Gosub und Goto sind sehr schlechter Programmierstil und können immer ersetzt werden. Verwende Funktionen und ähnliche Alternativen.


also bei Goto stimme ich zu, bei Gosub nicht! man kann damit auch schöne
Includes machen was auch zur übersichtlichkeit beiträgt und Zweitens sind sie schneller als functionen

nex schrieb
Zitat:
also bei meinem Spiel benutzte ich das hier um eine Konsole im Hauptmenu hin und her zuziehen


ja so wie ich das sehe ist es ehnlich wie meins, aber das Problem welches ich
habe ist die übergabe der mauscoords wenn sie zu schnell bewegt wird,
aber Ich werde deine Variante mal testen danke nex
vieleicht hat da ja doch noch jemand ne Idee wie es einfacher zu lösen ist Rolling Eyes
-------------------------------------------------------
XP 2000+ 512DDR Radeon 9800 XL 340GB HD
Hompage : http://home.arcor.de/silbersurfer01/
Is Bob engine http://home.arcor.de/silbersur.../Isbob.zip
 

Silbersurfer

BeitragDo, Dez 29, 2005 20:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Sorry wegen doppelpost

aber ich habe meinen Fehler gefunden Idea
habe bei dem bewegen des Bildes noch immer die Real x/y coords benutzt statt die abgefragten mx/my coords

so funtz der code !
BlitzBasic: [AUSKLAPPEN]
bild=LoadImage (\"c:\Dokumente und Einstellungen\All Users\Dokumente\Eigene Bilder\Beispielbilder\Wasserlilien.jpg\")
fenster_x=640:fenster_y=480
mal_buffer=CreateImage (fenster_x,fenster_y)
Graphics fenster_x,fenster_y,0,2
SetBuffer ImageBuffer(bild) :GrabImage mal_buffer,0,0:SetBuffer BackBuffer ()
If ImageWidth (mal_buffer) <ImageWidth(bild) restx=ImageWidth(bild)-ImageWidth (mal_buffer)
If ImageHeight (mal_buffer)<ImageHeight (bild) resty=ImageHeight (bild)-ImageHeight (mal_buffer)

Repeat
Gosub mausgrab
DrawBlock mal_buffer,0,0


Flip
Until KeyHit (1)

.mausgrab
If MouseDown(1)
If maus=0
;Maus coords beim ersten click zwischenspeichern
xdummy=MouseX():ydummy=MouseY():maus=1
EndIf
x=MouseX()-xdummy
y=MouseY()-ydummy
mx=imagex-x:my=imagey-y
If mx<0 :mx=0 :Else If mx>restx : mx=restx : EndIf
If my<0 :my=0 :Else If my>resty : my=resty : EndIf
SetBuffer ImageBuffer(bild) :GrabImage mal_buffer,mx,my:SetBuffer BackBuffer ()
Else
If maus=1
imagex=mx
imagey=my
maus=0
EndIf
EndIf
Return


Danke nochmal an allen hier
-------------------------------------------------------
XP 2000+ 512DDR Radeon 9800 XL 340GB HD
Hompage : http://home.arcor.de/silbersurfer01/
Is Bob engine http://home.arcor.de/silbersur.../Isbob.zip

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group