Linux, ist das ein neues Waschmittel?ts-soft hat geschrieben:Nichts, nur es läuft unter Linux nicht![]()

Code: Alles auswählen
;****************************************
;*** WinScreen_Mouse_noAPI.pb
;***
;*** Skeleton for Mouse-Pointer Handling
;*** within a WindowedScreen.
;***
;*** by Kaeru Gaman, Dec.20th,2006
;*** PB Ver 4.02 Win
;*** without WinAPI, maybe adoptable for Linux
;****************************************
#WSrnW = 800
#WSrnH = 600
EnableExplicit
If Not InitSprite()
MessageRequester("Error","No Sprite, Man!", #MB_ICONERROR)
End
EndIf
If Not InitSound()
MessageRequester("Error","No Sound, Man!", #MB_ICONERROR)
End
EndIf
If Not InitKeyboard()
MessageRequester("Error","No Keys, Man!", #MB_ICONERROR)
End
EndIf
If Not InitMouse()
MessageRequester("Error","No Mouse, Man!", #MB_ICONERROR)
End
EndIf
If Not OpenWindow(0, 0, 0, #WSrnW, #WSrnH, "WinScreen_Mouse" , #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget )
MessageRequester("Error","No Window, Man!", #MB_ICONERROR)
End
EndIf
If Not OpenWindowedScreen(WindowID(0), 0, 0, #WSrnW, #WSrnH, 0,0,0 )
MessageRequester("Error","No Screen, Man!", #MB_ICONERROR)
End
EndIf
;*************************************
;**** Prepare Main
;*************************************
Define WinEventID.l
Define EXIT.l = 0 ;Exit-Flag
Define MCur.l = 1 ;Show/Hide Status MousePointer
Define Focus.l = 1 ;Focus-Flag of Game-Window
Define MPOS.COORD ;MousePos
Define MLC.l = 0 ;Mouse LeftClick
Define MRC.l = 0 ;Mouse RightClick
Define Col.l = 0 ;Color for Action
ReleaseMouse(0) ;lock Mouse on screen
MouseLocate(1,1) ;necessary to avoid check-conflicts on start
;**************************************************************************
;**** M A I N - L O O P
;**************************************************************************
Repeat
ExamineKeyboard()
WinEventID = WindowEvent()
;{*** Focus-Test ***
If Not IsScreenActive()
Focus = 0
Else
Focus = 1
EndIf
;}
;*****************************************************
;**** Focus-Check and NoFocus Display
;*****************************************************
If Not Focus
ClearScreen($404040)
StartDrawing(ScreenOutput())
DrawingMode(#PB_2DDrawing_Transparent)
DrawText(100,100,"NoFocus",$C0C0C0)
StopDrawing()
Delay(100)
;*****************************************************
;**** Focus-Only
;*****************************************************
Else
ClearScreen($201008)
;{*** Mouse Status ***
If MCur = 1
ExamineMouse() ; only check screen-mouse when active
MPOS\X = MouseX()
MPOS\Y = MouseY()
MLC = MouseButton(1)
MRC = MouseButton(2)
If MPOS\X = 0 Or MPOS\Y = 0 Or MPOS\X = #WSrnW -1 Or MPOS\Y = #WSrnH -1
MCur = 0
ReleaseMouse(1)
EndIf
Else
MPOS\X = WindowMouseX(0)
MPOS\Y = WindowMouseY(0)
If MPOS\X > 0 And MPOS\Y > 0 And MPOS\X < #WSrnW -1 And MPOS\Y < #WSrnH -1
MCur = 1
ReleaseMouse(0)
MouseLocate(MPOS\X,MPOS\Y) ;necessary, since ReleaseMouse(0) sets screenmouse on 0,0
EndIf
EndIf
;}
;{*** Action ***
If KeyboardPushed(#PB_Key_Space) Or MLC Or MRC
If MLC
Col = $2010C0
ElseIf MRC
Col = $10C020
Else
Col = $808080
EndIf
StartDrawing(ScreenOutput())
FrontColor(Col)
Circle(MPOS\X,MPOS\Y,32)
StopDrawing()
EndIf
;}
;{*** Mouse-Pointer Display ***
If MCur = 1
StartDrawing(ScreenOutput())
FrontColor($20C0C0)
Line(MPOS\X ,MPOS\Y , 24, 16)
Line(MPOS\X ,MPOS\Y , 16, 24)
Line(MPOS\X+24,MPOS\Y+16,-16, -8)
Line(MPOS\X+16,MPOS\Y+24, -8,-16)
StopDrawing()
EndIf
;}
;{*** Escape - Test ***
If KeyboardPushed(#PB_Key_Escape)
EXIT = 1
EndIf
If WinEventID = #PB_Event_CloseWindow : EXIT=1 : EndIf
;}
;*****************************************************
;**** E N D of Focus-Only
;*****************************************************
EndIf
;**************************************************************************
;**** M A I N - L O O P - E N D
;**************************************************************************
FlipBuffers()
Delay(0)
Until EXIT = 1
;*************************************
End
Code: Alles auswählen
;****************************************
;*** WinScreen_Mouse_noAPI.pb
;***
;*** Skeleton for Mouse-Pointer Handling
;*** within a WindowedScreen.
;***
;*** by Kaeru Gaman, Dec.20th,2006
;*** PB Ver 4.02 Win
;*** without WinAPI, maybe adoptable for Linux
;****************************************
#WSrnW = 800
#WSrnH = 600
EnableExplicit
CompilerIf Defined(COORD, #PB_Structure) = #False
Structure COORD
X.w
Y.w
EndStructure
CompilerEndIf
If Not InitSprite()
MessageRequester("Error","No Sprite, Man!", 0)
End
EndIf
If Not InitSound()
MessageRequester("Error","No Sound, Man!", 0)
End
EndIf
If Not InitKeyboard()
MessageRequester("Error","No Keys, Man!", 0)
End
EndIf
If Not InitMouse()
MessageRequester("Error","No Mouse, Man!", 0)
End
EndIf
If Not OpenWindow(0, 0, 0, #WSrnW, #WSrnH, "WinScreen_Mouse" , #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget )
MessageRequester("Error","No Window, Man!", 0)
End
EndIf
If Not OpenWindowedScreen(WindowID(0), 0, 0, #WSrnW, #WSrnH, 0,0,0 )
MessageRequester("Error","No Screen, Man!", 0)
End
EndIf
;*************************************
;**** Prepare Main
;*************************************
Define WinEventID.l
Define EXIT.l = 0 ;Exit-Flag
Define MCur.l = 1 ;Show/Hide Status MousePointer
Define Focus.l = 1 ;Focus-Flag of Game-Window
Define MPOS.COORD ;MousePos
Define MLC.l = 0 ;Mouse LeftClick
Define MRC.l = 0 ;Mouse RightClick
Define Col.l = 0 ;Color for Action
ReleaseMouse(0) ;lock Mouse on screen
MouseLocate(1,1) ;necessary to avoid check-conflicts on start
;**************************************************************************
;**** M A I N - L O O P
;**************************************************************************
Repeat
ExamineKeyboard()
WinEventID = WindowEvent()
;{*** Focus-Test ***
If Not IsScreenActive()
Focus = 0
Else
Focus = 1
EndIf
;}
;*****************************************************
;**** Focus-Check and NoFocus Display
;*****************************************************
If Not Focus
ClearScreen($404040)
StartDrawing(ScreenOutput())
DrawingMode(#PB_2DDrawing_Transparent)
DrawText(100,100,"NoFocus",$C0C0C0)
StopDrawing()
Delay(100)
;*****************************************************
;**** Focus-Only
;*****************************************************
Else
ClearScreen($201008)
;{*** Mouse Status ***
If MCur = 1
ExamineMouse() ; only check screen-mouse when active
MPOS\X = MouseX()
MPOS\Y = MouseY()
MLC = MouseButton(1)
MRC = MouseButton(2)
If MPOS\X = 0 Or MPOS\Y = 0 Or MPOS\X = #WSrnW -1 Or MPOS\Y = #WSrnH -1
MCur = 0
ReleaseMouse(1)
EndIf
Else
MPOS\X = WindowMouseX(0)
MPOS\Y = WindowMouseY(0)
If MPOS\X > 0 And MPOS\Y > 0 And MPOS\X < #WSrnW -1 And MPOS\Y < #WSrnH -1
MCur = 1
ReleaseMouse(0)
MouseLocate(MPOS\X,MPOS\Y) ;necessary, since ReleaseMouse(0) sets screenmouse on 0,0
EndIf
EndIf
;}
;{*** Action ***
If KeyboardPushed(#PB_Key_Space) Or MLC Or MRC
If MLC
Col = $2010C0
ElseIf MRC
Col = $10C020
Else
Col = $808080
EndIf
StartDrawing(ScreenOutput())
FrontColor(Col)
Circle(MPOS\X,MPOS\Y,32)
StopDrawing()
EndIf
;}
;{*** Mouse-Pointer Display ***
If MCur = 1
StartDrawing(ScreenOutput())
FrontColor($20C0C0)
Line(MPOS\X ,MPOS\Y , 24, 16)
Line(MPOS\X ,MPOS\Y , 16, 24)
Line(MPOS\X+24,MPOS\Y+16,-16, -8)
Line(MPOS\X+16,MPOS\Y+24, -8,-16)
StopDrawing()
EndIf
;}
;{*** Escape - Test ***
If KeyboardPushed(#PB_Key_Escape)
EXIT = 1
EndIf
If WinEventID = #PB_Event_CloseWindow : EXIT=1 : EndIf
;}
;*****************************************************
;**** E N D of Focus-Only
;*****************************************************
EndIf
;**************************************************************************
;**** M A I N - L O O P - E N D
;**************************************************************************
FlipBuffers()
Delay(1)
Until EXIT = 1
;*************************************
End
Code: Alles auswählen
; by #NULL
InitSprite()
InitMouse()
ww=600
wh=400
hWin=OpenWindow(0, 50,50,ww,wh, "...")
OpenWindowedScreen( hWin, 0,0,ww,wh, 0,0,0)
mouseCaptured=1
Repeat
ExamineMouse()
mx=MouseX()
my=MouseY()
; --- a mouse acceleration
mx + MouseDeltaX()*0.8 ::: If mx<0 : mx=0 :: ElseIf mx>ww-1 : mx=ww-1 :: EndIf
my + MouseDeltaY()*0.8 ::: If my<0 : my=0 :: ElseIf my>wh-1 : my=wh-1 :: EndIf
MouseLocate(mx,my)
; ---
If mouseCaptured
If mx=0 Or mx=(ww-1) Or my=0 Or my=(wh-1) Or Not IsScreenActive()
mouseCaptured=0
ReleaseMouse(1)
EndIf
Else;If Not mouseCaptured
If WindowMouseX(0)>0 And WindowMouseX(0)<(ww-1) And WindowMouseY(0)>0 And WindowMouseY(0)<(wh-1) And IsScreenActive()
mouseCaptured=1
ReleaseMouse(0)
mx=WindowMouseX(0)
my=WindowMouseY(0)
MouseLocate(mx,my)
EndIf
EndIf
StartDrawing(ScreenOutput())
DrawingMode(#PB_2DDrawing_Outlined | #PB_2DDrawing_Transparent)
If mouseCaptured
;draw a cursor
LineXY(mx-3,my,mx+3,my,$00ff00)
LineXY(mx,my-3,mx,my+3,$00ff00)
EndIf
;debug
DrawText(10,40,"mouseCaptured:"+Str(mouseCaptured),$666666)
StopDrawing()
event = WaitWindowEvent(80)
FlipBuffers()
ClearScreen($333333)
Delay(10)
Until event = #PB_Event_CloseWindow