Maus im vollbild

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Maus im vollbild

Beitrag von zigapeda »

wenn ich eine Maus im vollbild anzeigen möchte mache ich das so:

Code: Alles auswählen

InitSprite()
InitKeyboard()
InitMouse()

OpenScreen(1024,768,32,"")

LoadSprite(0,"Data\Sprites\Mouse.bmp")

Repeat
FlipBuffers()
ExamineKeyboard()
ExamineMouse()
ClearScreen(255,255,255)
StartDrawing(ScreenOutput())
DisplaySprite(0,MouseX(),MouseY())
StopDrawing()
Until KeyboardPushed(#pb_key_escape)
was ist daran falsch?
Benutzeravatar
Hroudtwolf
Beiträge: 1416
Registriert: 30.10.2004 23:33
Kontaktdaten:

Beitrag von Hroudtwolf »

Code: Alles auswählen

InitSprite()
InitKeyboard()
InitMouse()

OpenScreen(1024,768,32,"")

LoadSprite(0,"Data\Sprites\Mouse.bmp")
TransparentSpriteColor (0,255,0,255); Rosa als Transparente Farbe

Repeat
FlipBuffers()
ClearScreen(0,0,0)
ExamineKeyboard()
ExamineMouse()
DisplayTransparentSprite(0,MouseX(),MouseY())

Until KeyboardPushed(#pb_key_escape) 
glubschi90
Beiträge: 274
Registriert: 04.09.2004 01:43
Wohnort: Würzburg

Beitrag von glubschi90 »

Genau: Start bzw. Stopdrawing() werden bei Sprite-Befehlen nicht benötigt!
PureBasic 4.30
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von zigapeda »

Ok bei mir funktionierts jetzt auch danke
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von zigapeda »

jetzt hab ich die maus und wie kann ich jetzt feststellen ob ein bestimmter bereich angeklickt wurde?

Code: Alles auswählen

If MouseButton(1) And MouseX() > 30 And MouseX() < 210 And MouseY() > 30 And MouseY() < 46
StartDrawing(ScreenOutput())
Box(230,30,774,250,RGB(65,155,65))
StopDrawing()
endIf
funktioniert nicht
Benutzeravatar
Hroudtwolf
Beiträge: 1416
Registriert: 30.10.2004 23:33
Kontaktdaten:

Beitrag von Hroudtwolf »

Ein Spritecollison währe eine Sache.

Code: Alles auswählen

if SpriteCollision (Maus,MausX,MausY,Sprite,Spritex,Spritey)
gedrueckt=1
endif 
Wenn es aber wirklich ein Bereich sein soll. Musst du das aus den Koordinaten der Maus und des Bereichs berechnen.
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von zigapeda »

wenn das nicht andest geht, also mit dem bereich, schreib ich mir meine eigene funktion aber trotzdem danke
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von zigapeda »

Jetzt hab ich noch ein problem mit der funktion:

Code: Alles auswählen

Procedure Mausklick(x,y,width,height)
If MouseButton(1)
  If MouseX() >= x
    If MouseX() <= width + x
      If MouseY() >= y
        If MouseY() <= height + y
          ;Hier soll Mausklick = 1 sein
        Else
          ;Hier soll mausklick = 0 sein
        EndIf
      EndIf
    EndIf
  EndIf
Endif
endprocedure
Wenn ich schreibe:

Code: Alles auswählen

If Mausklick(30,30,30,30) = 1
;Programmteil
Endif[code]
glubschi90
Beiträge: 274
Registriert: 04.09.2004 01:43
Wohnort: Würzburg

Beitrag von glubschi90 »

Code: Alles auswählen

Procedure Mausklick(x,y,width,height,Button)
  mx=MouseX()
  my=MouseY()
  If mx >= x And mx <= width + x And my >= y And my <= height + y
    If MouseButton(Button)
              
              ;...
              
    Else
              
              ;...
              
    EndIf
  EndIf
EndProcedure
PureBasic 4.30
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Manoman, bei mir funktioniert das aber doch O_o

Code: Alles auswählen

InitSprite()
InitKeyboard()
InitMouse()

OpenScreen(1024,768,32,"")

CreateSprite(0,2, 2)
StartDrawing(SpriteOutput(0))
Box(0, 0, 2, 2, $FF0000)
StopDrawing()
TransparentSpriteColor (0,255,0,255); Rosa als Transparente Farbe

Repeat
FlipBuffers()
ClearScreen(0,0,0)
ExamineKeyboard()
ExamineMouse()
StartDrawing(ScreenOutput())
Box(30,30,210,46,RGB(196, 196, 196))
Locate(30, 30)
DrawingMode(1)
DrawText("Hier geklickt lassen")
StopDrawing()
DisplayTransparentSprite(0,MouseX(),MouseY())
If MouseButton(1) And MouseX() > 30 And MouseX() < 210 And MouseY() > 30 And MouseY() < 46
StartDrawing(ScreenOutput())
Box(230,30,774,250,RGB(65,155,65))
StopDrawing()
EndIf

Until KeyboardPushed(#pb_key_escape)
Fahr mit der Maus über den sichtbaren Kasten und lass die linke Maustaste gedrückt.

Achja: und schalt den debugger aus, der macht den Fehler!
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Antworten