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

“易语言.飞扬”做的电子板

下载地址(含源代码):http://bbs.dywt.com.cn/dispbbs.asp?boardID=148&ID=146448&page=1

 

“易语言.飞扬”做的电子板(含源代码),作者大伟_第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
        返回(时间);
    }
}

你可能感兴趣的:(易语言.飞扬,源代码)