命令分类目录

类型 命令
基本画图命令 fd, bk, lt, rt
设置笔状态命令 c, rgb, size, up, down
状态命令 show, hide, speed, showXY, wait, pause, cls, clsRec
增强画图命令 o, oo, e, ee, r, rr
坐标命令 moveTo, lineTo, getX, getY, getAngle, setAngle
文字命令 text, precision, textSize, font, textU, d2s
图片命令 setPath,picL, pic, picO, picU, cav, ani
声音命令 soundL, sound, soundLoop, soundVol, soundPause, soundStop
输入输出命令 cin, cinTitle, cinWin, cout
键盘检测命令 getKey, getDigit, waitKey, getDownKey
鼠标检测命令 waitMouse, mouseDown, getMX, getMY, getMDX, getMDY, mouseIn, cursor
设置按钮命令 button, buttonMP, buttonMI
新版增加命令 alp, a, aa, ch, drawH, pXY, pol,cap, save, load, videoPlay, ctime, getC
数学函数 abs(), sqrt(), rand(), sin, cos, atan2, pow, strlen, getYear, getMonth, getDate, getHour, getMinute, getSecond, getTime

附录

常见字体编号表
键盘的ASCII码表
控制键键码值

命令说明表格

基本画图命令
命令 功能说明
pen.fd( length ); 名称:前进
功能:笔向前移动指定长度,以当前颜色画一条直线。
说明:fd 是 forward(前进)的缩写;length 可为整数或小数。
样例:pen.fd( 50 );
pen.bk( length ); 名称:后退
功能:笔向后移动指定长度,以当前颜色画一条直线。
说明:bk是back(后退)的缩写;length可为整数或小数。
样例:pen.bk( 80 );
pen.rt( angle ); 名称:顺时针旋转
功能:笔的方向在当前位置和方向顺时针旋转指定角度,一周是360度。
说明:rt是right(向右)的缩写,所以也称为右转命令;angle可为整数或小数。
样例:pen.rt( 60 );
pen.lt( angle ); 名称:逆时针旋转
功能:笔的方向在当前位置逆时针旋转指定角度,一周是360度。
说明:lt是left(向左)的缩写,所以也称为左转命令;angle可为整数或小数。
样例:pen.lt( 60 );

设置笔状态命令
命令 功能说明
pen.c( color ); 名称:设置颜色
功能:设置笔的颜色为指定颜色,以后笔将使用这个颜色画图。颜色有16种,编号0到15。
说明:c是color(颜色)的缩写,简称颜色命令;color一般为0到15的整数;第16号颜色是pen.rgb()设置的颜色。
样例:pen.c( 1 ); pen.fd( 80 );
pen.rgb(r, g, b );
名称:设置RGB颜色
功能:设置第16号颜色为指定的RGB格式定义的颜色。
说明:第16号颜色默认是淡绿色。可以设置一百多万种颜色。
样例:p.rgb(166,254,167).c(16).oo(50);
pen.size( width );
名称:设置粗细
功能:设置笔的粗细为指定宽度,以后笔将使用这个宽度画图。
说明:size的意思是大小,所以简称大小命令。宽度width的值为正整数,初始大小为4。
样例:pen.size( 1 ). fd( 100 ); 和 pen.size( 8 ). fd( 100 );
pen.up( );
名称:抬笔
功能:把笔抬起悬空(阴影表示),以后笔移动时不会画出直线。
说明:没有参数。抬笔只是影响fd和lineTo命令,对画圆、椭圆、矩形等命令没有影响。
样例:pen.rt(90).fd(100).up( ).fd( 100 );
pen.down( );
名称:落笔
功能:把笔落下,以后笔移动时又会正常画出直线。
说明:没有参数。
样例:pen.rt(90).fd(50).up( ).fd( 50 ).down( ).fd(50);

