I am looking for a FPC only scripting language, so Pascalscript is not useful since it requires at least Lazarus. I am using Lua in a complete different way, more like Löve does. (Just have a look at my signature) At the moment I am working on a Lua GUI interpreter which uses fpGUI, so it is possible to use Pascal objects with Lua although it requires a bit of work.
I have to admit that I am coding this not for the average Pascal programmer. (Speaking frankly I wanted to do my own BASIC interpreter but didn't manage to write one, yet). Maybe to better know what I am talking about I'll add an example, first of EGSL:
Code:
screen (800,600,0,"Hello World")
setframetimer (80)
colourkey (0,0,0)
--
sprite={}
sprite.image = createimage (32,32)
sprite.x=320
sprite.y=240
startimagedraw (sprite.image)
colour (255,255,0)
fillcircle (16,16,15)
stopimagedraw()
--
backcolour (50,80,250)
repeat
cls()
key=getkey()
if keystate (274) then
sprite.y=sprite.y+1
end
if keystate (273) then
sprite.y=sprite.y-1
end
if keystate (275) then
sprite.x=sprite.x+1
end
if keystate (276) then
sprite.x=sprite.x-1
end
putimage (sprite.x, sprite.y, sprite.image)
sync()
until key==27
closewindow()
This is a simple sprite example. The advantage of my interpreter is that one can build true stand-alone files because the source can be bound to EGSL.
Now the next example for fpLua (work in progress):
Code:
require ("fpconstants")
function button1_clicked()
labelset (label1, POSITION, 200,200,200,30)
labelset (label1, FONT, "Arial-14:bold")
labelset (label1, TEXT, "You pressed the button!")
end
function button2_clicked()
showform (form2)
end
function button3_clicked()
closeform (form2)
end
function qtnClick()
closeform (form1)
end
form1 = createform()
form (form1, "My Lua Form",640,480)
form2 = createform()
form (form2, "Another window",500,500)
button1 = createbutton (form1)
button (form1, button1, "Test Button", 20, 20, 100, 25, "button1_clicked" )
label1=createlabel (form1)
label (form1, label1, "Hi this is now some longer text.\nCan you read it?",50,50,400,50)
button2 = createbutton (form1)
button (form1, button2, "Another Button", 120, 120, 180, 25, "button2_clicked" )
button3 = createbutton (form2)
button (form2, button3, "Quit Form", 220, 420, 180, 25, "button3_clicked" )
quitBtn = createbutton(form1)
button (form1, quitBtn, "Quit Program", 500,450, 100,25, "qtnClick")
showform (form1)
-- after form1 is closed, freeform is executed ...
freeform (form1)
freeform (form2)
Bookmarks