极语言官方网站

子类和对象的使用

子类需要通过"新建"语句创建子类才能使用,数据自动清零,只支持销毁

子类和对象支持全局变量和局部变量,实体是一个整数指针变量

子类代码需要单独一个模块文件来书写,格式为:

子类 角色类
{
  整数 攻击,防御,减伤;小数 横标,竖标,纵标;
  程序段 函数名(参数)
  整数 数字=参数
  结束
}

整个子类的代码除了"子类 名称"之外,都在大括号范围内

子类代码有全局和局部变量,在子类的程序段内可以直接使用当前子类的全局变量

就是说子类内的全局变量只是在当前子类适用,不是整个工程的全局变量

在工程代码里访问子类变量是在新建实例化之后

整数 人物=新建 角色类
人物.攻击=30
左边距=人物.横标
人物.函数名(350)

如果是在子类内部,访问另一个子类,就需要提交实例化的子类变量

假如在子类内部写好了这样一个程序段

程序段 计算(角色类 人物)
  整数 伤害=(攻击-人物.防御)*1.5 -人物.减伤;

就可以再创建一个角色类,也就是游戏里人另一个人物角色

角色类 人物1=新建 角色类
人物.计算(人物1)

一号人物攻击另一个人物进行伤害计算

子类内部使用单独的"@"代表子类本身,在需要提交自身这个子类时

程序段 发动攻击(数据)
  角色类 人物=数据(15)&
人物.计算(@)

通过数据获取到另一个人物对象的指针,提交自身并调用另一个子类对象

子类的变量类型支持如下几种:

英文语法中文语法数值范围
Bool布尔真(True),假(False)
char,sbyte 字符 -128~127
byte,uchar 字节 0到256
short 整形 -32768到32767
word 短数 -32768到32767
ushort 正数 0到65535
int,uint,dword 整数 -2147483648到2147483647
single 小数 负数-3.402823E38到-1.401298E-45;正数1.401298E-45到3.402823E38
Double 浮点 负数时-1.79769313486232E308到-4.94065645841247E-324;

正数4.94065645841247E-324到1.79769313486232E308
long,ulong大数64位整数,32位编程下多用于存储或时间计算。
string 文本[16]需指定长度,可代替二进制数据

子类对象只有一个内置成员:长度

中文名英文名功能作用
.长度.len子类空间的长度

COM对象有两个内置成员:类和标识,但是这两个成员也是可选的,可以只有一个,或者两个都没有

中文名英文名变量类型功能作用
.类对象对象数据的类关联标识CLSID,或称接口
.标识对象对象数据的IID标识

子类变量均可以使用数组,下标长度必须是数字,不支持动态数组

书写子类变量时不能赋值,未新建子类时变量的数据并不存在

子类如果不包含变量,是不需要新建,不用申请内存空间

子类里面包括程序段,可以直接使用子类内部的变量

子类书写完之后,以大括号}结尾,跟命名子类后的{对应

使用子类时先要新建子类,才可以使用其变量和方法函数

子类名 名称1 = 新建 子类名; 整数 名称2=新建 子类名

也可以用赋值指向已存在的子类: 子类名 名称3=名称1;

子类变量用法:整数 数一=名称1.变量名;名称1.变量名=88;

传递参数时也可以使用子类:程序段 测试(子类名 名称3)

名称3.变量=99;变量9=名称3.读取(数据,4);名称3.写入(内容)

销毁子类方法是:销毁 名称2;子类名和子类实体要区分清楚

子类本身并没有特别定义,它可以是全局的整数变量,也可以是局部整数,也可以是整数数组。

全局变量是编译程序时,提前在数据区段申请的。局部变量仅在小程序段内有效,属于临时存储空间。

子类和数据表的变量,是在程序运行之后,去动态申请的内存区块。子类使用前需要使用 新建 子类名称

数据表相当于自定义二维数组,使用前需要先“重置”数组的长度,该长度不能小于所读取数据的行数。

数据表可以使用数组的重置、保留和销毁方法,而子类只可以使用新建和销毁这两个方法。

子类和数据表的区别:

子类申请的内存区域并不是清零的,所以在新建的时候,可以用:玩家=新建 角色类(等级=1,职业=2,性别=1);

去设置子类变量的数值,未清零的内存数据是随机的,也就是说子类变量在新建子类时数值是不确定的。)

而数据表在重置长度后,内存区域是清零的,所有变量此时值都是0,数据表也可以用作自定义数组。

成员变量使用方法是:玩家表(0).性别,括号内是行号也就是数组的标号,是从0开始计数的。

子类变量的使用方法是:玩家.性别。如果申请的子类变量是数组形式,如:角色类 玩家()

也可以像数组一样,先 重置 玩家(1000),玩家(0)=新建 角色类; 玩家(0).性别=1;

但是销毁只能是先销毁一个成员,销毁 玩家(0)。或者 N=玩家(0);销毁 N;

子类变量在子类内部可以不加前缀直接访问,如:等级=100;职业=3;xb=性别等等。

COM对象申请可以在全局和局部,方法是:对象 名称=对象名;也可以用对象结构

例如:对象 任务=任务栏类;也可以写成下面的代码形式

对象 任务($44F3FD566DFDD011958A006097C9A090,$42F3FD566DFDD011958A006097C9A090接口,计数,释放,初始化,添加,删除,激活,活动)

第一项是对象数据和代码关联的类接口CLSID,第二项是与对象通信的接口标识符的IID

这两项为十六进制转换写法,不需要CLSID或者IID时数据可以为空,也可以使用简写:

很多系统对象的后面部分相同,前4字节不同,如: $0B01000000000000C000000000000046

可以只写前面部分:$0B01,注意这里只写了两字节,后面是00就可以不写,还有一种简写:

比如上面申请对象使用的CLSID和IID后面部分相同,只有第一字节不同,第二项可以写成:$42

极语言库里已有的COM对象结构在说明书里有使用方法

例如:任务栏类,链接类,存储类,可以查看具体说明

申请完对象变量,需要使用创建对象去创建对象实体

语法是:

创建对象 任务;任务.初始化;任务.添加(窗口)
任务.删除(窗口);任务.激活(窗口),任务.活动(窗口)
对象不使用新建和销毁,释放对象写法是:任务.释放;