状态命令
命令 功能说明
pen.show( ); 名称:显示笔
功能:把笔当前的颜色、位置和方向等状态用笔头动态显示出来。配合speed命令,可以演示笔的移动、转弯过程。
说明:没有参数;可用与hide命令配合,转换会显示/隐藏笔。
相关的:在已经显示笔的情况下再用pen.drawH()命令,会在画布上静态留下笔头图形。
pen.hide( );
名称:隐藏笔
功能:取消笔的显示状态。
说明:没有参数,一般是为了图形中不出现笔。
样例:pen.hide().rt(90).fd(100);
pen.speed( v );
名称:速度
功能:调整笔移动、旋转的速度。速度分为10个等级,v=1最慢,v=10最快。
说明:速度值 v为1到10的数值。speed配合show命令可以方便调试程序,演示绘图过程。
pen.showXY(len,color,size );
名称:画坐标
功能:显示一个简单的网格线坐标。网格线间隔距离len,网格线颜色color号,网格线粗细size。
说明:showXY绘制坐标到画布上,与面板的“坐标”按钮无关。
样例:pen.showXY(100,1,1); 和pen.showXY(1000,0,2);的2种效果:
wait( second );
名称:等待
功能:程序运行到这里会等待指定时间,再继续运行。等待的时间单位是秒,可以是小数。
说明wait不是pen的命令,格式不能“pen.”开头。适当的使用wait不仅方便调试程序和演示绘图过程,还是实现动画的必要方法。second要保证>=0。
样例:wait(0.2);
表示程序在这里停留0.2秒。
pause( );
pause( second );
名称:暂停
功能:使程序暂时停止运行。按任意键或鼠标点击时,程序继续运行。pause( second )格式时,second秒后,结束等待,程序继续运行。
说明不是pen的命令,格式不能“pen.”开头。有参数时,一直等待。
样例:pause(5.5);
表示程序在这里等待5.5秒,但按键就会终止等待,继续运行。
pen.cls( );
名称:清屏
功能:清除整个绘图区域。笔的位置回到坐标原点,笔的方向朝上(0度)。
说明:cls是clearScreen(清除屏幕)的缩写。
样例:p.cls();
pen.clsRec( w, h );
pen.clsRec( );
名称:清矩形
功能:对笔位置为中心的矩形区域清除颜色(变成无色透明),w为宽,h为高。
说明:clsRec是clearRectangular (清除矩形)的缩写,没有参数的clsRec()表示清整个屏幕,它与cls()不同,pen位置不会坐标回原点。如果picU(1);方向会随笔头。
样例:p.oo(200).clsRec(100,150);

增强画图命令
命令 功能说明
pen.o( r );
pen.o( r,c );
pen.oo( r );
pen.oo(r,c);
名称:画圆
功能:以笔位置为圆心,r为半径,画圆。oo命令是画实心圆。c为颜色编号。
说明:命令中如果省略c,用当前笔的颜色画图。
样例:pen.o(70).oo(50,3);
pen.e( w, h );
pen.e( w, h, c );
pen.ee( w, h );
pen.ee(w, h, c);
名称:画椭圆
功能:以笔位置为圆心,横半径为w纵半径为h画椭圆。ee命令是画实心椭圆。c为颜色编号。
说明:命令中省略c时用当前笔的颜色画图。如果picU(0);方向会随笔头。
样例:pen.rt(45).picU(0).ee(40,70,13).e(30,60,1);
pen.r( w, h );
pen.r( w, h, c );
pen.rr( w, h );
pen.rr(w, h, c);
名称:画矩形
功能:以笔位置为中心,画宽为w高为h的矩形。rr命令是画实心矩形。c为颜色编号。
说明:命令中省略c时用当前笔的颜色画图。如果picU(0);方向会随笔头。
样例:pen.rt(45).picU(0).r(70,100,2).rr(60,90,3);

