某冰岚吧 关注:97贴子:3,358
不得不承认我已经投到c-logo的怀抱.
这是由happy用c语言写的,
c的开发效率低,
低的原因是要顾及内存与数据结构,更狗血的是dbug太费时间,
但是由c写出来的程序运行快,
占用内存小,
使用它还是比较激动人心的.
画出来的效果还是挺不错的.

这种动态效果就是用c-logo写的,因为c-logo含coo几个字母所以就叫酷语言了!
酷的原因有很多:
一:体量小功能大
二:编辑的写的cmd代码在c-logo.exe文件夹下双击就执行
三:内存画布画出来的动画不卡顿
四:代码自定义,可以把几乎所有的函数变量用中文定义
这样写出来的代码就能一目了然
五:酷就是酷!


1楼2017-01-23 22:21回复
    规则:
    0我所说的程序就是函数,函数就是程序概念有些混淆(不要介意)(子程序可以理解成函数)
    1所有的变量(包括系统自设变量)前面都要加冒号:
    2所有的变量定义都在程序名定义的时候定义,(但是FOR会创建一个变量)
    例:
    TO 走路 :a :b :c
    //建一个名为'走路'的函数,同时定义了:a,:b,:c三个变量在子程序(走路)里用
    3所有的赋值语句前必须要加一个make
    例:
    make :penx=100 :peny=100 :heading=30
    //上面是一段赋值语句,置起点坐标(100,100)置方向;上方偏右30度
    4所有程序的起点是main
    to main
    //上面的to main是程序的起点,从这里开始,main必须定义在程序的末尾(main后面不定义子程序)
    5所有的条件,循环,分支,语句末尾都要有']'(方括号的后面的那个括号)作为结束符.
    其中FOR的结束符后面有个小尾巴,比如:
    FOR ::i 1 100
    fd 10
    ]0.1
    //这个0.1就(是小尾巴)代表步长是0.1,也就是这个(fd 10)要循环1000次
    //步长能设为小数,
    //能设为负数(起始变量必须大于终止变量否则是死循环),
    //还能设为随机数,
    //这是酷语言的创举
    //在FOR循环内部引用::i可以任性而随意
    6量
    a:用户全局变量暂时只有10个(:PEN0-:PEN9),
    b:下面是一些系统变量
    :PENX横坐标 :PENY纵坐标 :PENW笔宽(0-255) :PENC笔色(0-15) :PENB笔背景色(0-15)(这个暂时不好用)
    :PENS笔光滑度(0-6)(光滑度正长设置成2就差不多,数值越大线条越细腻,斜线条的锯齿感就越小)
    :PENA笔透明度(0-255) :HEADING笔头角度(0-360)
    c:酷语言有一个全局数字常量PI
    d:其他的自己定义的变量的作用域都是局部的,
    函数定义的变量就只能在函数内部用
    FOR的自增自减变量也只能在FOR内部使用,
    在最大程度上避免了变量的耦合(就是在不同的函数中相互干扰)
    7一行程序只有一个功能
    要注释这一行都是注释,
    fd 100这个动作完成就必须另起一行
    赋值行的前面必须有make
    多行的语句有IF elif(必须跟在IF后面) for while REPEAT PE(笔擦在下一个画线行执行擦除任务)
    还有注释符/*跟*/(多行注释)
    两个斜杠//代表单行注释
    /*跟*/最好各占一行
    例如:
    TO 画擦 :a
    //定义函数变量
    fd :a
    //前进100步(画线长度100像素)
    PE
    //PE为笔擦(下一个画线动作变成笔擦)
    bk :a
    //后退100步,在酷语言中bk不画线,也不擦线(只是单纯的移动)
    fd :a
    //执行PE的擦线任务,之后再有fd就会画线(PE的作用域只是一次的画线动作)
    TO main
    //程序的起点
    画擦 100
    //执行画擦函数把100传给:a
    /*
    上面的函数执行后屏幕上什么都没有
    因为执行的很快所以看不清楚
    */
    8前面的方括号可以省略
    带方括号的函数只有流程控制函数IF elif for while REPEAT五个
    如:
    IF 1=1
    [
    PR 1=1
    ]
    elif 2=2
    [
    pr 2=2
    ]
    可以写成
    IF 1=1
    PR 1=1
    ]
    elif 2=2
    pr 2=2
    ]
    WHILE 的条件如果省略就是死循环(执行时关闭或用STOP跳出)
    FOR 后面的小尾巴省略就是默认步长是1
    9,数学函数尽量用小写字母,现在所有的关键字都是大小写不敏感的
    (因为之前的版本数学函数是必须用小写的所以有点惯性才这样说的)
    10表达式里的三角函数都是用的弧度
    所以如果你用的是角度就就要用deg()把角度转化成弧度
    如:SIN(deg(30))才是30度的正弦值
    11头上的
    ::*****************************************************************************
    @ECHO OFF&COLOR 0F&MODE CON COLS=200 LINES=45&CLGO "%~F0"&PAUSE>NUL&EXIT /B
    COPYRIGHT@2017~2019 BY HAPPY
    ::*****************************************************************************
    这些是控制台批处理语句@ECHO OFF代表关闭控制台输出(echo)功能(只带这一句也可以)
    COLS=200 LINES=45这个是画图屏幕的宽度跟高度可以自己调整
    控制台批处理语句我也不懂,感兴趣的可以自己搜
    COPYRIGHT@2017~2019 BY HAPPY(COPYRIGHT是版权的意思)(HAPPY)是作者的名字
    有这几行双击这个.cmd的文件就执行这个程序(前提是clgo.exe也在同一个文件夹下)
    右击这个.cmd文件再点编辑就可以编辑这个程序
    如果没有这几行,就要把.cmd文件拖拽到clgo.exe上执行


    8楼2017-02-15 21:02
    收起回复
      CLGO SCRIPT 3.0版
      _____________________________________________________________________________
      CLGO SCRIPT绘图脚本语言,具有类似C语言的函数定义、函数调用、递归、循环、逻辑
      判断等语法功能。在内存中解释运行,速度迅猛。同时,CLGO语言具有非常简单的语法
      结构、关键词。 快速上手,简短的语句就能绘出美妙的画面。
      _____________________________________________________________________________
      命令:
      -----------------------------------------------------------------------------
      关键词(不区分大小写) 中文释义 用法说明
      -----------------------------------------------------------------------------
      ___________________________________全局变量__________________________________
      :PENX 横坐标
      :PENY 纵坐标
      :PENW 笔宽 取值0-255
      :PENC 笔色 取值0-15
      :PENB 笔背景色 取值0-15
      :PENS 笔光滑度 取值0-6
      :PENA 笔透明度 取值0-255
      :HEADING 笔头角度 取值0-360
      :PEN0 - :PEN9 用户变量 供用户使用的全局变量
      ___________________________________绘图命令___________________________________
      FD 前进 FD 100 //前进100步
      BK 后退 BK 100 //后退100步
      LT 左转 LT 90 //左转 90度
      RT 右转 RT 90 //右转 90度
      PU 抬笔 PU //抬笔
      PD 落笔 PD //落笔
      PE 笔擦 PE //笔擦
      HM 回家 笔归位至中央、笔头朝上
      CS 清图 清除绘图区,笔归位、笔头朝上
      PR 打印 PR :HEADING={:HEADING} //打印 “:HEADING=0”
      ___________________________________语句命令___________________________________
      IF~ELIF 如果~再则 条件指令
      REPEAT 重复 RP 4[循环体]
      WHILE 当 WHILE 条件[循环体]
      FOR 循环 FOR 变量 初值 终值[循环体]步长
      ___________________________________语句词语___________________________________
      NOT 逻辑否
      AND 逻辑与
      OR 逻辑或
      ___________________________________扩展命令___________________________________
      MEMUSE 启用内存画布
      MEMSEE 查看内存画布
      MEMOUT 抛弃内存画布
      SETXY 设置画笔位置 SETXY 30 50 //画笔位置30、50
      ROTE 旋转 ROTE 30 //画布旋转30度
      FILL 颜色填充 用颜色填充笔所在的封闭区域
      TEXT 绘制文字 text 32 0 15 宋体 你好 //绘制你好,字体大小32,样式0,颜色15
      OVAL 画椭圆 OVAL 100 50 15 //画横向半径为100,纵向半径为50的椭圆,倾斜角15度
      RECT 画矩形 RECT 100 50 25 //画横向长度为100,纵向长度为50的矩形,倾斜角25度
      WAIT 等待 WAIT 3000 //等待3秒;WAIT -1暂停
      STOP 停止 停止子过程
      EXIT 退出 退出整个脚本
      -----------------------------------------------------------------------------
      释符:
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      行注释 //行内容
      段注释 /*
      段内容
      */
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      数学类关键词(必须小写):
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      常数类
      pi 3.1415926535897932
      通用类
      rand 随机函数余
      round 四舍五入
      time 获取时间time(0~5) //取值0~5分别代表年月日时分秒
      read 获取按键read(300) //在300毫秒内持续监听获取按键值
      abs 绝对值
      ceil 向上舍入
      deg 角度转弧度
      exp e的次幂
      sqrt 开方
      fact 阶乘
      lg 常用对数,以10为底
      ln 自然对数
      + 加
      - 减
      * 乘
      / 除
      % 取余数
      ^ 次方
      比较运算
      > 大于
      < 小于
      = 等于
      <> 不等于
      ! 逻辑非
      三角函数类
      sin、cos、tan
      arcsin、arccos、arctan
      双曲函数类
      sinh、cosh、tanh
      arcsinh、arccosh、arctanh
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      十六色系:
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      { 0, 0, 0,RGB( 0, 0, 0)}, //黑色
      { 0, 0,255,RGB( 0, 0,255)}, //蓝色
      { 0,255, 0,RGB( 0,255, 0)}, //绿色
      { 0,255,255,RGB( 0,255,255)}, //青色
      {255, 0, 0,RGB(255, 0, 0)}, //红色
      {238,130,238,RGB(238,130,238)}, //紫兰
      {165, 42, 42,RGB(165, 42, 42)}, //棕色
      {211,211,211,RGB(211,211,211)}, //浅灰
      {169,169,169,RGB(169,169,169)}, //深灰
      {173,216,230,RGB(173,216,230)}, //淡蓝
      {144,238,144,RGB(144,238,144)}, //浅绿
      {224,255,255,RGB(224,255,255)}, //淡青
      {248, 29, 56,RGB(248, 29, 56)}, //亮红
      {255, 0,255,RGB(255, 0,255)}, //洋紫
      {255,255, 0,RGB(255,255, 0)}, //黄色
      {255,255,255,RGB(255,255,255)} //白色
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      英译:
      -----------------------------------------------------------------------------
      COPYRIGHT@2016~2018 BY HAPPY, CLGO SCRIPT, VERSION 3.0
      CLGO.EXE
      USAGE: CLGO [FILE]
      -----------------------------------------------------------------------------
      2017-02-13


      10楼2017-02-15 21:09
      收起回复
        酷语言有两样很变态,1是内存画布2是表达式,
        内存画布保证动作的连贯性,表达式保证数据的准确性
        表达式,可以用在任何传值的内容上
        比如fd可以理解为一个函数它的参数只有一个这个参数就可以用表达式
        SETXY是两个参数的函数,
        IF 也可以理解为等号两边的两个表达式
        IF and :a+:b=:c+:d :e+:f=:g+:h当有逻辑函数时又多了两个参数又可以多出两个表达式
        FOR 后面的小尾巴也可以是表达式
        只要是能传参数的都可以用表达式
        但是自定义函数不能用在表达式中,一方面没有返回值,
        也就是表达式只能由变量,系统数学符号,系统数学函数,跟数字组成
        酷语言的逻辑表达式是弱项(用很多and OR NOT 作用的表达式结果只有真或者是假)
        如果有多层逻辑就只能多用几个IF elif语句来判断
        内存画布相对简单只要在使用前先用MEMUSE启用
        启用后的所有画线都在内存中直到遇到MEMSEE函数
        才把内存中画的内容一次性的呈现在屏幕上,
        在MEMSEE与下一个画线动作之间的WAIT 是有效的(可以延时)
        在画线到MEMSEE之间的WAIT 是无效的(不知道现在是不是这样)
        只要不出现MEMOUT抛弃内存画布就一直会画在内存中,等待MEMSEE画图


        11楼2017-02-15 21:53
        回复
          中间值,
          是指,为了理清思路或概念而设置的数值(既是变量),
          这种数值,的特点是不需要传值,只需要赋值
          但是在酷语言中,只要定义了就必须要传值
          如果不想传不用传的值,就要建立一个中间函数然后在中间函数中传值
          调用这个中间函数就可以只传,需要传的值
          这也算技巧了,还有一种办法就是用全局变量做中间值
          全局变量在使用时还是要注意的,
          这是唯一可能造成子程序相互干扰的因素


          12楼2017-02-15 22:33
          收起回复
            学说话,的最好的方法是说话,学写程序的最好方法就是写程序,看的多不如写的多,读万卷书不如行万里路.


            13楼2017-02-15 22:54
            回复
              TO 蛋圆 :a :b :k :xx :yy :z
              //ab长短轴▕k▏<1决定圆度,xx,yy置中心点坐标z是旋转角度
              make :PENX=:a*(cos(0))*(cos(deg(:z)))-(:b*(sin(0))/(1-:k*(sin(0))))*(sin(deg(:z)))+:xx
              make :PENY=:a*(cos(0))*(sin(deg(:z)))+(:b*(sin(0))/(1-:k*(sin(0))))*(cos(deg(:z)))+:yy
              for ::i 0 360
              SETXY :a*(cos(deg(::i)))*(cos(deg(:z)))-(:b*(sin(deg(::i)))/(1-:k*(sin(deg(::i)))))*(sin(deg(:z)))+:xx :a*(cos(deg(::i)))*(sin(deg(:z)))+(:b*(sin(deg(::i)))/(1-:k*(sin(deg(::i)))))*(cos(deg(:z)))+:yy
              ]
              to 多角星 :x :y :z :a :r :TP9 :tp0
              //:x :y 中心点坐标:z旋转角度 :a边数 :r外接圆半径 :TP9 :tp0中间值
              make :PENX=:x :PENY=:y
              rt :z
              make :TP9=:HEADING
              pu
              fd :r
              make :tp0=(2*:r*(sin(deg((180/:a)*((ceil(:a/2))-1)))))
              if (:a)%2=1
              rt 180-90/:a
              pd
              REPEAT :a
              fd :tp0
              rt 180-180/:a
              ]
              ]
              if (:a)%2=0
              rt 180
              fd 2*:r
              rt 180-180/:a
              pd
              REPEAT (:a/2)
              fd :tp0
              rt 180-360/:a
              ]
              make :PENX=:x :PENY=:y :HEADING=:TP9
              PU
              fd :r
              rt 180-180/:a
              pd
              REPEAT (:a/2)
              fd :tp0
              rt 180-360/:a
              ]
              ]
              pu
              make :PENX=:x :PENY=:y :HEADING=:TP9
              pd
              to 空心多角星 :x :y :z :a :r :TP9 :tp0 :tp1
              //:x :y 中心点坐标:z旋转角度 :a边数 :r外接圆半径 :TP9 :tp0 :tp1中间值
              make :PENX=:x :PENY=:y :TP9=:HEADING
              rt :z
              pu
              fd :r
              make :tp0=sqrt(:r*:r-(2*:r*(sin(deg((180/:a)*((ceil(:a/2))-1)))))*((2*:r*(sin(deg((180/:a)*((ceil(:a/2))-1)))))/4))/((sin(deg(90-180*((ceil(:a/2))-2)/:a)))/(cos(deg(90-180*((ceil(:a/2))-2)/:a))))
              make :tp1=(2*:r*(sin(deg((180/:a)*((ceil(:a/2))-1)))))/2-:tp0
              if (:a)%2=1
              rt 180-90/:a
              pd
              REPEAT :a
              fd :tp1
              pu
              fd (:tp0*2)
              pd
              fd :tp1
              rt 180-180/:a
              ]
              ]
              if (:a)%2=0
              rt 180
              fd 2*:r
              rt 180-180/:a
              pd
              REPEAT :a/2
              fd :tp1
              pu
              fd (:tp0*2)
              pd
              fd :tp1
              rt 180-360/:a
              ]
              pu
              make :PENX=:x :PENY=:y :HEADING=:tp9
              fd :r
              rt 180-180/:a
              pd
              REPEAT :a/2
              fd :tp1
              pu
              fd (:tp0*2)
              pd
              fd :tp1
              rt 180-360/:a
              ]
              ]
              pu
              make :PENX=:x :PENY=:y :HEADING=:TP9
              pd
              TO 抛物线 :p :x :xx :yy :z
              /*
              通径2*p 焦准距p 离心率e=1
              :x=10*x循环次数(步长0.1)
              :xx :yy :z 坐标方向
              */
              make :PENX=:xx :PENY=:yy
              for ::t 0 :x
              setxy 2*:p*(deg(::t*::t))*(cos(deg(:z)))-2*:p*(deg(::t))*(sin(deg(:z)))+:xx 2*:p*(deg(::t*::t))*(sin(deg(:z)))+2*:p*(deg(::t))*(cos(deg(:z)))+:yy
              ]0.1
              make :PENX=:xx :PENY=:yy
              for ::t 0 :x*(-1)
              setxy 2*:p*(deg(::t*::t))*(cos(deg(:z)))-2*:p*(deg(::t))*(sin(deg(:z)))+:xx 2*:p*(deg(::t*::t))*(sin(deg(:z)))+2*:p*(deg(::t))*(cos(deg(:z)))+:yy
              ]-0.1
              TO 双曲线 :a :b :k :xx :yy :z
              //:a :b c=a^2+b^2(c为焦点)准线x=±a^2/c :k>0跳过除以0的情况 :xx :yy置坐标 :z置方向
              make :PENX=:a*(1/(cos(deg(90+:k))))*(cos(deg(:z)))-:b*(tan(deg(90+:k)))*(sin(deg(:z)))+:xx
              make :PENY=:a*(1/(cos(deg(90+:k))))*(sin(deg(:z)))+:b*(tan(deg(90+:k)))*(cos(deg(:z)))+:yy
              for ::i 90+:k 470-:k
              SETXY :a*(1/(cos(deg(::i))))*(cos(deg(:z)))-:b*(tan(deg(::i)))*(sin(deg(:z)))+:xx :a*(1/(cos(deg(::i))))*(sin(deg(:z)))+:b*(tan(deg(::i)))*(cos(deg(:z)))+:yy
              ]
              TO 斜椭圆 :a :b :x :y :z :j
              //a,b长短半轴x,y中心点坐标z倾斜角度j精度越,小越精确
              make :PENX=:a*(cos(0))*(cos(deg(:z)))-:b*(sin(0))*(sin(deg(:z)))+:x
              make :PENY=:a*(cos(0))*(sin(deg(:z)))+:b*(sin(0))*(cos(deg(:z)))+:y
              for ::t 0 360
              setxy :a*(cos(deg(::t)))*(cos(deg(:z)))-:b*(sin(deg(::t)))*(sin(deg(:z)))+:x :a*(cos(deg(::t)))*(sin(deg(:z)))+:b*(sin(deg(::t)))*(cos(deg(:z)))+:y
              ]:j
              TO 正多边形 :x :y :z :边数 :边长 :TP9
              // :x :y置坐标 :z置方向 :边数 :边长 :TP9中间值
              make :PENX=:x :PENY=:y
              PU
              make :TP9=:HEADING
              rt (180-180/:边数+:z)
              fd :边长/(2*(sin(deg(180/:边数))))
              rt 90+180/:边数
              pd
              REPEAT :边数
              FD :边长
              rt 360/:边数
              ]
              PU
              make :PENX=:x :PENY=:y :HEADING=:TP9
              PD
              TO 外接正多边形 :x :y :z :边数 :半径 :TP9
              //:x :y 置坐标:z置方向 :边数 :半径 :TP9中间值
              make :PENX=:x :PENY=:y
              PU
              make :TP9=:HEADING
              rt (180-180/:边数+:z)
              fd :半径
              rt 90+180/:边数
              pd
              REPEAT :边数
              FD :半径*(2*(sin(deg(180/:边数))))
              rt 360/:边数
              ]
              PU
              make :PENX=:x :PENY=:y :HEADING=:TP9
              PD


              14楼2017-02-15 23:28
              收起回复

                @ECHO OFF&CLS&COLOR 0F&MODE CON COLS=195 LINES=53&CLGO "%~F0"&PAUSE>NUL&EXIT /B
                TO FUNCTIONS_IMG :A :N :C
                make :PENS=2 :PENW=5 :PENC=4
                FOR ::T 0 :C
                make :PENC=::T%15+1
                SETXY 0.3*::T*cos(deg(::T))*cos(deg(:N*::T)) 0.3*::T*sin(deg(::T))*cos(deg(:N*::T))
                wait 1
                ]
                TO MAIN
                FUNCTIONS_IMG 0.0003 5 1500


                15楼2017-02-15 23:46
                收起回复

                  @ECHO OFF&CLS&COLOR 0F&MODE CON COLS=100 LINES=30&CLGO "%~F0"&PAUSE>NUL&EXIT /B
                  TO DIAL
                  //画表盘
                  make :PENW=2 :PENC=8
                  REPEAT 60
                  [
                  make :PENC=RAND(15)+1
                  PU
                  FD 130
                  PD
                  FD 10
                  BK 140
                  RT 6
                  ]
                  make :PENW=3
                  REPEAT 12
                  [
                  PU
                  FD 115
                  PD
                  FD 25
                  BK 140
                  RT 30
                  ]
                  make :PENW=2
                  REPEAT 60
                  [
                  make :PENC=3
                  PU
                  FD 80
                  PD
                  FD 20
                  BK 100
                  RT 6
                  ]
                  TO HOUR___HAND :ANGEL :LEN
                  //画时针,跟分针画法一样只是:ANGEL跟:LEN取值不同
                  MINUTE_HAND :ANGEL :LEN
                  TO MINUTE_HAND :ANGEL :LEN
                  //画分针
                  make :PENC=8 :PENW=4
                  RT :ANGEL
                  FD :LEN
                  make :PENx=0 :PENy=0 :heading=0
                  TO SECOND_HAND :ANGEL :LEN
                  //画秒针
                  make :PENC=6 :PENW=3
                  RT :ANGEL
                  FD :LEN
                  make :PENx=0 :PENy=0 :heading=0
                  TO MAIN
                  make :PENS=2
                  DIAL
                  MEMUSE
                  WHILE
                  [
                  //画时针,分针,秒针
                  HOUR___HAND (time(3)+time(4)/60)*30 60
                  MINUTE_HAND (time(4)+time(5)/60)*6 80
                  SECOND_HAND (time(5)*6) 110
                  //MEMSEE显示内存画布
                  MEMSEE
                  WAIT 1000
                  ]
                  MEMOUT


                  16楼2017-02-15 23:56
                  回复


                    TO CYCL :START :ENDPS :STEPS
                    FOR ::I :START :ENDPS+RAND(5)
                    make :PENC=RAND(15)+1
                    OVAL ::I/7 ::I ::I
                    WAIT 10
                    ](RAND(5))*(-1)
                    TO SQRE :START :ENDPS :STEPS
                    FOR ::I :START :ENDPS+RAND(5)
                    make :PENC=RAND(15)+1
                    RECT ::I/7 ::I ::I
                    WAIT 10
                    ](RAND(5))*(-1)
                    TO MAIN
                    make :PENS=2 :PENW=30 :PEN0=RAND(9)
                    IF (:PEN0)>4
                    [
                    CYCL 300 50 3
                    ]
                    elIF 0=0
                    [
                    SQRE 300 50 3
                    ]


                    18楼2017-02-16 00:04
                    收起回复

                      TO FUNCTIONS_IMG2
                      MEMUSE
                      FOR ::A 1 360000
                      [
                      make :PENx=0 :PENy=0
                      ROTE ::A
                      MEMSEE
                      ]10
                      MEMOUT
                      TO FUNCTIONS_IMG :A
                      //MEMUSE
                      make :PENS=2 :PENW=2 :PENC=15
                      FOR ::T 0 1000
                      [
                      //$PENC=::T%15+1
                      SETXY 0.3*::T*cos(deg(::T)) 0.3*::T*sin(deg(::T))
                      ]
                      //MEMSEE
                      //MEMOUT
                      TO MAIN
                      FUNCTIONS_IMG 0.0003
                      FUNCTIONS_IMG2


                      19楼2017-02-16 00:14
                      回复

                        TO CYCL :START :ENDPS :STEPS
                        FOR ::I :START :ENDPS
                        make :PENC=RAND(15)+1
                        OVAL ::I/(RAND(12)+1) ::I ::I
                        ](-1)*(RAND(5))
                        TO SQRE :START :ENDPS :STEPS
                        FOR ::I :START :ENDPS
                        make :PENC=RAND(15)+1
                        RECT ::I/(RAND(12)+1) ::I ::I
                        ](-1)*(RAND(5))
                        TO MAIN
                        make :PENS=2 :PENW=5
                        REPEAT 10000
                        [
                        MEMUSE
                        CYCL 200 3 3
                        MEMSEE
                        WAIT 100
                        ]


                        20楼2017-02-16 00:18
                        收起回复

                          TO CYCL :START :ENDPS :STEPS
                          FOR ::I :START :ENDPS
                          make :PENC=RAND(15)+1
                          OVAL ::I/7 ::I ::I
                          ](-1)*(RAND(5)+10)
                          TO MAIN
                          make :PENS=2 :PENW=20
                          REPEAT 10000
                          [
                          MEMUSE
                          CYCL 300 3 3
                          MEMSEE
                          ]


                          21楼2017-02-16 00:23
                          收起回复
                            text函数跟PR 都是输出字符函数
                            都要通过转义字符实现某些功能
                            这个版本最好使用text,因为PR 跟画图会产生干扰
                            PR 的优点在速度快
                            text的缺点在于要置方向
                            text 32 0 15 宋体 你好 //绘制你好,字体大小32,样式0,颜色15
                            TO 测试 :a
                            PR 1
                            PR 2
                            PR {:a}
                            PR ┌┬┐┏┳┓╒╤╕╭─╮┏━┓╔╦╗─│━┃┄┆ ┝┿┥╃╄╅╆
                            PR ├┼┤┣╋┫╞╪╡│╳┃┃哈┃╠╬╣ ┉┋┈┊┉┋
                            PR └┴┘┗┻┛┕╧╛╰━╯┗━┛╚╩╝┞╀┦┟╁┧┠╂┨┡╇┩┢╈┪
                            PR ○◇□△▽☆
                            PR ●◆■▲▼★
                            PR ♀√
                            PR ♂×
                            PR ⊙◎▁▂▃▅▆▇█
                            PR 卍卐
                            PR ¬
                            PR ☉⊕Θ⊿
                            PR ∮‖§Ψ
                            PR 々
                            PR ㊣№
                            PR ㈱℡曱甴囍
                            PR ▓∷
                            PR ╱╲▁▏↖↗↑←◤◥
                            PR ╲╱▔▕↙↘↓→◣◢
                            PR ┭┰┲┮┱┭┱
                            PR ┿╂┾╊╉┽╉
                            PR ┵┸┶┺┹┵┹
                            TO MAIN
                            测试 3


                            22楼2017-02-16 00:41
                            回复

                              这是上个楼层执行的结果
                              \{代表'{'
                              \b退格
                              \\是'\'
                              \r\n是换行
                              \e是不换行
                              {}这个大括号里面是计算表达式的值
                              这些转义字符内容PR 跟text是一样的
                              换行没测过
                              PR 会把空格原样输出
                              text遇到空格就结束所以text中的空格要换成特殊字符比如' '


                              23楼2017-02-16 00:50
                              回复