返回

小熊猫C++中开发EGE图形应用(入门篇)

发布时间:2023-02-03 04:04:45 1234
# html# less# 数据# 信息# 工具

简介

根据本人评估分析,目前最新版本的小熊猫C++ 2.10是国内C++初学者(包括少儿)入门C++的最优者,相对于Dev-C++ 5.X、微软Visual Studio系列、微软开源的VSCode、Code::Blocks。

学习编程,特别是C++编程,当先从图形编程与动画编程开始,这个不需争论。首先是海龟作图,然后是图形绘制,最后是小型游戏制作。

久而久之,数组、指针、数据结构、算法、数学、英语、项目框架知识,及其他扩展性分析学习,随着对C++代码的一行行调试与可视化的成就感,想不学C++都难。

为了提升初学者(特别是中小学生)学习C语言的兴趣,小熊猫Dev-C++在发行版携带的编译器中内置了xege(一个BGI兼容的作图库)和海龟作图库。这两个库的语法都比较简单直观,容易学习,但对初学者来说还是有一个使用上的障碍,就是在编译时需要手工设置链接参数。笔者在xege的兴趣群里,经常会遇到使用gcc编译器的学生用户因为未能正确设置链接参数导致不能正确编译程序的问题。而使用vc的用户,因为vc支持#pragma comment语法,可以直接从头文件中获取需要的链接参数,就不会有这方面的问题。因为,为了让小熊猫Dev-C++的入门用户也能够获得和VC用户类似的免手工配置体验,小熊猫Dev-C++提供了自动链接功能。它的原理是这样的:小熊猫Dev-C++在对文件进行代码补全的符号解析时,会获取到文件包含的所有头文件信息。在编译时,会先从自动补全列表中获取头文件对应的链接参数信息,然后再调用gcc编译器进行编译。


作者:瞿华

链接:https://zhuanlan.zhihu.com/p/433173978

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


本文示例测试环境

  • Windows7(64位) 旗舰版
  • 小熊猫C++ 2.10

简单应用

在进行初步的EGE测试编程时,的确存在问题。

在使用EGE官网简单测试代码对应的示例工程中,当编译运行时,遇到如下图所示的编译错误:

小熊猫C++中开发EGE图形应用(入门篇)_头文件

main.cpp源码如下:

//开场动画的开启
#include

int main() {
//窗口初始化为640*480大小,开启EGE开场动画
initgraph(640,480,INIT_WITHLOGO);

//设置窗口背景色(蓝色)
setbkcolor(EGERGB(0x23,0xAB,0xF2));

//等待用户按键
getch();

//关闭图形界面
closegraph();

return 0;
}

主要错误代码如下描述:

undefined reference to `ege::initgraph(int, int, int)'

这种错误是几乎在任何C++ IDE常见的错误,即链接器找不到库文件中有关函数的定义,一般来说是没有提供对应的库文件所致。一篇英文中对应的大致英文描述如下:

Undefined reference to 'sym' is a link error saying you never defined the symbol 'sym'

Which means none of the object files you gave to the linker contain it.

In your case, they are likely in some library and you have to inform the linker which one it is.


You do this by adding -lxxx where the library name is libxxx.

And you add the path containing it to the library search list with -Lpath

根据小熊猫C++官网上的说明,似乎不应出现这样的错误(因为其内置的自动链接设置,如下图所示):

小熊猫C++中开发EGE图形应用(入门篇)_头文件_02

还没有联系官方请教这个问题。但是,根据引用1与2提示,解决方案还是有的,如下:

【解决方案】修改链接设置(菜单命令【工具】-【选项】)圣诞框如下图所示,并作出如窗口中右下角的库输入(9个最常用的库:-lgraphics -lgdiplus -luuid -lmsimg32 -lgdi32 -limm32 -lole32 -loleaut32 -lwinmm):

小熊猫C++中开发EGE图形应用(入门篇)_官网_03

加入上述库链接选项后,再编译运行上述示例工程,一切OK!

小熊猫C++中开发EGE图形应用(入门篇)_解决方案_04

假病毒问题

在运行后面的几段EGE代码时,例如下面:

//色彩的计算
#include

int main()
{
initgraph(640, 480, 0);

//设置窗口背景色(纯白)
setbkcolor(EGERGB(0xFF, 0xFF, 0xFF));

//设置填充颜色, 使用EGERGB宏
//三个参数值的范围均为0 - 255 (0xFF),分别表示红色亮度,绿色亮度,蓝色亮度
//EGERGB(0x23,0x80,0xF2)为蓝色, 各分量值为红色R(0x23), 绿色G(0x80), 蓝色B(0xF2)
setcolor(EGERGB(0x23, 0x80, 0xF2));

//画一个圆, 圆心在(200,200),半径100
circle(200,200,100);

getch();

closegraph();
return 0;
}

360杀毒系统提示出现木马病毒:

发现木马:HEUR/QVM202.0.FE4D.Malware.Gen

导致工程结果文件:project1.exe读取权限被屏蔽(permission denied)。

在确定没有问题的情况下,解除上面屏蔽后,才能够正常运行。

纠正

其实,主要原因还是对于小熊猫C++不熟悉导致的问题。经过分析,使用这个新款IDE创建EGE多媒体程序的思路如下图所示:

小熊猫C++中开发EGE图形应用(入门篇)_头文件_05

即在创建新项目时直接使用【多媒体】-下的【Graphics.h】就可以了。之后,IDE会自动为当前创建的在工程本身层级上设置的链接库(而不是如同上面一样,通过【工具】-【选项】在所有项目上都添加那些链接库!)。

之后,在【项目】-【项目属性】对话框中自动添加了相应的链接库参数:

小熊猫C++中开发EGE图形应用(入门篇)_官网_06

而且,系统自动创建一个示例main.cpp文件:

#include 
#include

void paintstar(double x, double y, double r, double a)
{
int pt[10];
for (int n = 0; n < 5; ++n)
{
pt[n*2] = (int)( -cos( PI * 4 / 5 * n + a ) * r + x );
pt[n*2+1] = (int)( sin( PI * 4 / 5 * n + a) * r + y );
}
fillpoly(5, pt);
}

int main()
{
initgraph( 640, 480 );
setcolor( RGB(0xff, 0xff, 0xff) );
setfillcolor( RGB(0, 0, 0xff) );
setrendermode(RENDER_MANUAL);

double r = 0;
for ( ; is_run(); delay_fps(60) )
{
r += 0.02;
if (r > PI * 2) r -= PI * 2;

cleardevice();
paintstar(300, 200, 100, r);
}
return 0;
}

直接按下F11功能键编译并运行一下项目即可,结果如下图:

小熊猫C++中开发EGE图形应用(入门篇)_官网_07

是一个围绕自己中心永久旋转的一个五角星。

引用

  •  ​​https://tieba.baidu.com/p/2030177858​​
  • ​​https://xege.org/beginner-lesson-1.html​​
  • ​​​https://xege.org/beginner-lesson-2.html​​
  • ​​https://royqh1979.gitee.io/redpandacpp/​​
  • ​​https://www.zhihu.com/column/c_1440014168041054208​​


特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
Simple-Web-Server HTTP开源服务器库 2023-02-03 03:54:38