坐标命令
命令 功能说明
pen.moveTo( x, y );
名称:移动
功能:直接把笔的位置移动到指定的坐标,但不画图。
说明:moveTo命令不会画出线条,笔的方向也不会改变。
样例:pen.oo(20,1).moveTo(40,0).oo(20,2).moveTo(80,0).oo(20,3);
pen.lineTo( x, y );
名称:连线
功能:笔的位置移动到指定的坐标,并画出线段。
说明:lineTo命令会画出线条,但笔的方向不改变。
样例:pen.lineTo(50,50).lineTo(0,50).lineTo(0,0);
getX( );
名称:获取X坐标
功能:获得笔当前位置的X坐标值,并返回这个值。
说明:getX( )没有参数,但会返回X坐标值,是函数型命令。格式可以不用“pen.”开头。
样例:p.rt(60).fd(200).text(getX(),1);
getY( );
名称:获取Y坐标
功能:获得笔当前位置的Y坐标值,并返回这个值。
说明:getY( )没有参数但会返回Y坐标值,是函数型命令。格式可以不用“pen.”开头。
样例:pen.rt(60).fd(200); pen.text(getY());
getAngle( );
名称:获取角度
功能:获得笔当前的方向角度值,并返回这个值。
说明:getAngle( )没有参数但会返回角度值,是函数型命令。格式可以不用“pen.”开头。
样例:pen.rt(60).fd(100); pen.text(pen.getAngle());
pen.setAngle( a );
名称:设置角度
功能:直接设置笔的方向为指定的角度。
说明:setAngle命令不管现在笔的方向,直接定位到角度a。
样例:pen.rt(60).fd(100).setAngle(180).fd(50);

文字命令
命令 功能说明
pen.text(x);
pen.text(x, c);
名称:画写文字
功能:以笔的当前位置为中心,以c号颜色输出 x 的内容。x可以是数字、变量或字符串。
说明:pen.text(x)每次输出都是以笔的位置为字符串中心。
如果x是浮点数字,按照指定精度输出。
如果缺省c,以笔的颜色为文字颜色。
样例:pen.text("圆周率=",10).moveTo(80,0).text(3.1415);

备注:如果设置了pen.textU(0),输出文字的方向跟随pen的方向旋转。
pen.precision( len );
名称:设置浮点数精度
功能:pen.text命令输出小数时,默认精度为小数点后2位。可以用本命令设置指定的精度。
说明:len过长时,不填充0。
样例:pen.precision(4).text("圆周率="+d2s(3.141592),1,40);
pen.textSize( i );
名称:设置文字大小
功能:设置画出的字符的字体大小为i号。
说明:改变pen.text命令输出的文字大小。
样例:pen.textSize(50).text("GoC程序");
pen.font( f );
名称:设置字体
功能:设置画出的文字的字体。f可以是字体编号或名称,字体编号参见附录1。
说明:字体要当前计算机系统里有字库的才可以显示。
样例
pen.textSize(40).font(3).text("你好",0);
pen.moveTo(80,0).font("华文新魏").text("你好",1);
pen.text(s,col,size,dir,x,y,c2);
pen.text(s,col,size,dir,x,y);
pen.text(s,col,size,dir);
pen.text(s,col,size);
名称:增强显示文字
功能:这4给命令text的补充,增强了text的功能。有c2参数说,表示的是底色编号。c2=-1时,相当于无色(清除原来的颜色)。
说明:text参数有1、2、3、4、6、7个六种格式。
样例:pen. text("GoC程序",11,50,45);
pen.textU( 0/1 );
名称:设置字体方向
功能:执行pen.textU(1),设置文字的方向始终向上;执行pen.textU(0),设置的文件方向随笔的方向旋转。(U是up的意思)。
说明:默认文字方向是始终朝上的。有角度参数text按照参数的方向。
样例
p.textU(0);
for (int i=0; i<6; i++)
  p.fd(150).text(i,i,100).bk(150).rt(60);
d2s( double );
名称:字转字符串
功能:d2s的是double to string的简称,就是数转化为字符串。
说明:在需要字符串和数字连接在一起显示时,使用这个函数比较方便。不是pen的命令,格式不能“pen.”开头。
样例
pen.hide().up();
for (int i=0; i<12; i++)
  p.fd(150).text(d2s(i)+"点",0,30).bk(150).rt(360/12);

