“易语言.飞扬”做的电子板(含源代码),作者大伟

2019-04-14 19:26发布

“易语言.飞扬”做的电子板 下载地址(含源代码):http://bbs.dywt.com.cn/dispbbs.asp?boardID=148&ID=146448&page=1     此“易语言.飞扬”程序的完整源代码请到论坛下载,以下是部分核心代码: 公开 类 电子板
{
    公开 窗口场景 场景;
    公开 整数[] 板数组;
    位图 位图1,位图2;
    
    公开 初始化(用户界面.面板 面板)
    {
        场景
=创建 窗口场景(面板);
        板数组
=创建 整数[设置.电子板宽][设置.电子板高];//初始状态=0
        位图1=创建 位图();
        位图1.加载(
"pic暗.bmp",位图类型.BMP);
        位图2
=创建 位图();
        位图2.加载(
"pic亮.bmp",位图类型.BMP);
        文本 ccc
=辅助类.取当前目录();
    }

    刷新电子板()
    {
        整数 a,b,x,y;
        计次循环(设置.电子板宽,a)
        {
            计次循环(设置.电子板高,b)
            {
                x
=10+a*设置.灯宽;y=10+b*设置.灯高;
                如果(板数组[a][b]
==0) 场景.画位图(位图1,x,y,真);
                否则 场景.画位图(位图2,x,y,真);
            }
        }
    }

    公开 重置电子板()
//重置电子板为白灯状态
    {
        板数组.清零();
        刷新电子板();
    }

    公开 显示(文本 显示文本)
    {
        整数 数字,汉字,x,行,列,a,b,c;
        文本 字,文本;
        计次循环(显示文本.长度(),x)
        {
            字
=显示文本.中间(x,1);
            假如(字)
            {
                为 
"#","1","2","3","4","5","6","7","8","9","0",":":文本=取数字字模(字);数字++;
                为其他:文本
=取汉字字模(字);汉字++;
            }
            c
=0;
            如果(文本.长度()
==16*16)
            {
                如果(汉字
<=设置.电子板宽/16)
                {
                    列
=汉字-1;
                    行
=0;//汉字部分从0行开始
                    计次循环(16,a)
                    {
                        计次循环(
16,b)
                        {
                            板数组[列
*16+b][行+a]=文本.中间(c,1).到整数();
                            c
++;
                        }
                    }
                }
            }
            c
=0;
            如果(文本.长度()
==4*8)
            {
                如果(数字
<=设置.电子板宽/5)
                {
                    列
=数字-1;
                    行
=17;//数字部分从17行开始
                    计次循环(8,a)
                    {
                        计次循环(
4,b)
                        {
                            板数组[列
*5+b][行+a]=文本.中间(c,1).到整数();
                            c
++;
                        }
                    }
                }
            }
        }
        刷新电子板();
    }

    文本 取数字字模(文本 数字)
    {
        文本 文本;
        假如(数字)
        {
            为 
"#":文本="00000000000000000000000000000000";
            为 
"0":文本="01101001100110011001100110010110";
            为 
"1":文本="00100110001000100010001000100111";
            为 
"2":文本="01101001000100100100100010001111";
            为 
"3":文本="01101001000101110001000110010110";
            为 
"4":文本="00110101100110011111000100010001";
            为 
"5":文本="11111000100011110001000100011110";
            为 
"6":文本="01101001100010001111100110010110";
            为 
"7":文本="11110001001000100010001000100010";
            为 
"8":文本="01101001100101101001100110010110";
            为 
"9":文本="01101001100110010111000110010110";
            为 
":":文本="00000110011000000000011001100000";
        }
        返回(文本);
    }

    文本 取汉字字模(文本 汉字)
    {
        文本 字模文本;
        
//取汉字内码
        字节集 内码字节集=编码转换.转换(汉字.到UTF8,编码.UTF_8,编码.GB2312);
        
//转换内码为区位码
        整数 区码=内码字节集.中间(0,1).到整数()-160;
        整数 位码
=内码字节集.中间(1,1).到整数()-160;
        
// 打开字库
        apr.内存池 内存池1=创建 内存池();
        apr.文件操作 汉字库
=创建 文件操作();
        内存池1.申请内存(
30000);//大小自己根据文件大小定义,最好比文件大点.
        汉字库.打开("picHZK16",文件打开标志.只读,权限.系统默认,内存池1);
        整数 位置
=((区码-1)*94+位码-1)*32;
        汉字库.定位(文件定位.文件头,位置.到文本());
        
/*打开文本文件这段一直出错,打开为假,原因不明
        // 打开字库
        文本文件 汉字库=创建 文本文件();
        逻辑 a=汉字库.打开("picHZK16",2,文件编码类型.未知);
        //计算汉字模位置
        整数 位置=((区码-1)*94+位码-1)*32;
        整数 b=汉字库.首定位(位置);
*/
        
//读取字模
        字节集 字模=汉字库.读入(32);
        汉字库.关闭();
        整数 x;
        计次循环(
32,x)
        {
            字模文本
+=十转二(字模.中间(x,1).到整数());
        }
        返回(字模文本);
    }

    公开 文本 十转二(整数 十)
    {
        整数 x,t;
        文本 二;
        计次循环(
8,x)
        {
            如果(t
+128/数学运算.求次方(2,x)>十) 二+="0";
            否则
            {
                二
+="1";
                t
+=128/数学运算.求次方(2,x);
            }
        }
        返回(二);
    }
    
    公开 文本 取时间()
    {
        文本 时间文本
=用户界面.辅助类.取当前日期和时间();//取系统当前的日期和时间
        文本 时间=系统.文本类.中间(时间文本,11,8);//13:14:58//Mon Jan 14 13:15:47 2008
        返回(时间);
    }
}