fb:porticula NoPaste
16.5: FreeBASIC-Funktion im Skript einbinden
Uploader: | nemored |
Datum/Zeit: | 24.08.2013 16:54:12 |
Hinweis: Dieser Quelltext ist Bestandteil des Projekts OpenBook: 2D-Spieleprogrammierung, zu dem es auf FreeBASIC-Portal.de eine Projektseite gibt.
' *** CODE 16.5: FreeBASIC-Funktion im Skript einbinden
' **********************
' * FreeBASIC-Programm *
' **********************
#include once "Lua/lua.bi"
#include once "Lua/lauxlib.bi"
#include once "Lua/lualib.bi"
function minmax cdecl (byval L as lua_State ptr) as long
dim numpar as integer
dim i as integer
dim num as double
dim maxnum as double
dim minnum as double
' Anzahl der Parameter ermitteln
numpar = lua_gettop(L)
' Alle Parameter auslesen und auswerten
minnum = lua_tonumber(L, 1)
maxnum = lua_tonumber(L, 1)
for i = 1 to numpar
' Parameter aus dem Stack holen
num = lua_tonumber(L, i)
if num > maxnum then maxnum = num
if num < minnum then minnum = num
next i
' Ergebnis auf den Stack legen
lua_pushnumber(L, minnum)
lua_pushnumber(L, maxnum)
' Anzahl der Parameter zurueckgeben
return 2
end function
dim Lua as lua_State ptr
Lua = luaL_newstate
luaopen_base(Lua) ' "base lua library" laden (fuer 'print')
lua_register(Lua, "MinMax", @minmax) ' FB-Funktion fuer Lua registrieren
if luaL_dofile(Lua, "minmax.lua") then
print "Skriptfehler: " & *lua_tostring(Lua, -1)
end if
lua_close Lua ' Lua-Status freigeben
getkey
' **********************
' * Lua-Script *
' **********************
Min, Max = MinMax(42, 2, 17, 33, 15, 1.5)
print("Lua: Min= ", Min, ", Max= ", Max, "\n")