图片命令
命令 功能说明
pen.setPath(ps );
名称:设置文件路径
功能:GoC单机版的图片、声音等文件的默认路径是pub子目录。可以用setPath命令指定文件在名字为ps的子目录,方便文件分类。
说明:必须是pub下的子目录。
样例
pen.picL( id,fname );
名称:调入设置一张图片
功能:把文件名为fname的图片调入,并设置对应为编号id,供后面显示图片pic等命令使用。(L表示load)
说明:图片格式可以是png、bmp、jpg等多种; 调入图片文件比较“费时间”,通常在程序开头就完成picL命令。
样例:p.picL(1,"bird.png");
pen.picL( idBeign,idEnd,fnames );
pen.picL( idBeign,idEnd,fname,sBegin );
名称:调入设置多张图片
功能:设一次调入多张图片,并设置对应为编号idBegin到idEnd,供后面显示图片pic等命令使用。
说明:参考” 调入设置一张图片”命令。
第1种命令格式中的idBegin是id的开始编号,idEnd是id的结束编号。fnames是多个图形文件名的字符串,文件名中间用”,”隔开。
第2种命令格式中的sBegin是图片文件的开始编号,图片文件名格式为:文件名+编号+.+后缀。
样例1:pen.picL(0,2,"car.png,pen.png,tree.png");
这个命令相当于:
pen.picL(0,"car.png").picL(1,"pen.png").picL(2,"tree.png");
样例2:pen.picL(3,6,"bike.png",0);
这个命令相当于:
pen.picL(3,"bike0.png").picL(4,"bike1.png").picL(5,"bike2.png").picL(6,"bike3.png");
pen.pic( id );
pen.pic(id, w, h);
pen.pic(cav,id,w,h,angle,x,y);
名称:显示图片
功能:把编号为id的图片在笔位置显示。如果缺省w,h(宽和高)参数,就以图片原始大小显示。有7个参数的是增强格式,参数意义分别是:图层号、图片号、宽度、高度、方向、X坐标、Y坐标。
说明:默认的,笔的位置是图片的中心位置,显示时图片向上,如样例所示。可以参看picO和picUp命令来修改默认项。
样例
p.picL(1,"bird.png");
for (int i=0; i<4; i++)
  p.fd(150).pic(1).bk(150).rt(90);
pen.picO( 1/0 );
名称:设置绘图位置
功能:如果执行pen.picO(1),就是设置笔的位置是图片的中心;如果执行pen.picO(0),就是设置笔的位置是图片的左下角。
说明:默认笔的位置是图片的中心位置。
样例
p.picL(1,"bird.png").picO(0);
for (int i=0; i<4; i++)
  p.fd(150).pic(1) .o(10,1).bk(150).rt(90);
pen.picU( 0/1 );
名称:设置图片方向
功能:执行pen.picU(1),设置图片的方向始终向上;执行pen.picU(0),设置的图片方向不是一直向上,而是按照笔的方向显示。(U是up的意思)
说明:默认图片方向是始终朝上的。
样例
p.picL(1,"bird.png").picU(0);
for (int i=0; i<6; i++)
  p.fd(150) .pic(1).bk(150).rt(60);
pen.cav( -1/0/1 );
名称:设置画布的层
功能:网络版GoC目前有三次画面供画笔绘图。pen.cav(-1)设置画笔在最下面一层;pen.cav(1)设置画笔在最上面一层;pen.cav(0)设置画笔在中间一层。
说明:默认画笔在中间层;cav对绘图命令和图片命令都影响。
样例: p.cav(1).ee(80,200,1).rt(60);
p.cav(0).ee(80,200,2).rt(60);
p.cav(-1).ee(80,200,3).rt(60);
pen.ani(cavId, picId );
pen.ani(cavId, picId, w, h);
pen.ani(cav,id,w,h,angle,x,y);
名称:动画图片
功能:与pic命令类似,但每次显示图片时,会自动清除画布上所以图形。cavId指定在第几层画布上显示,具体参见cav命令;picId为图形编号,具体参见cpicL命令。有7个参数的是增强格式,参数意义分别是:图层号、图片号、宽度、高度、方向、X坐标、Y坐标。
说明:这个命令在指定的画布层上,每次清除前面的图形,显示指定图片,比较方便一些动画制作。
样例
p.speed(10).picL(1,"car.png");
for (int i=0;i<20; i++)
   p.fd(50).ani(-1,1).rt(18);

