langinagel wrote:As Fred already asked: what is actually the bug?
And from my tiny experience just the comment:
OK, not all really necessary libraries are checked by the checkinstall.sh script. If you have further special need on audio, video and other special functions, install all libraries of the marked SDL, GTK2 , whatever-series. Then check back, what is left.
If you are annoyed that function parameters do not have the same interpretation as in windows, write a macro / compilerif.
And if you think you might find a better Linux + Windows compiler try whatever Basic or other language. There are many claims but few evidence around.
The problem with the bug handling is depending on the crowds behavior? Well, there IS at least a remarkable bugfixing for Purebasic. I tried other Basics where the shop seemed to be the only living part.
It's not "the bug", there are several.
Let's deal with the biggest… and to that end, just for you, I have written the following code to expand your experiences.
The following code works in Windows®,
but presents a challenge to make it function correctly in Linux when changing from full screen to windowed mode.
I have given up on trying to resize a borderless windowed screen as a workaround.
langinagel, (or any PureBasic guru) if you can find a macro/compilerif work around for this deficiency I would be pleased,
because not having uberbasic graphics window/full screen switching functionality for the Linux programs sucks big time.
Code: Select all
; ********************************
; ***** COORDINATE DISPLAYER *****
; ****** September 10, 2014 *****
; ********************************
Global FULL
STARTINFULL= 0 ; =0 START PROGRAM IN WINDOWED MODE, =1 START PROGRAM IN FULL SCREEN MODE
Procedure CLEARQUESC()
; EMPTIES XEVENT QUEUE AND RETURNS 1 WHEN ESCAPE KEY IS PRESSED
ESCAPE= 0 : ExamineKeyboard() : If KeyboardPushed(#PB_Key_Escape) : ESCAPE= 1 : EndIf
If Not FULL
Repeat
X= WindowEvent() : If X = #PB_Event_CloseWindow : End : EndIf
Until X = 0
EndIf
ProcedureReturn ESCAPE
EndProcedure
Procedure GETOFFKEY()
; EXECUTION STAYS IN THIS PROCEDURE UNTIL USER RELEASES ALL KEYBOARD KEYS
ONKEY= 1
Repeat
Delay(20) : CLEARQUESC() : ExamineKeyboard()
If Not KeyboardPushed(#PB_Key_All) : ONKEY= 0 :EndIf
Until Not ONKEY
EndProcedure
; MAIN LOOP INITIALIZATION
LoadFont(1,"Arial",19,#PB_Font_Bold|#PB_Font_HighQuality)
#FLAGS= #PB_Window_ScreenCentered|#PB_Window_MinimizeGadget
; SETUP DEVICES
InitSprite()
If STARTINFULL
FULL= 1 : OpenScreen(800,600,32,"SOFTWARE")
SPACMES$= "PRESS THE SPACE BAR FOR WINDOW"
Else
FULL= 0 : OpenWindow(0,0,0,800,600,"SOFTWARE",#FLAGS)
OpenWindowedScreen(WindowID(0),0,0,800,600,#True,0,0)
SPACMES$= "PRESS SPACE BAR FOR FULL SCREEN"
EndIf
InitKeyboard() : InitSound() : NUMJOY= InitJoystick() : JX0= 0 : JY0= 0
; END DEVICE INITIALIZATIONS, INITIALIZE INTERFACE CONTROL VARIABLES
MX= 799 : MY= 599 : PX= Random(MX) : PY= Random(MY)
BYEBYE= 0 ; PROGRAM WILL END WHEN BYEBYE IS SET
SPACMES= ElapsedMilliseconds()+ 5000 ; DISPLAY WINDOW TOGGLE MESSAGE FOR FIVE SECONDS
ACC= 200 ; INITIAL CURSOR MOVE DELAY
Repeat ; THE PROGRAM'S MAIN LOOP STARTS HERE
RELEASE= ElapsedMilliseconds()+ ACC ; LIMITS LOOP SPEED TO 5 Hz
; GATHER THIS LOOP ITERATION'S USER INPUT STATE VARIABLES FROM SYSTEM
ExamineKeyboard()
If NUMJOY : ExamineJoystick(0)
JX0= JoystickAxisX(0,0,#PB_Absolute) + JoystickAxisX(0,1,#PB_Absolute) + JoystickAxisX(0,2,#PB_Absolute)
JY0= -JoystickAxisY(0,0,#PB_Absolute) + JoystickAxisY(0,1,#PB_Absolute) + JoystickAxisY(0,2,#PB_Absolute)
EndIf
; PROCESS USER INPUT
If KeyboardPushed(#PB_Key_Escape) : BYEBYE+ 1 : EndIf ; EXIT PROGRAM UNCONDITIONALLY WHEN USER PRESSES ESCAPE
If KeyboardPushed(#PB_Key_Space) ; TOGGLE WINDOW
GETOFFKEY() : CloseScreen()
If FULL
FULL= 0 : OpenWindow(0,0,0,800,600,"SOFTWARE",#FLAGS)
OpenWindowedScreen(WindowID(0),0,0,800,600,#True,0,0) : CLEARQUESC()
Else
FULL= 1 : OpenScreen(800,600,32,"SOFTWARE")
EndIf
EndIf
; HERE COORDINATE THE ARROW KEYS/GAMEPAD TRACKING
UP= 0 : RIGHT= 0 : DOWN= 0 : LEFT= 0
If KeyboardPushed(#PB_Key_Up) Or (JY0 = 1) : UP= 1 : EndIf
If KeyboardPushed(#PB_Key_Right) Or (JX0 = 1) : RIGHT= 1 : EndIf
If KeyboardPushed(#PB_Key_Down) Or (JY0 = -1) : DOWN= 1 : EndIf
If KeyboardPushed(#PB_Key_Left) Or (JX0 = -1) : LEFT= 1 : EndIf
If UP+RIGHT+DOWN+LEFT > 0
RELEASE= ElapsedMilliseconds()+ ACC
If ACC > 20 : ACC-20 : EndIf
If UP
If PY > 0 : PY-1 : EndIf
Else
If DOWN
If PY < MY : PY+1 : EndIf
EndIf
EndIf
If LEFT
If PX > 0 : PX-1 : EndIf
Else
If RIGHT
If PX < MX : PX+1 : EndIf
EndIf
EndIf
Else
ACC= 200
EndIf
; EMPTY EVENT QUEUE ONE LAST TIME BEFORE GRAPHICS CONSTRUCTION
CLEARQUESC()
; POPULATE THE 800x600 SCREEN BASED ON PX, PY POINTER VARIABLES
StartDrawing(ScreenOutput()) : DrawingMode(#PB_2DDrawing_Transparent) : DrawingFont(FontID(1))
Box(0,0,800,600,$111144)
DrawText(40,40,"(0,0)",$8888FF) : LineXY(40,40,0,0,$8888FF)
DrawText(40,530,"(0,599)",$8888FF) : LineXY(40,560,0,599,$8888FF)
DrawText(675,40,"(799,0)",$8888FF) : LineXY(752,40,799,0,$8888FF)
DrawText(650,530,"(799,599)",$8888FF) : LineXY(760,560,799,599,$8888FF)
Box(250,225,275,110,$000000)
DrawText(275,250,"Pointer's X @ "+Str(PX),$8888FF)
DrawText(275,280,"Pointer's Y @ "+Str(PY),$8888FF)
If ElapsedMilliseconds() < SPACMES : DrawText(145,530,SPACMES$,$333377) : EndIf
; MAKE CROSSHAIR POINTER
If PY > 10 And PX > 0 And PX < 799 : Box(PX-1,PY-11,3,10,$FFFFFF) : EndIf
If PY < 589 And PX > 0 And PX < 799 : Box(PX-1,PY+1,3,10,$FFFFFF) : EndIf
If PX > 10 And PY > 0 And PY < 599 : Box(PX-11,PY-1,10,3,$FFFFFF) : EndIf
If PX < 789 And PY > 0 And PY < 599 : Box(PX+1,PY-1,10,3,$FFFFFF) : EndIf
StopDrawing() : FlipBuffers()
; LOOP SPEED LIMIT
If ElapsedMilliseconds() < RELEASE
Repeat : Delay(2) : Until ElapsedMilliseconds() > RELEASE
EndIf
Until BYEBYE
End
Kuron wrote:heartbone: I can understand your frustrations. Unfortunately, if you want a BASIC for Linux, there are not a lot of options out there, especially for games. You really only have PureBasic and BlitzMax, and for both languages, Linux is the weakest link for reasons others have stated in this thread.
I do not believe the reasons as posted in this thread are technically valid.
If financial factors are truly involved in the tech support prioritization, then Linux is likely doomed to perpetual poor support.