地主家的好儿子 发表于 2023-2-27 11:09:13

Casio 的编译环境使用起来太痛苦了


Casio fx9860 编译环境使用太痛苦 使用不习惯C语言的我是种折磨
新版的9750已经可以支持usb插拔交换数据 直接读取文本文件经测可行
所以从开发流程的角度来说,基于“设计-C语言-虚拟机仿真-真机运行” 效率还是存在问题

考虑到用Lua封装fxapi ,爬过很多了坑之后,终于让屏幕上显示出字符,
lua 的api基本和sdk一致

常见函数:(逐渐更新中)
locate(x,y)
print("..",x,y)
key() 阻塞的输入函数
iskeydown(a,b) 无阻塞的输入函数 基于sh4版本

还有一些简单的图形函数 如line rectangle cycle clear buffer_blit等
lua_register(L, "locate", lua_locate);
    //print
    lua_register(L, "print", lua_print);
    lua_register(L, "printi", lua_printi);
    lua_register(L, "printr", lua_printr);
    lua_register(L, "iskeydown", lua_keydown);
    //graphics
    lua_register(L, "line", lua_drawline);
    lua_register(L, "key", lua_getKey);
    lua_register(L, "clear",lua_clear_screen);
    lua_register(L, "sleep", lua_sleep);针对lua调试做了优化,如果遇到语法错误,会显示在屏幕上

先不谈运行效率问题,直接上图


设计-lua平台编码-真机运行 实现一个简单文本浏览功能 代码看起来比Python要简洁,对缩进要求没有那么严格,
只是学习贴 不谈效率 更不谈优化 没有任何实用价值 完善后开源


edit = {
        cx = 3,
        cy = 1,
        t = 1
}

content = {
        "VVVVV somthing",
        "forexample"
}

function drawcaret()
        if math.abs(math.ceil(math.sin(edit.t/10.0))) == 1 then
                locate(edit.cx,edit.cy)
                print("_")
        end       
end

function draw()

        clear()

        for i,v in ipairs(content) do
                locate(1,i)
                print(v)
        end

        toolbar()
        drawcaret()
end

function toolbar()
        locate(1,8)
        printr("F_1")
        locate(5,8)
        printr("F_2")
        locate(9,8)
        printr("F_3")
end

while (true) do
        k = key()

        if iskeydown(2,9) then --up
                if edit.cy > 1 then
                        edit.cy = edit.cy - 1
                end
        end

        if iskeydown(3,8) then --down
                if edit.cy < #content then
                        edit.cy = edit.cy + 1
                end
        end

        if iskeydown(3,9) then --left
                if edit.cx > 1 then
                        edit.cx = edit.cx - 1
                end
        end

        if iskeydown(2,8) then --right
                edit.cx = edit.cx + 1
        end

        draw()
        sleep(1)

        edit.t = edit.t + 1
        if edit.t>10000 then
                edit.t = 0
        end

end


wsmslgh 发表于 2023-3-1 08:39:51

厉害厉害, 求开源

mrlgs 发表于 2023-3-3 08:10:56

不错呦,前排支持一下

地主家的好儿子 发表于 2023-3-9 11:17:31

女神节重要更新
分割线
---------------------------------------------------------------------
内置16*16中文常用点阵字库 6690简体中字 再也不需要为中文显示而烦恼了
新增两个函数
function print_line(x,y,str)
print_char(x,y,a0,a1)
a0,a1对应于中文的cp936编码

bioafanda 发表于 2023-3-15 08:39:49

厉害厉害。

Myth 发表于 2023-3-15 16:29:52

熟悉 GNU 那一套用 gint 还挺方便的
https://www.cncalc.org/thread-25230-1-1.html

地主家的好儿子 发表于 2023-3-31 14:21:11

本帖最后由 地主家的好儿子 于 2023-3-31 14:25 编辑

4月1日前重要更新
分割线
--------------------------------------
内置动画库 类似于tween或flux的动画库 CTween

这样做动画就方便很多了
一样将cwteen 放在与main.lua同一位置
local ctween = require “ctween”
api 参考
ctween.to(obj, time, vars) 添加动画
ctween.update(dt)动画更新对象,写在update中

mrlgs 发表于 2023-4-1 21:02:20

地主家的好儿子 发表于 2023-3-31 14:21
4月1日前重要更新
分割线
--------------------------------------


厉害,怎么实现的啊

a2628109 发表于 2023-4-3 22:31:53

前排,楼主优秀
页: [1]
查看完整版本: Casio 的编译环境使用起来太痛苦了