声音命令
命令 功能说明
pen.soundL(id, fname);
pen.soundL( idBeign,idEnd,fnames );
pen.soundL( idBeign,idEnd,fname,sBegin );
名称:调入声音文件
功能:和把图片文件调入命令picL相似,要播放声音也需要先吧声音文件调入并设置对应为编号id,供后面播放声音sound等命令使用。
说明:声音文件格式可以是mp3、wav等多种;也有批量调入多个文件格式,具体参数格式可以查看命令picL的说明;文件位置也受setPath命令影响。 调入声音文件比较“费时间”,通常在程序开头就完成soundL命令。
样例:p.soundL(1,"rub.mp3");
p.soundL(1,2,"rub.mp3,mus.wav");
pen.sound(id);
名称:播放声音
功能:播放编号为id的声音。
说明:只播放一次。程序结束时所有声音停止。
样例:p.soundL(1,"rub.mp3").sound(1);wait(5);
pen.soundLoop(id);
名称:循环播放声音
功能:循环播放编号为id的声音。
说明:如果再执行sound( id ),编号id的就会解除循环。
样例: p.soundL(1,"rub.mp3").soundLoop(1);wait(10);
pen.soundVol(id, v );
名称:设置音量大小
功能:设置编号为id的声音的音量为v。
说明:v是1到0之间的小数,默认1为最大音量。
样例:p.soundVol(1,0.5); 设置音量为1半。
pen.soundPause(id);
名称:暂停播放
功能:如果正在播放id号声音,这个命令会暂停编号为id的声音播放。
说明:后面如果再播放id号声音,会接着播放。
样例: p.soundPause(1);
pen.soundStop( id );
pen.soundStop();
名称:停止声音播放
功能:如果正在播放id号声音,soundStop( id )命令会停止编号为id的声音播放。
说明:后面如果再播放id号声音,会从头开始重新播放。没有指定id的soundStop()命令,将会停止所有声音播放。
样例: p.soundStop(1);

输入输出命令
命令 功能说明
cin>> x;
名称:键盘输入
功能:从键盘输入数据到变量x。
说明:是在笔的位置附近输入数据,回车结束输入。不是pen的命令,格式不能“pen.”开头。
样例:int x; cin >> x;
cinTitle( string );
名称:键盘输入提示
功能:改变键盘输入窗口的提示“请输入:”为 string。
说明:自动设置为键盘输入模式。不是pen的命令,格式不能“pen.”开头。
样例:int x; cinTitle("第1个人输入:"); cin >> x;
cinWin();
名称:设置窗口输入模式
功能:设置从输入窗口获取数据(数字或字符串)模式,后面的cin>>x将从输入窗口取值赋值给x。
说明:类似从文件读入数据,程序运行前要在输入窗口准备好数据。不是pen的命令,格式不能“pen.”开头。
样例:int a,b; cinWin(); cin >> a >>b; pen.rr(a,b);

cout << x;
名称:窗口输出
功能:在下面输出窗口打印出表达式x的值。
说明:换行可以用cout << endl; 浮点数设置精度为n可用cout << setprecision( n); 默认精度是6; 切换成以定点数输出、以科学计数法输出、以默认方式输出浮点数分别可用cout << fixed; cout << scientific; cout << defaultfloat。 不是pen的命令,格式不能“pen.”开头。
样例:cout << "面积=" <<12*5;

键盘检测命令
命令 功能说明
getKey()
名称:获取按键的码值
功能:这是一个获取键盘输入码的函数,可以取得按键的键码值(具体参见附录2)。是函数型命令。程序执行getKey()时如果有按键,取出这个键的码值,并返回。如果没有按键,返回值为0。
说明不是pen的命令,格式不能“pen.”开头。几个特殊的键码值:空格---32, 回车---13,左箭头---37,上箭头--38, 右箭头---39, 下箭头---40
样例:一个用上下左右键画图的小程序。
waitKey();
名称:暂停,等按键继续
功能:当程序执行到这个语句时,程序暂停运行,等待用户按任意键继续执行程序。
说明不是pen的命令,格式不能“pen.”开头。 waitKey()清除以前的按键纪录,并等待按键;键后的值保存到按键纪录里。如果后面使用getKey()、getDigit()等命令,可以取到这个按键值。
getDigit()
名称:获取按数字键的值
功能:与getKey()函数不同,程序执行getDigit()时如果有按数字键,取出这个数字值(0到9),并返回。如果没有按数字键,返回值为-1。是函数型命令。
说明不是pen的命令,格式不能“pen.”开头。 返回值是0到9的整数,或-1。 在只检测按键是数字键时,getDigit()函数比getKey()函数方便使用。
getDownKey()
名称:获取正按下键的码值
功能:与getKey()函数不同,程序执行getDownKey()时,如果这时正在按键,才取出码值,并返回。否则返回值为0。是函数型命令。
说明不是pen的命令,格式不能“pen.”开头。 getKey()、getDigit()会取键盘纪录(缓冲区)里的键值,而getDownKey()只看“眼前”是否按键,有细微的区别。

