欢迎光临
我们一直在努力

关于WebGoC的一些代码与指令

命令分类目录

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

附录

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

命令说明表格

基本画图命令pen

名称:笔

功能:命令笔做出行动,缩写是p。

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( colorId ); 或 pen.color( colorId ) 名称:设置颜色 功能:设置笔的颜色为指定颜色,以后笔将使用这个颜色画图。颜色有16种,编号0到15。 说明:c是color(颜色)的缩写,简称颜色命令;colorId一般为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.setX( posx ); 名称:移动到X坐标的posx位置。 功能:移动笔位置的X坐标到posx位置。 说明:与moveTo()类似。 样例:p.o(100).setX(-100).oo(20,1).setX(100).oo(20,1).hide();

pen.setY( posy ); 名称:移动到Y坐标的posy位置。 功能:移动笔位置的Y坐标到posy位置。 说明:与moveTo()类似。 样例:p.o(100).setY(-100).oo(20,1).setY(100).oo(20,1).hide();

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下的子目录。 样例: int main()
{
setPath("lessonl");
p.picL(1,"round.png");
p.pic(1);
return 0;
}  

pen.picL( id,fname ); 名称:调入设置一张图片 功能:把文件名为fname的图片调入,并设置对应为编号id,供后面显示图片pic等命令使用。(L表示load) 说明:图片格式可以是png、bmp、jpg等多种; 调入图片文件比较“费时间”,通常在程序开头就完成picL命令。 样例:p.picL(1,"bird.png");
pen.picL( idBegin,idEnd,fnames ); pen.picL( idBegin,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.ani(cavId, picId ); pen.ani(cavId, picId, w, h); pen.ani(cavId,picId,w,h,angle,x,y); 名称:动画图片 功能:与pic命令类似,但每次显示图片时,会自动清除画布上所有图形。cavId指定在第几层画布上显示,具体参见cav命令;picId为图形编号,具体参见picL命令。有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.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.cavCls(i); pen.cavShow(i); pen.cavHide(i); 名称:清除、隐藏、显示层 功能:对第i层画布单独操作:清除、隐藏、显示。 说明:在做动画时,这些命令有时很有用。可以事先在一个层上画好下一幅图,再切换显示,达到平滑效果。 样例: p.cavHide(0);
pen.cavWiden(); 名称:改变画布宽度 功能:使画布变成宽屏,分辨率变为为1200*900。该命令主要是制作演示、动画作品时使用。 要注意的是调⽤这个命令时画布会被重新初始化。 样例: p.cavWiden(); p.e(600,450);

声音命令命令功能说明
pen.soundL(id, fname); pen.soundL( idBegin,idEnd,fnames ); pen.soundL( idBegin,idEnd,fname,sBegin ); 名称:调入声音文件 功能:和把图片文件调入命令picL相似,要播放声音也需要先把声音文件调入并设置对应为编号id,供后面播放声音sound等命令使用。 说明:声音文件格式可以是mp3、wav等多种;也有批量调入多个文件格式,具体参数格式可以查看命令picL的说明;文件位置也受setPath命令影响。 调入声音文件加载较慢,通常在程序开头预先完成soundL命令。 样例:p.soundL(1,"pub_sound/rub.mp3");
pen.sound(id); 名称:播放声音 功能:播放编号为id的声音。 说明:只播放一次。程序结束时所有声音停止。 样例:p.soundL(1,"pub_sound/rub.mp3").sound(1);wait(5);
pen.soundLoop(id); 名称:循环播放声音 功能:循环播放编号为id的声音。 说明:如果再执行sound( id ),编号id的就会解除循环。 样例: p.soundL(1,"pub_sound/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);
pen.videoL( vId, fname); pen.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.hide().videoL(1,"pub_video/mov.mp4"); p.videoPlay(1,-200,300,500,300,0,0.6); wait(12);

输入输出命令命令功能说明
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 样例:一个用上下左右键画图的小程序。 int main()
{
for(;;)
{
int k=getKey();
if(k==37) p.lt(10);
if(k==38) p.fd(10);
if(k==39) p.rt(10);
if(k==40) p.bk(10);
}
return 0;
}

waitKey(); 名称:暂停,等按键继续 功能:当程序执行到这个语句时,程序暂停运行,等待用户按任意键继续执行程序。 说明:不是pen的命令,格式不能“pen.”开头。 waitKey()清除以前的按键纪录,并等待按键;键后的值保存到按键纪录里。如果后面使用getKey()、getDigit()等命令,可以取到这个按键值。 样例 p.speed(3); for (;;){   waitKey();   char k = getKey();   if (k=='R') p.c(1);   else if (k=='B') p.c(2);   else if (k==39) p.rt(3).fd(3);   else if (k==37) p.lt(3).fd(3); }

clearKey(); 名称:清除键盘输⼊的缓冲区 功能:当执行到这个语句时,清除键盘输⼊的缓冲区。 说明:不是pen的命令,格式不能“pen.”开头。 与waitKey不同,clearKey能保持程序连续运行。 样例 p.speed(2); for (;;){   char k = getKey();   if (k==39) p.rt(3).fd(3);   else if (k==37) p.lt(3).fd(3);   else p.fd(1);   if (k!=0) clearKey(); }

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的正方形范围内有按键靠近。 说明:不是pen的命令,格式不能“pen.”开头。 如果在范围内鼠标靠近,返回1,否则返回0。 样例:if (mouseIn(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); 名称:显示一个按钮 功能:button命令生成一个编号是id的按钮,按钮上的文字为string字符串,col指定了文字的颜色,size指定了文字的大小,dir是方向,坐标(x,y)是文字的中心位置,bgcol为按钮背景色,edgecol是边框颜色。 说明:如果是简单格式的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(0);方向会随笔头。 样例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(); }

getC(x,y); getC(x,y,cavId);

名称:取颜色 功能:取一点的颜色和透明度,返回一个整数(透明度+RGB,4个字节)。getC(x,y)可看到的最上层颜色;getC(x,y,cavId)—指定层(-1/0/1)的颜色。 说明:不是pen的命令,格式不能“pen.”开头。函数返回一个整数。如果要知道RGB的值,可以解析返回结果,但边界颜色确实是有误差的。 样例:下面程序是打靶小游戏,使用点击到的颜色判断给分。

int main()
{
int c1,c2,c3;
p.hide();cursor("crosshair");//光标改为十字
p.oo(100,6);c1=getC(0,0);//棕色
p.oo(30,1);c2=getC(0,0);//红色
for(;;)
{
waitMouse();//等待点击鼠标
int c3=getC(getMDX(),getMDX());//点击鼠标处颜色
if (c3==c2) s=s+10;//点中红色加10分
if (c3==c1) s=s+5;//点中棕色加5分
p.moveTo(0,-150).clsRec(50,50).text(s,0);//显示分数

}
return 0;
}

pen.fill(colorId); pen.fill(colorId,dx,dy); pen.fill(colorId,dx=0,dy=0,tolerance=0);

名称:填充颜色 功能:以当前笔的位置作为开始点,对一片相同颜色区域染色。如果原来点没有颜色就对一片空区域染色。类似绘图中的“油漆桶”功能。 说明:colorId是颜色编号,dx和dy是与笔位置的横纵坐标的偏移量,最后一个参数表示颜色rgb的欧式距离阈值,用来判定颜色是否相等。 样例:下面程序是对3个相交圆的各部分填充颜色。

数学函数命令功能说明
abs( x ) 名称:绝对值函数 功能:当x>=0时,abs(x)函数返回x;当x<0时,abs(x)函数返回-x。 说明:简单的说就是把负数变成正数,x是int和double类型都可以。类似C++函数。根据x类型,返回值类型是整数或浮点数。 样例:pen.text(abs(10-33)).hide();

floor( d ) 名称:向下取整函数/地板函数 功能:对浮点数d向下取整。 说明:返回值类型是整数。 样例:cout << floor(12.6) <<":" << floor(-12.3) << endl; 输出结果: 12:-13
ceil( d ) 名称:向上取整函数/天花板函数 功能:对浮点数d向上取整。 说明:返回值类型是整数。 样例:cout << ceil(12.5) <<":" << ceil(-12.5) << endl; 输出结果: 13:-12
sqrt( x ) 名称:平方根函数 功能:sqrt(x)函数返回x的平方根。 说明:x是int和double类型都可以,但x需要保证>=0。类似C++函数。返回值类型是浮点数。 样例:pen.text(sqrt(2)).hide();

rand() rand(a,b) 名称:随机函数 功能:随机函数就像从很0到65535这些整数中,随机取一个。rand(a,b)是在a到b之间随机取一个整数。 说明:rand(a,b) 相当于C++的 a+rand()%(b-a+1)。返回值类型是整数。 样例:pen.text(rand(3,9)).hide();

srand( x ) 名称:随机种子函数 功能:srand( x )是设置一个随机种子,使得产生的随机数序列按照这个种子发生。 设置相同的种子, 随机数序列将相同;相反不设置种子时,每次产生的随机数序列会不同。 说明:以后在题目中设置指定的相同随机种子,可以实现随机函数的评测题目进行对比测试。 样例: int t; cin>>t; srand(t); p.speed(9).up(); for (int i=0; i<30; i++)   p.c(rand(0,7)).fd(60+i*5).rt(45).text( rand(3,15));
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, getDay, getHour, getMinute, getSecond分别获取当前计算机时间的年、月、日、小时、分钟、秒。 说明:不是pen的命令,格式不能“pen.”开头。返回值类型是整数。 样例: pen.text( getYear() );

getDate(i) 名称:通用获取时间函数 功能:i等于1,2,3,…8时分别返回年、⽉、⽇、时、分、秒、毫秒和Unix时间 戳(毫秒级) 说明:函数名字不太好,取日期尽量使用前面函数,需要毫秒时才使用。 样例:for (int i=1; i<9; i++)   cout << i<<":" << getDate(i) << endl;

getTime() 名称:获取运行时间 功能:获取程序运行到这里一共花了多少秒。 说明:不是pen的命令,格式不能“pen.”开头。返回值类型是浮点数。 样例1:pen.speed(3).fd(100).text( getTime() );

pen.ctime( s ); pen.ctime(title,s,c,size,x,y); 名称:倒计时 功能:显示一个倒计时器,s是秒。还可以指定提示字符串、底色、大小、中心位置 说明:用鼠标点击这个倒计时器,中断倒计时,程序继续执行。 样例: pen.ctime( "时间还有:",15,6,50,0,0 );

附录1:

常见字体编号表

附录2:

键盘的ASCII码表

附录3:

控制键键码值

选自命令说明表格https://www.51goc.com/goc-ide/cmd-manual/gocComList.html#section1

注:WebGoC现有老版本(https://v1.51goc.com)和新版本(https://top.51goc.com) 

老版本中可能有部分指令无法运行

说GoC能安装的都是假的,不要信


赞(0)
未经允许不得转载:171主机测评 » 关于WebGoC的一些代码与指令
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址