其实就是CLGO语言内置了CAPI.DLL,只有19KB,但比批处理功能强很多。运行速度是批处理的5倍,适合做控制台游戏开发。总之CAPI能做到,CAPIS脚本解释器都能做,并且CAPIS不需要cmd也能运行,支持直接拖拽运行脚本。由于之前已经开源了CLGO解释的代码,就不再重复贴码了,只是内嵌了一个capi而已。- 控制台C版API调用解释器,支持IF~ELIF、WHILE、FOR等条件循环语句,可用的内建命令
- 有"CAPI", "LINK", "STOP", "EXIT", "WAIT", "PAUSE", "PRINT", "LETS", "CLEAN", "CLS"。
-
- 可以实现跟CAPI完全一样的API调用效果,但比CAPI的批处理速度快5倍。非常接近原生C语言的速度,且支持浮点数,表达式类传参。
复制代码 下载:http://bcn.bathome.net/s/tool/index.html?key=CAPIS
简单的应用,弹出对话框:- FUN MAIN
- LINK L"USER32" L"KERNEL32"
- CAPI =MessageBoxW 0 L"你好" L"message" 1
复制代码 控制台图显:- FUN DRAW :HICON :HCMD :HDC
- LINK L"USER32" L"KERNEL32"
- CAPI :HICON=LoadImageW 0 L"1.ico" 1 0 0 16
- CAPI :HCMD =GetConsoleWindow
- CAPI :HDC =GetDC :HCMD
- FOR ::A 1 1000
- [
- CAPI =DrawIconEx :HDC ::A*2 0 :HICON 128 128 0 0 3
- CAPI =Sleep 20
- CLEAN
- CLS
- ]
-
- FUN MAIN
- DRAW 0 0 0
- PAUSE
复制代码 当然非常推荐使用开源的tincs,它才是能在批处理中原生书写C代码的解释器http://www.bathome.net/thread-42497-1-2.html
类似功能的还有ICMD,一个还在完善的项目,http://www.bathome.net/thread-43259-1-1.html
ICMD脚本,挖地道- ::*****************************************************************************
- @IF [%1]==[] ("%~DP0ICMD.EXE" /C "%~F0" 1&EXIT)&@REM ICMD SCRIPT 2017~2019
- ::*****************************************************************************
-
- @echo off
- REM 初始化库文件
- set/f=LinkDllW L"USER32" L"KERNEL32" L"MSVCRT"
-
- set/f hIcon0=LoadImageW 0 L"graphcs\_p0.ico" 1 0 0 16
- set/f hIcon1=LoadImageW 0 L"graphcs\_p1.ico" 1 0 0 16
- set/f hIcon2=LoadImageW 0 L"graphcs\_p2.ico" 1 0 0 16
- set/f hIcon3=LoadImageW 0 L"graphcs\_p3.ico" 1 0 0 16
- set/f wIcon =LoadImageW 0 L"graphcs\_b.ico" 1 0 0 16
- set/f bIcon =LoadImageW 0 L"graphcs\_w.ico" 1 0 0 16
-
- set/f hCMD =GetConsoleWindow
- set/f hDC =GetDC %hCMD%
-
- REM 绘制背景地图
- for /l %%i in (0,32,800) do (
- for /l %%j in (0,32,600) do (
- set/f =DrawIconEx %hDC% %%i %%j %bIcon% 32 32 0 0 3
- )
- )
-
- REM 绘制起点人物
- set/a "X=0,Y=0, hIcon=hIcon3"
- set/f =DrawIconEx %hDC% %X% %Y% %hIcon% 32 32 0 0 3
-
- REM 循环读取按键
- :LOOP
- SET/A "PREX=X, PREY=Y"
- set/f key=_getch
- if %key% geq 97 (set/a key-=32)
- if %key% equ 87 (set/a Y-=32,hIcon=hIcon1)
- if %key% equ 83 (set/a Y+=32,hIcon=hIcon3)
- if %key% equ 65 (set/a X-=32,hIcon=hIcon0)
- if %key% equ 68 (set/a X+=32,hIcon=hIcon2)
- set/f =DrawIconEx %hDC% %PREX% %PREY% %wIcon% 32 32 0 0 3
- set/f =DrawIconEx %hDC% %X% %Y% %hIcon% 32 32 0 0 3
- goto LOOP
复制代码
|