鼠标检测命令
命令 功能说明
waitMouse();
名称:暂停,等待鼠标按键
功能:当程序执行到这个语句时,程序暂停运行,等待用户按鼠标左键后继续执行程序。
说明不是pen的命令,格式不能“pen.”开头。 一般后面配合使用getMDX()、getMDY)等命令,可以取到鼠标按键时的坐标。
getMX()
getMY()
名称:获取鼠标坐标值
功能:getMX()是get mouse X-coordinate的简写,是获取当前鼠标X坐标的函数;getMY()是获取当前鼠标Y坐标的函数。
说明不是pen的命令,格式不能“pen.”开头。 鼠标要在绘图窗口上才可以。
样例:绘鼠标轨迹的小程序。
for (;;)
  pen.moveTo(getMX(), getMY()).oo(5,1);
getMDX()
getMDY()
名称:获取按鼠标时的坐标
功能:getMDX()是get mouse down X- coordinate的简写。getMDX()和getMDY()是获取按鼠标时鼠标位置坐标的函数。
说明不是pen的命令,格式不能“pen.”开头。 鼠标要在绘图窗口上才可以。GoC只纪录最后一次按鼠标的位置。
样例:按鼠标画图的小程序。
for (;;)
  pen.moveTo(getMDX(), getMDY()).oo(5,1);
mouseIn(x,y,r)
名称:鼠标是否在某点附近
功能:判断鼠标是否在坐标(x,y)半径r的正方形范围内有按键动作。没有参数的mouseDown(),就是对整个画图区判断。
说明不是pen的命令,格式不能“pen.”开头。 如果在范围内按鼠标,返回1,否则返回0。
样例:if (mouseDown(0,0,10)==1) …
mouseDown(x,y,r);
mouseDown();
名称:鼠标是否按在某点附近
功能:判断鼠标是否在坐标(x,y)半径r的正方形范围内有按键动作。没有参数的mouseDown(),就是对整个画图区判断。
说明不是pen的命令,格式不能“pen.”开头。 如果在范围内按鼠标,返回1,否则返回0。
样例:if (mouseDown(0,0,10)==1) …
cursor( s );
名称:改变光标形状
功能:判断光标(鼠标)的形状。
参数常见的有:default | crosshair | move | help | wait | text | w-resize |s-resize |ne-resize |nw-resize |pointer|等。对应的图形:

说明不是pen的命令,格式不能“pen.”开头。 ”none”取消鼠标的光标;还可以自定义光标形状,例如:cursor("url(images/goc1.ico),auto");。
样例:cursor("move");

按钮命令
命令 功能说明
pen.button(id,string,col,size);
pen.button(id,string,col,size, dir,x,y);
pen.button(id,string,col,size, dir,x,y,bgcol);
pen.button(id,string,col,size, dir,x,y,bgcol,edgecol);
名称:显示一个按钮
功能:buton命令生成一个编号是id的按钮,按钮上的文字为string字符串,col指定了文字的颜色,size指定了文字的大小,dir是方向,坐标(x,y)是文字的中心位置,bgcol为按钮背景色,edge是边框颜色。
说明:如果是简单格式的button(id,string,col,size);就在pen当前位置显示文字。缺省的bgcol为白色,缺省edgecol为灰色。
样例:pen.button(1,"确认按钮",0,30,20,100,200,5,3);
buttonMP(id);
名称:鼠标点击按钮
功能:buttonMP是buton mouse press的简写,buttonMP(id)是判断鼠标是否在点击编号为id的按钮,是返回1,否则返回0。
说明不是pen的命令,格式不能“pen.”开头。 通常使用buttonMP函数配合button来简单实现判断点击按钮功能。
样例
p.c(1).rt(90);
p.button(1,"点这里画黑色点",02,23,0,0,60,5);
for (;;){
  if ( buttonMP(1)) p.oo(10,0);
p.fd(1).rt(1);
}
buttonMI(id);
名称:鼠标是否滑动到按钮上
功能:buttonMI是button mouse in的简写,buttonMI(id)是判断鼠标位置是否在编号为id的按钮内,在按钮内返回1,否则返回0。
说明不是pen的命令,格式不能“pen.”开头。 通常使用buttonMI函数配合button来简单实现判断点击按钮功能。
样例
p.c(1).rt(90);
p.button(2,"移动到这里画绿点",10,23,90,-120,-50,4);
for (;;){
  if ( buttonMI(2)) p.oo(10,3);
p.fd(1).rt(1);
}

