Bild auf Benutzeroberfläche bewegen?
Verfasst: 10.06.2013 02:54
Kann man ein Bild auf der Benutzeroberfläche automatisch bewegen oder auch per Tastatur-und Mauseingabe bewegen lassen, ähnlich wie ein Sprite im Screen?
Grüße
Grüße
Das deutsche PureBasic-Forum
https://www.purebasic.fr/german/
Code: Alles auswählen
img=CreateImage(#PB_Any,50,50)
StartDrawing(ImageOutput(img))
Box(0,0,50,50,#Red)
Circle(25,25,24,#Yellow)
Ellipse(25,28,12,5,#Black)
Ellipse(25,26,14,5,#Yellow)
Ellipse(15,15,3,5,#Black)
Ellipse(35,15,3,5,#Black)
StopDrawing()
win=OpenWindow(#PB_Any,0,0,400,400,"test",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
ig=ImageGadget(#PB_Any,0,0,50,50,ImageID(img))
tim=1
AddWindowTimer(win,tim,333)
Repeat
event=WaitWindowEvent()
etimer=EventTimer()
Select event
Case #PB_Event_CloseWindow
quit+1
Case #PB_Event_Timer
Select etimer
Case tim
ResizeGadget(ig,Random(350),Random(350),#PB_Ignore,#PB_Ignore)
EndSelect
EndSelect
Until quit
End
Code: Alles auswählen
Enumeration
#FENSTER_HAUPT
#BILD_spielmap_DATEI
#BILD_spielmap_ANZEIGE
#BILD_mario_ANZEIGE
#mario
EndEnumeration
Repeat
#FLAGS = #PB_Window_SystemMenu | #PB_Window_ScreenCentered
If OpenWindow(#FENSTER_HAUPT, 0, 0, 800, 600, "Test", #FLAGS)
LoadImage(#BILD_spielmap_DATEI, "landschaft.bmp")
ImageGadget(#BILD_spielmap_ANZEIGE, 0, 0, 800, 600, ImageID(#BILD_spielmap_DATEI), #PB_Image_Border)
LoadImage(#mario, "mario.bmp")
ImageGadget(#BILD_mario_ANZEIGE, 50, 300, 50, 50, ImageID(#mario), #PB_Image_Border)
Repeat
ResizeGadget(#mario, 150, 100, #PB_Ignore, #PB_Ignore)
KeyboardPushed(#PB_Key_W)
x = x + 1
If x = > 100
x = 0
EndIf
FlipBuffers()
ExamineKeyboard()
Until Ereignis = #PB_Event_CloseWindow Or Beenden = #True
EndIf
End
ForEver
Code: Alles auswählen
Enumeration
#FENSTER_HAUPT
#BILD_spielmap_DATEI = 0
#BILD_spielmap_ANZEIGE
#BILD_mario_ANZEIGE
#mario
EndEnumeration
#FLAGS = #PB_Window_SystemMenu | #PB_Window_ScreenCentered
Define.f X, Y
If OpenWindow(#FENSTER_HAUPT, 0, 0, 800, 600, "Test", #FLAGS)
LoadImage(#BILD_spielmap_DATEI, "landschaft.bmp")
ImageGadget(#BILD_spielmap_ANZEIGE, 0, 0, 800, 600, ImageID(#BILD_spielmap_DATEI), #PB_Image_Border)
LoadImage(#mario, "mario.bmp")
ImageGadget(#BILD_mario_ANZEIGE, 50, 300, 50, 50, ImageID(#mario), #PB_Image_Border)
Repeat
Ev = WaitWindowEvent(2)
If GetAsyncKeyState_(#VK_W)
Y-0.1
EndIf
If GetAsyncKeyState_(#VK_S)
Y+0.1
EndIf
If GetAsyncKeyState_(#VK_A)
X-0.1
EndIf
If GetAsyncKeyState_(#VK_D)
X+0.1
EndIf
ResizeGadget(#BILD_mario_ANZEIGE, X, Y, #PB_Ignore, #PB_Ignore)
Until Ev = #PB_Event_CloseWindow
EndIf
End
Code: Alles auswählen
LoadImage(#pixelmann, "pixelm.bmp")
ig=ImageGadget(#BILD_pixelmann_ANZEIGE, 50, 300, 50, 50, ImageID(#pixelmann), #PB_Image_Border)
LoadImage(#BILD_spielmap_DATEI, "landschaft.bmp")
ImageGadget(#BILD_spielmap_ANZEIGE, 0, 0, 800, 600, ImageID(#BILD_spielmap_DATEI), #PB_Image_Border)
lauf=1
AddWindowTimer(win,lauf,333)
Repeat
Ereignis.i = WaitWindowEvent()
etimer=EventTimer()
Select Ereignis
Case #PB_Event_Timer
Select etimer
Case lauf
ResizeGadget(ig,Random(350),Random(350),#PB_Ignore,#PB_Ignore)
EndSelect
EndSelect
Until Ereignis = #PB_Event_CloseWindow Or Ende = #True
End
EndIf
Code: Alles auswählen
ig=ImageGadget(#BILD_pixelmann_ANZEIGE, 50, 300, 50, 50, ImageID(#pixelmann), #PB_Image_Border)
Code: Alles auswählen
ResizeGadget(ig,Random(350),Random(350),#PB_Ignore,#PB_Ignore)
Code: Alles auswählen
ResizeGadget(#BILD_pixelmann_ANZEIGE,Random(350),Random(350),#PB_Ignore,#PB_Ignore)
Übrigens : Wenn man in der IDE alles markiert und STRG i drückt, dann wird es meist nett formatiert
Code: Alles auswählen
define.f x, y
Repeat
Ereignis.i = WaitWindowEvent()
etimer=EventTimer()
Select Ereigns
Case #PB_Event_Timer
Select etimer
Case lauf
ResizeGadget(#BILD_pixelmann_ANZEIGE,x,y,#PB_Ignore,#PB_Ignore)
For var=x To 300 Step 1
Next
EndSelect
EndSelect
wird immer NULL sein. Innerhalb einer Ereignisschleife darfst Du selbstverständlich keine 300stufige Bewegung einbauen, sondern immer nur eine einzige Stufe. Die Umkehrpunkte mußt Du selbst bestimmen, auswerten und danach die Bewegungsrichtung bestimmen. Zuletzt: Wo ist die Anweisung zur Neupositionierung?NeoRon hat geschrieben: Select Ereigns