猫史档案馆


编程猫图形脚本文字化暂定"喵"

用户:Gun7SumGun7Sum查看:0 回复:8 评论:0 创建时间:2019-11-30T10:04:29


我能怎么办呢?我只是偶然脑袋发热才写的它,我只是来寻找一种更好表达积木的方式.看看就好.

Ghdgtdgu (Gun7Sum) 2019/11/30


回复

上一页1 页 / 共 1下一页
Gun7SumGun7Sum

1.Header

一般情况下认为,如果要表示一个编程猫Kitten脚本,则头部部分的开头必须有这么一句:

Linker : Codemao.KiitenLang

表示脚本环境的核心处理文件.KittenLang表示 Kitten Language,提醒笔者这是使用Kitten架构编辑的语言文件.

如果要连接其他的库,定义使用Linker语句.

Linker [LinkerPack]

点赞0


评论


Gun7SumGun7Sum

接下来再讲讲EditConf语句.

EditConf (PackName) {
    KeyName = KeyValue
    ......
}

在KittenLang中,存有大量用于控制的变量,此时使用EditConf可以改变这些全局变量.

指定舞台模式为变量KittenLang.ScrnMode,有以下几个识别模式:

Hall : 竖屏

Toll4s3 : 横屏4:3

Toll16s9 : 横屏16:9

默认值为Hall.则要设定舞台模式为横屏16:9时,可以这么写:

EditConf (Codemao.KittenLang) {
    ScrnMode = Toll16s9;
}

明白了吧!

点赞0


评论


Gun7SumGun7Sum

然后是对象:

在编程猫Kitten脚本中,对象是指一个或多个可以承载动作,指令,函数的程序块,一般情况下,对象都有资源文件.

center_image

在本图中,背景,障碍物,滑雪编程猫都属于对象的范畴.

声明对象请使用以下格式:

[Public / Private].Object.[ObjectName] : [ResourceName]

Public/Private是对象的属性,一般使用Public,只有在克隆和分裂中声明Private.

ObjectName是对象名,ResourceName是资源名,可以为Null.

指定一个脚本中至少有一个背景对象(Background),还应有角色对象(User).

如果对象在屏幕上的表述如下图所述:

center_image

则应该这么描述:

//(暂时指定 // 为注释符)
Public.Object.Background : Null;
Public.Object.Codemao : ResCodemao; //它应该在资源表中声明

点赞0


评论


Gun7SumGun7Sum

然后是资源表.

资源表是声明脚本中使用的资源的.它应该比对象表提前.

声明对象请使用以下格式:

[ResPath]\Resource.[ResMode].[ResName] = [ResDeName]

ResPath指资源目录,一般情况下,指自己的资源素材库,即$(YourSelf),当然也可以指定到别的地方去.

ResMode指资源模式,暂定有如下模式:

Object -- 对象用

BackObject -- 背景专用

Media -- 音乐资源

Picture -- 图片资源

ResName指资源的本地名称,ResDeName指资源的指定名称.

所以如果要指定一个Object型的"编程猫"资源,应使用如下语句:

$(YourSelf)\Resource.Object.编程猫 = ResCodemao;

点赞0


评论


Gun7SumGun7Sum

所以到此为止,程序变成了:

Linker : Codemao.KittenLang

$(YourSelf)\Resource.Object.编程猫 = ResCodemao

Public.Object.Background : Null;
Public.Object.Codemao : ResCodemao;

Public Subject InitLang {
    KrnlSys.Reg(Codemao, Background);
}

在这里,Subject指核心层专用的程序段,创作脚本不得使用.InitLang是程序最开始的设置过程.

这里是第一次出现函数,讲解一下:

[Return] = [ObjectCoreName].Format([Input])

ObjectCoreName为对象名,本例是核心系统KrnlSys.Format是函数名,本例是Reg.Input是输入值 ,Return是返回值,都可以没有.

再说回Reg函数.

Void KrnlSys.Reg (Object User, Object Backgruond)

意为注册一个对象到另一个对象(通常是背景对象),有了它,编程猫就可以顺利的出现在屏幕上了.

点赞0


评论


Gun7SumGun7Sum

接下来再讲对象块吧.所谓对象块,指执行某些操作之后,会自动执行的程序段.它们需要自己编写.

Note:这次我吧主角色换成了绿豆,因为他是表示笔者的...(笑)

比如,我们设主对象名为Gun7Sum,有以下脚本:

center_image

则设"开始"点击的对象块为"Start",则应有:

Gun7Sum.Start {
    Gun7Sum.Skin.Ask("I'm Gun7Sum.");
}

暂时指定对话函数的格式为:

Void [ObjectName].Skin.Ask (String s)

所以,我们可以让小绿豆说第一句话了!(笑)

点赞0


评论


Gun7SumGun7Sum

当然我可以到此打止,但事实上存在这样的脚本:

center_image

这时,指定使用ObjectIf语句,格式如下:

[ObjectName].ObjectIf (Trim)
{
    ......
}

Trim指表达式,用法和接下来要讲的If差不多.

于是,上面的脚本可以写成:

Gun7Sum.ObjectIf(Gun7Sum.Check == 1) {
    Gun7Sum.Skin.Ask("I'm Gun7Sum.");
}

此处出现的Gun7Sum.Check,是标志位,指定标志位是对象的一些可以由外部操作控制的变量,如Check变量,当我们点击它时,Check的值会设为1,随后回0.

点赞0


评论


Gun7SumGun7Sum

补充说明:现规定InitLang使用以下语句:

Public Subject InitLang {
    KrnlSys.Reg(Gun7Sum, Background);
    KrnlSys.CommonStart();
}

CommonStart函数是为了照顾一个规则,即必须在启动按钮启动之后才能执行全部对象块.这点大家都懂.

点赞0


评论