2026年2月4日C++精灵库更新记录:

C++精灵库是专为少儿入门学习C++的一个教学工具库。它借鉴了logo计算机语言编程教育启蒙的灵魂,是logo小海龟编程在C++上最优秀的实现。它移植了大量Python turtle的命令。增强了不少命令,更容易创造出创意作品,从而更易激发儿童学习C++编程的兴趣,也是青少年及成人学习C++编程良好的启蒙助手。以下是V1.02版和V1.03版的更新内容:

2026年2月4日C++精灵库更新记录:

以下角色名默认为sprite,屏幕默认名为screen。

V1.02版:

1. 增加精细化管理write所写文字的三个命令:
sprite.get_txtitems(), 获取所有的文本编号
sprite.cleartxt(id), 删除指定编号的文本
sprite.cleartxts(n), 删除前n或后n个文本,

2. scale命令重载无参数时返回scale
float k = sprite.scale();
返回当前缩放比例xscale值。

3. oval/ellipse新增fill参数控制是否以填充颜色填充椭圆
sprite.oval(50,100,360,true);

V1.03版:

1. 新增delay单独函数,本质就是调用屏幕的等待函数,但有默认参数为0.016666。
示例:delay(2)

2. 新增角色的done命令可以加0参数,表示角色先隐藏后再进入事件循环。
示例:sprite.done(0)

3. 修正屏幕的savepng命令在非全屏截图时不会截文字与图章的bug。
示例:screen.savepng(filename,{-50, 50, 100, 100},true);
以上savepng命令的参数分别是图像文件名,矩形区域,是否只截绘图层。

4. 新增颤抖命令 tremble
作用: 让角色颤抖
函数原型:
Sprite& tremble(int dx,int dy,int times,float septime);
参数:dx:最大水平位移 ,dy:最大垂直位移,times:次数,septime: 以秒为单位的颤抖间隔时间
返回对角色的引用。
示例一: sprite.tremble();
示例二:sprite.tremble(20,20,30,0.2

5.新增角色的淡入淡出方法
函数原型:
Sprite& fadeout(int step=16,float wt=0.01);
Sprite& fadein(int step=16,float wt=0.01);
示例:sprite.fadeout().fadein();

6. 修复stamp一点小bug.
即盖完图章后,如果角色透明度变了但是图章的透明度应该不变的bug。

下面是C++精灵库总的头文件 sprites.h的文件源代码:

/* 
  sprites.h
  本文件是C++精灵库(C++ Sprites库)总的头文件。它主要包含的是cppsprites目录下面的一些头文件。
  作者:李兴球,电子信箱:52703141@qq.com,  版本V1.0.3,copyright@2026年2月4号。
  C++精灵库继承了logo计算机语言以来的小海龟编程教育思想。在具体实现上传承、扬弃、发展了Python turtle库的相关命令。 所以在C++精灵库中角色与屏幕对象的很多命令和Python turtle保持一致。
  相对于Python turtle库,C++精灵库增强了某些命令,比如heading命令,原Python turtle加中的只能返回角色的方向,而C++精灵库的heading命令通过重载这个命令让角色可以直接朝向某个坐标或角色。
  比如 角色的pencolor命令,原Python turtle可以填写RGB与16进制字符串参数。C++精灵库则通过重载还可以直接支持填写整数参数。这个时候,这个整数表示颜色的色相。
  新增的命令还有: 
  penshade——设定画笔颜色深浅度(阴影度);
  fill——洪水填充命令,适合于在封闭区域进行填充;
  penhue——设定画笔的色相命令;
  pensat——设定画笔的饱和度命令;
  penvalue——设定画笔的明度命令;
  coloradd——颜色增加命令,增加的是颜色的色相;
  oval——画椭圆命令 ;
  penhsv——设定画笔hsv命令,关于hsv颜色模型,请自行查阅资料;
  bounce_on_edge——碰到边缘反弹命令;
  nextshape——下一个造型命令等等,这里不一一列举; 
  
  授权任何人出于任何目的(包括商业用途)都可以使用本软件,并可自由修改和重新分发,比如,你可以自己开发一个C++编辑器把C++精灵库集成在内,须遵守以下限制条件:
  1. 不得歪曲本软件的来源;您不得声称自己编写了原始软件。如果您在作品/产品/课程/书籍等中使用本软件,需要申明使用了C++精灵库及其作者姓名。
  2. 如果你希望修改C++精灵库的源代码发展自己的专属库,修改后的源代码版本必须明确标注为已修改版本,且不得被错误地表述为原始软件。
  3. 本声明不得从任何源代码分发版本中删除或修改。
  C++精灵库采用SDL2库为基座。它的设计目标与适应场景是青少儿C++入门。它并非专业级别的游戏开发与模拟仿真中间件。 如果你想支持作者不断改进C++精灵库,可以进行捐助,捐助时先给作者发送电子邮件。 
  
V1.03版更新记录:
1. 新增delay单独函数,本质就是调用屏幕的等待函数,但有默认参数为0.016666。
示例:delay(2)
2. 角色的done命令可以加0参数,表示角色先隐藏后再进入事件循环。
示例:sprite.done(0)
 
3. 修正屏幕的savepng命令在非全屏截图时不会截文字与图章的bug。
示例:screen.savepng(filename,{-50, 50, 100, 100},true);
以上savepng命令的参数分别是图像文件名,矩形区域,是否只截绘图层。
 
  如果你是高级用户,想单独安装C++精灵库,以下是在基于64位GCC的编辑器里安装C++精灵库的步骤:
 1. 首先给这个C++编辑器安装SDL2库,要求SDL2库的头文件放在编译器的include目录的SDL2目录下面。 
 2. 然后把sprites.h和cppsprites目录拷贝到 "编辑器安装目录\MinGW64\include"目录下面。 
 3. 把库文件libsprites.a拷贝到  "编辑器安装目录\MinGW64\lib"目录下面。
 4. 在编译时加入以下命令:-std=c++17 -Wno-narrowing -fexec-charset=GBK -finput-charset=GBK
 5. 在连接器命令行加入以下命令:-static-libgcc -lmingw32 -lgdi32 -luser32 -lole32 -luuid -lws2_32 -lsprites -lSDL2main -lSDL2 -lSDL2_image -lSDL2_ttf -lSDL2_mixer
 如果C++精灵库基于C++17标准,如果你对编译器不熟悉,建议不要手动安装C++精灵库,而是用作者已经集成好了C++精灵库的pxC++编辑器或者作者发布的DevC++5.11升级包,从而对DevC++5.11一键升级,从而可方便地使用C++精灵库。 
*/
#ifndef SPRITES_H
#define SPRITES_H
#define SDL_MAIN_HANDLED         //禁用 SDL2 对 main() 的重写
 
#define Surface SDL_Surface
#define Texture SDL_Texture
#include "cppsprites/screen.h"
#include "cppsprites/sprite.h"
#include "cppsprites/color_map.h"
#include "cppsprites/functools.h"
#include "cppsprites/polygon_region_filler.h"
#include "cppsprites/polygon_offset.h"
#include "cppsprites/coloradd.h"
#include "cppsprites/writetxt.h"
#include <sstream>
#include "cppsprites/dynamicproperty.h"
#define Create(name) Sprite name("res/" #name ".png", #name)
#endif // SPRITES_H
 
 

 

posted on 2026-02-06 11:35  李兴球  阅读(47)  评论(0)    收藏  举报