新版增加命令
命令 功能说明
pen.alp( d ); 名称:设置透明度
功能:设置笔画图的透明度,d范围0~1。
说明:alp(0)设置完全透明;alp(1)设置不透明;对显示图片命令pic也有影响。
样例:for (int i=1; i<=5; i++) p.ee(90,30,i).alp(0.5).rt(75);
pen.a( r, A, mod, c );
pen.aa( r, A, mod, c );
名称:画圆弧
功能:画一段圆弧。r表示半径,A表示弧度,mod可以取0或1两种模式,分别表示从笔的位置画一段弧或以笔为圆心画一段弧;c表示颜色。
说明:颜色c缺省时,以笔的颜色画;aa画一段实心扇形;画弧和画圆一样,笔的位置不变。如果picU(1);方向会随笔头。
样例1:p.a(100,90,0);

样例2:p.a(100,90,1,3);

样例3:p.aa(100,180,0,3).a(100,90,0,0);
pen.CH ( id );
名称:换笔头
功能:把笔头显示换成编号id(由picL设置)的图形。(c是change、h是head意思)
说明:这个命令可以方便快速制作简单的动画;笔头显示在所有画布的上方;可以使用drawH()把图片固定显示到画布上。
样例
p.picL(1,"pen.png").CH (1);
for (int i=0; i<10; i++)
  p.fd(100).rt(36);
pen.drawH( );
名称:画笔头
功能:复制当前笔头形状,在画布当前图层上画一个固定的笔头图形。
说明:在需要留下笔头图形的地方使用drawH。
样例:for (int i=0; i<5; i++) p.drawH().fd(100).rt(72);
pen.polXY(x, y);
pen.polXY( );
名称:设置多边形坐标
功能:设置多边形的顶点坐标,为pol命令画多边形(polygon)做准备。(x,y)为坐标参数。
说明:如果缺省x,y就是清除以前polXY命令设置的坐标点。
样例:p.polXY(0,80).polXY(80,80).polXY(80,0); p.pol(0,1);
pen.pol( mod );
pen.pol( mod, col );
名称:画多边形
功能:按照polXY命令设置的多边形(polygon)顶点坐标,画多边形。mod=0时,只是画边;mod=1时,多边形会填充颜色。col是画图的颜色编号。
说明:如果缺省颜色号col就以当前笔的颜色画图。
样例:p.polXY(0,80).polXY(80,80).polXY(80,0).pol(1,1);
pen.cap( mod );
名称:设置线端形状
功能:画线是,点的形状有圆形和方形,线端的转折点也有3种不同模式,对应mod取0,1,2。
说明:默认mod=0。
样例
p.size(20).speed(10);
p.cap(0).c(0).fd(80).o(30,10).rt(90).fd(80);
p.cap(1).c(1).fd(80).o(30,10).rt(90).fd(80);
p.cap(2).c(2).fd(80).o(30,10).rt(90).fd(80);
pen.save( );
pen.load( );
名称:保存/恢复笔的状态
功能:save命令把当前笔的颜色、大小、速度、角度、坐标等状态都保存起来;load命令是把save保存的状态恢复。
说明:可以多次save和load,类似“括号”匹配,每个load只恢复到最近的一次save状态。
样例
for (int i=0; i<6; i++){
  p.fd(150).rt(60);
  if (i>0 && i<4)
    p.save().c(10).size(1).lineTo(0,0).load();
}
pen.videoL( vId, fname);
videoPlay(vId,left,top,width,height,loop,volume);
pen.videoStop( vId );
pen.videoPause( vid );
pen.videoGo( vid );
名称:播放视频
功能:videoL把文件名fname的视频文件调入,编号vId。videoPlay在左上坐标为(left,top)宽为width高为height的窗口内播放vId号视频。loop=0表示只播放一次,lopp>0表示循环播放;volume为0到1的小数,指定音量。
说明:支持3种格式视频。MP4 = MPEG 4文件;WebM = WebM 文件;Ogg = Ogg 文件。缺省也支持mp3等声音文件播放。有停止、暂停、继续命令。
样例
p.videoL(1,"lesson1/mov.mp4");
p.videoPlay(1,-100,50,300,200,0,0.6);
wait(10);
getC(x,y);
getC(x,y,cavId);
名称:取颜色
功能:取一点的颜色和透明度,返回一个整数(透明度+RGB,4个字节)。getC(x,y)看到的颜色;getC(x,y,cavId)—指定层(-1/0/1)的颜色。
说明不是pen的命令,格式不能“pen.”开头。函数返回一个整数。如果要知道RGB的值,可以解析返回结果,但边界颜色确实是有误差的。
样例:下面程序是打靶小游戏,使用点击到的颜色判断给分。
pen.ctime( s );
pen.ctime(title,s,c,size,x,y);
名称:倒计时
功能:显示一个倒计时器,s是秒。还可以指定提示字符串、底色、大小、中心位置
说明:用鼠标点击这个倒计时器,中断倒计时,程序继续执行。
样例: pen.ctime( "时间还有:",15,6,50,0,0 );

