Maus verschwindet bei ExamineMouse()

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Tur0k
Beiträge: 187
Registriert: 16.02.2009 21:41
Computerausstattung: 4.00 GB RAM, 2x 2.20Ghz, 340GB+500GB

Maus verschwindet bei ExamineMouse()

Beitrag von Tur0k »

Hallo Community!

Wenn ich in meinem Code ExamineMouse() verwende, dann verschwindet die Maus. o.0

Sub: DirectX9
Hier der Code:

Code: Alles auswählen

UseJPEGImageDecoder()
UseTGAImageDecoder()
UsePNGImageDecoder()
UseTIFFImageDecoder()

If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0
  MessageRequester("Error", "Can't open the sprite system", 0)
  End
EndIf

If InitSprite3D() = 0
  MessageRequester("Error", "Sprite3D system can't be initialized correctly", 0)
  End
EndIf

    PlayerX = 0
    PlayerY = 0
    

If OpenWindow(0, 0, 0, 700, 500, "Turoks Engine", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

  If OpenWindowedScreen(WindowID(0), 0, 0, 700, 500, 0, 0, 0)
 
   
  Else
    MessageRequester("Error", "Can't open windowed screen!", 0)
    End
  EndIf

EndIf
   
Repeat

  Repeat

    Event = WindowEvent()
   
    Select Event
      Case #PB_Event_CloseWindow
        Quit = 1
    EndSelect
   
  Until Event = 0
 
  ExamineKeyboard()
  ExamineMouse()
  Delay(10)
    ; ------------------------------------------------
    If KeyboardPushed(#PB_Key_W)
    PlayerY = PlayerY - 1
    EndIf
    ; ------------------------------------------------
    If KeyboardPushed(#PB_Key_S)
    PlayerY = PlayerY + 1 
    EndIf
    ; ------------------------------------------------
    If KeyboardPushed(#PB_Key_A)
    PlayerX = PlayerX - 1
    EndIf
    ; ------------------------------------------------
    If KeyboardPushed(#PB_Key_D)
    PlayerX = PlayerX + 1
    EndIf
    
    ; ------------------------------------------------
    ClearScreen(RGB(0,0,0))
    ; ------------------------------------------------
    ; Person
    If person$ = ""
    person$ = "player.png"
    EndIf
    If Start3D()
    LoadSprite(0, person$, #PB_Sprite_Texture)
    
    CreateSprite3D(0, 0)
    
    MauX = MouseX() : MauY = MouseY()
     
    b.f = 3.14159265/180 
    al.f = ATan((playery-MauY)/(playerx-MauX))/b
    If MauX-Playerx < 0 : al = al + 180 : EndIf
    If MauX-Playerx = 0 :
    If (MauY-Playery)<0 : al = -90 : EndIf
    If (MauY-Playery)>0 : al = 90 : EndIf
    EndIf
  
    RotateSprite3D(0, al, 1)
    
    DisplaySprite3D(0, PlayerX, PlayerY)
    
    Stop3D()
    EndIf
    
    SetWindowTitle(0, "Spieler Position: " +  " X: " + StrF(PlayerX) +  "      " + " Y: " + StrF(PlayerY)) 
    
    PPosX=PlayerX
    PPosY=PlayerY
    ; ------------------------------------------------
   
  FlipBuffers()

Until  Quit Or KeyboardPushed(#PB_Key_Escape) 
Mfg. Tur0k
buuh* :D
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Sicherlich verschwindet sie da du dann DirectInput benutzt und nicht mehr die Windows Maus. Für einen Cursor kannst du aber ein Sprite nehmen und mittels MouseX()/MouseY() positionieren.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
Tur0k
Beiträge: 187
Registriert: 16.02.2009 21:41
Computerausstattung: 4.00 GB RAM, 2x 2.20Ghz, 340GB+500GB

Beitrag von Tur0k »

Thx
Wäre es aber möglich die normale Windows Maus zu nutzen?
buuh* :D
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Ja gibt es, mittels API. Ich hab' jetzt aber kein Bock was zu basteln. Es gibt da aber ein Beispiel von netmaestro ausm Englischen Forum. Frag mal Kaeru, der was was ich meine.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
Tur0k
Beiträge: 187
Registriert: 16.02.2009 21:41
Computerausstattung: 4.00 GB RAM, 2x 2.20Ghz, 340GB+500GB

Beitrag von Tur0k »

Danke, hab die Lösung gefunden! :D

Code: Alles auswählen

  ShowCursor_(1)
Nun wäre das Problem, das meine Maus nur im Fenster bleibt.

Könnte ich das ändern?
Zuletzt geändert von Tur0k am 05.06.2009 21:00, insgesamt 1-mal geändert.
buuh* :D
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Beitrag von X360 Andy »

Die frage hat mich auch schon länger intressiert...
Da ich lieber sowas habe wie in Flashgames, das nur meine Mauseingaben registriert werden wenn ich im Fenster bin, und mich frei rausbewegen kann ohne an das Fenster gebunden zu sein.
Benutzeravatar
jojo1541
Beiträge: 431
Registriert: 15.09.2007 17:12
Wohnort: Irgendwo im Nirgendwo

Beitrag von jojo1541 »

bei einem Screen im Fenster bleibt die Maus doch sowieso da.

Die Koordinaten kann man dann mit WindowMouseX(#Window) und WindowMouseY(#Window) ganz ohne die mauslib abfragen.
Zuletzt geändert von jojo1541 am 05.06.2009 21:10, insgesamt 2-mal geändert.
Ich verkaufe Rechtschreibfehler und jede menge GROßBUCHSTABEN. Alles unbegrenzt zu haben.
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Beitrag von X360 Andy »

Wow auf diese Idee bin ich ja noch gar nicht gekommen :?


Thx
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Meine Maus liegt auf ihrem Pad und will nicht verschwinden :freak:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag von Andesdaf »

ts-soft hat geschrieben:Meine Maus liegt auf ihrem Pad und will nicht verschwinden :freak:
Meine Maus rutscht auf ihrem Pad umher und will nicht aufhören :mrgreen:
Win11 x64 | PB 6.20
Antworten