一、初遇问题
使用内置的模板创建海龟作图小程序:
此时,系统自动生成的项目文件下有一个默认的main.c文件:
但是,编译运行时出现错误:
二、解决原因及方案
根据上述错误,网络搜索大致找到原因如下(引用文2):
接下来,就根据自己机器配置信息逐个排查吧。
百度搜索,了解到检测本机显卡所支持OpenGL版本的国外工具软件OpenGL Extensions Viewer。如果引文处下载不了,读者可到51CTO工具下载区下载。
下载后安装运行,我的计算机显示信息如下(老旧的i3 cpu,集成显卡):
也就是说,最多支持到OPenGL 2.1。于是,根据瞿华老师指导,下载并替换了小熊猫C++中对应的文件。如果引文处下载不了,读者可到51CTO工具下载区下载。
上述一切准备就绪后,重新编译运行程序,一切正常,结果如下图所示:
【建议】然后,小熊猫C++开发老师会很快注意到这个问题并作相应的处理,到时我们就不必再费事了。
补充——rturtle海龟绘图命令小结
在小海龟行动之前,我们需要熟悉一下绘图环境。这里用列表小结一下作者介绍过的命令。就像手册一样,你可以在用到时再查看。
函数名通常是由其功能作用相关的英文单词构成的组合或简写,还是比较好理解的。使用函数时,模仿一定要细致到位,比如要区分字母大小写、参数数量和顺序、中英文符号格式,还要注意缩进、多写注释、不漏写字符等。
画布窗口相关命令
- 创建作图窗口 initWorld( 800, 600 ) 尺寸为像素数
- 设置背景色 setBackgroundColor( LIGHTBLUE )
- 设置背景图片 setBackgroundImageFile( "d:\\banner-001.png" ) F4 隐藏/显示背景图片
- 重新设置网格 createGrids() 如:createGrids(50,1,16,DARKGREEN,DARKRED); F2 隐藏/显示坐标网格
- 截图 F5键来抓取当前窗口中的图形,并保存图片文件到.exe所在文件夹
- 清屏 clearScreee( ) 或 cs( )
- 等待关闭窗口 waitClose( );
- 清理作图窗口 closeWorld( );
画笔和填充
想象海龟的身子下方有一只笔,笔的尺寸和颜色决定了海龟痕迹的粗细和颜色。
- 画笔线条粗细 setPenSize( 3 )
- 画笔颜色 setPenColor( DARKRED )
- 落笔 penDown( ) 或 pd( ) 默认落下
- 抬笔 penUp( ) 或 pu( )
- 是否落下 isPenDown( )
- 填充图形 beginFill( ) 开始……endFill( LIGHTGREEN )结束
*利用抬笔和落笔可绘制虚线。填充时,如果路径中存在交叉,则可能会有部分区域不能被填充。
*泛洪填充(fillToBorder、fill )还没有看到如何使用。
海龟移动基本命令
- 设置速度 setSpeed( 500 ) 默认速度为100像素/秒
- 前进距离 forward( ) 或 fd( 100 ) 尺寸为像素数
- 后退距离 backward( ) 或 bk( 100 )
- 左转角度 leftTurn( ) 或 lt( 90 ) 单位为度,360度为一圈
- 右转角度 rightTurn( ) 或 rt( 90 )
- 返回初始位置 home( )
坐标系和高级移动函数
后面的函数基于坐标系和方向角。
坐标系
【注意】原点在窗口正中间。
方向角
*后面的函数就是在坐标系和方向角基础上描述的。
有过程移动
- 爬到点(x,y)处 gotoXY(x,y)
- 转到方向角angle turnTo(angle)
- 朝向点(x,y)转动 faceXY(x,y)
无过程瞬移
- 瞬移到点(x,y)处 setXY(x,y)
- 横移到横坐标为x setX(x)
- 纵移到纵坐标为y setX(y)
- 转到方向角angle setHeading(angle) 或 setAngle(angle) 貌似与 turnTo(angle) 相同啊,都是原地转
- 瞬移回原点(0,0) home() 初始方向角为90度
获取海龟位置
- 获取x、y坐标 getXY( )
- 获取x坐标 getX( )
- 获取y坐标 getY( )
- 获取方向角 getHeading( ) 或 getAngle
还有一些函数,用到时再介绍吧。
引用
- https://www.zhihu.com/column/c_1554405188471123968
- https://zhuanlan.zhihu.com/p/458335134?utm_id=0,raylib绘图库简介
- https://opengl-extensions-viewer.en.softonic.com/support
- https://fdossena.com/?p=mesa/index.frag