数学函数
命令 功能说明
abs() 名称:绝对值函数
功能:当x>=0时,abs(x)函数返回x;当x<0时,abs(x)函数返回-x。
说明:简单的说就是把负数变成正数,x是int和double类型都可以。类似C++函数。根据x类型,返回值类型是整数或浮点数。
样例:pen.text(abs(10-33)).hide();
sqrt()
名称:开平方函数
功能:sqrt(x)函数返回x的平方根。
说明:x是int和double类型都可以,但x需要保证>=0。类似C++函数。返回值类型是浮点数。
样例:pen.text(sqrt(2)).hide();
rand()
rand(a,b)
srand( x )
名称:随机函数
功能:随机函数就像从很0到65535这些整数中,随机取一个。rand(a,b)是在a到b之间随机取一个整数。srand( x )是设置一个随机种子,在对随机函数的评测题目中可能会用到。
说明:rand(a,b)不同于C++的函数rand,相当于C++的a+rand()%(b-a+1)。返回值类型是整数。
样例:pen.text(rand(3,9)).hide();
sin( a )
cos( a )
名称:三角函数
功能:就是数学里的正弦函数、余弦函数。
说明:参数a的单位是度,不同于C++函数参数的单位是弧度。
样例:pen.text(sin(50,100)).hide();
atan2(y,x)
名称:反三角函数
功能:atan2(y,x)是知道一个直角三角形的两个直角边,求夹角度数的函数。
说明:返回的单位是度,不同于C++函数返回的单位是弧度。
样例:pen.text(atan2(100,100)).hide();
pow(a,b)
名称:幂函数
功能:就是数学里计算a的b次方的函数。参数a、b是浮点数。
说明:类似C++函数。返回值类型是浮点数。
样例:pen.text(pow(2,0.5)).hide();
strlen( s )
名称:字符串长度
功能:求字符串s的长度。
说明:类似于C的函数strlen。返回值类型是整数。
样例:pen.text(strlen("abcde"),1).hide();
getYear()
getMonth()
getDay()
getHour()
getMinute()
getSecond()
名称:获取日期时间
功能:getYear, getMonth, getDate, getHour, getMinute, getSecond分别获取当前计算机时间的年、月、日、小时、分钟、秒。
说明不是pen的命令,格式不能“pen.”开头。返回值类型是整数。
样例: pen.text( getYear() );
getTime()
名称:获取运行时间
功能:获取程序运行到这里一共花了多少秒。
说明不是pen的命令,格式不能“pen.”开头。返回值类型是浮点数。
样例1:pen.speed(3).fd(100).text( getTime() );

附录1:

常见字体编号表


附录2:

键盘的ASCII码表


附录3:

控制键键码值


修改时间: 2024.10