首先,在编程学习的领域中,存在着这样一个关联:只要能够学习 Scratch 编程,那么就具备了学习 Go C 编程的基础。Go C 编程在我个人看来,其难度系数并不高,甚至相较于 python 而言更为简单,从某种程度上,它可以被视作 C++ 学习旅程中的前置课程。
在接触 Go C 编程的过程中,朋友们问得最多、心中疑惑最大的点,往往集中在它与 Scratch 编程的差异上。大家都知道,Scratch 采用的是直观便捷的拖拽式积木编程模式,而 Go C 编程则属于代码编程范畴,这一区别使得许多人在潜意识里认为学习 Go C 编程会比 Scratch 更具挑战性。但实际情况并非如此。
Go C 编程,特别是在 C++ 画图方面,其实拥有两种独特的操作方式。其中一种方式极为简单,简单到只需要动动鼠标,进行点击操作,就能将所需的命令精准无误地放置到代码区。这就如同在一个满是工具的盒子里,你只需轻轻点击你想要的工具,它就会自动出现在你需要使用的地方。这种操作模式极大地降低了编程的门槛,即使是初次接触代码编程的新手,也能迅速上手,轻松开启 Go C 编程的探索之旅,完全不必担心因代码的复杂性而望而却步。
在线编辑器:
点击下方链接即可进入Goc编辑器内进行编程训练练习...
命令分类目录
类型 | 命令 |
---|---|
基本画图命令 | 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 |
命令说明表格
1. 基本画图命令
基本画图命令 | |
---|---|
命令 | 功能说明 |
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 ); |
2. 设置笔状态命令
设置笔状态命令 | |
---|---|
命令 | 功能说明 |
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); |
3. 状态命令
状态命令 | |
---|---|
命令 | 功能说明 |
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); |
4. 增强画图命令
增强画图命令 | |
---|---|
命令 | 功能说明 |
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); |
5. 坐标命令
坐标命令 | |
---|---|
命令 | 功能说明 |
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); |
6. 文本命令
文字命令 | |
---|---|
命令 | 功能说明 |
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); |
7. 图片命令
图片命令 | |
---|---|
命令 | 功能说明 |
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); |
8. 声音命令
声音命令 | |
---|---|
命令 | 功能说明 |
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); |
9. 输入输出命令
输入输出命令 | |
---|---|
命令 | 功能说明 |
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; |
10. 键盘检测命令
键盘检测命令 | |
---|---|
命令 | 功能说明 |
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()只看“眼前”是否按键,有细微的区别。 |
11. 鼠标检测命令
鼠标检测命令 | |
---|---|
命令 | 功能说明 |
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"); |
12. 按钮命令
按钮命令 | |
---|---|
命令 | 功能说明 |
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); } |
13. 新版增加命令
新版增加命令 | |
---|---|
命令 | 功能说明 |
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 ); |
14. 数学函数命令
数学函数 | |
---|---|
命令 | 功能说明 |
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码表
什么是ASCII?
同学们,你们知道吗?我们每天都在和各种各样的文字、符号打交道,像我们写作业用的字母、数字,还有标点符号。那你们有没有想过,电脑是怎么认识这些东西的呢?要知道,电脑可不像我们人一样能直接看懂这些,它只认识数字。
ASCII 就是一种能帮助电脑认识我们常用字符的特殊规则。比如说字母 A,在 ASCII 规则里,它被对应成了数字 65。就好像我们给每个字符都发了一个专属的数字 “身份证”。当我们在电脑上敲下字母 A,电脑就会按照 ASCII 的规则,知道这个 A 对应的数字是 65。再比如小写字母 a,它的 ASCII 码是 97,数字 1 对应的 ASCII 码是 49。
ASCII 一共规定了 128 个字符的编码,这里面有我们熟悉的 26 个大写英文字母、26 个小写英文字母、从 0 到 9 的数字,还有一些常用的标点符号和特殊符号。这样一来,电脑就能通过这些数字,准确地知道我们输入的是什么字符,然后进行各种处理,比如显示在屏幕上,或者存到文档里。所以啊,ASCII 就像是一座桥梁,让我们和电脑能顺利地 “交流” 字符信息。
附录3:
控制键键码值
作者: 杨校
出处: https://mryang.blog.csdn.net
分享是快乐的,也见证了个人成长历程,文章大多都是工作经验总结以及平时学习积累,基于自身认知不足之处在所难免,也请大家指正,共同进步。
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 如有问题, 可邮件(35725672@qq.com)咨询