今天接触了一个特别好的图形库,可以拯救像我一样目前只会C语言,但是又想让程序窗口不再一片漆黑,或者自己做个小游戏
不再那么呆板的超级实用的库。以下是Easy X的简介。
EasyX 是针对 C++ 的图形库,可以帮助 C 语言初学者快速上手图形和游戏编程。
为什么要用 EasyX?
许多学编程的都是从 C 语言开始入门的,而目前的现状是:
1. 有些学校以 Turbo C 为环境讲 C 语言,只是 Turbo C 的环境实在太老了,复制粘贴都很不方便。
2. 有些学校直接拿 VC 来讲 C 语言,因为 VC 的编辑和调试环境都很优秀,并且 VC 有适合教学的免费版本。可惜在 VC 下只能做一些文字性的练习题,想画条直线画个圆都很难,还要注册窗口类、建消息循环等等,初学者会受严重打击的。初学编程想要绘图就得用 TC,很是无奈。
3. 还有计算机图形学,这门课程的重点是绘图算法,而不是 Windows 编程。所以,许多老师不得不用 TC 教学,因为 Windows 绘图太复杂了,会偏离教学的重点。新的图形学的书有不少是用的 OpenGL,可是门槛依然很高。
所以,我想给大家一个更好的学习平台,就是 VC 方便的开发平台和 TC 简单的绘图功能,于是就有了这个 EasyX 库。如果您刚开始学 C 语言,或者您是一位教 C 语言的老师,再或者您在教计算机图形学,那么这个库一定会让您兴奋的。
网址:https://easyx.cn/
你可以下载帮助文档快速上手,希望对你有所帮助!
给大家分享一个时钟(单纯的会C是不可能做出这么漂亮的时钟的)
#include#include #include #define High 480 // 游戏画面尺寸 #define Width 640 #define PI 3.14159 int main() { initgraph(Width, High); // 初始化 640 x 480 的绘图窗口 int center_x,center_y; // 中心点的坐标,也是表的中心 center_x = Width/2; center_y = High/2; int secondLength = Width/5; // 秒针的长度 int minuteLength = Width/6; // 分针的长度 int hourLength = Width/7; // 时针的长度 int secondEnd_x,secondEnd_y; // 秒针的终点 int minuteEnd_x,minuteEnd_y; // 分针的终点 int hourEnd_x,hourEnd_y; // 时针的终点 float secondAngle; // 秒钟对应的角度 float minuteAngle; // 分钟对应的角度 float hourAngle; // 时钟对应的角度 SYSTEMTIME ti; // 定义变量保存当前时间 BeginBatchDraw(); while (1) { // 绘制一个简单的表盘 setlinestyle(PS_SOLID, 1); setcolor(WHITE); circle(center_x, center_y, Width/4); // 画刻度 int x, y,i; for (i=0; i<60; i++) { x = center_x + int(Width/4.3 * sin(PI * 2 * i / 60)); y = center_y + int(Width/4.3 * cos(PI * 2 * i / 60)); if (i % 15 == 0) bar(x - 5, y - 5, x + 5, y + 5); else if (i % 5 == 0) circle(x, y, 3); else putpixel(x, y, WHITE); } outtextxy(center_x - 25, center_y + Width/6, "我的时钟"); GetLocalTime(&ti); // 获取当前时间 // 秒钟角度变化 secondAngle = ti.wSecond * 2*PI/60; // 一圈一共2*PI,一圈60秒,一秒钟秒钟走过的角度为2*PI/60 // 分钟角度变化 minuteAngle = ti.wMinute * 2*PI/60 + secondAngle/60; // 一圈一共2*PI,一圈60分,一分钟分钟走过的角度为2*PI/60 // 时钟角度变化 hourAngle = ti.wHour * 2*PI/12 + minuteAngle/12; // 一圈一共2*PI,一圈12小时,一小时时钟走过的角度为2*PI/12 // 由角度决定的秒针端点坐标 secondEnd_x = center_x + secondLength*sin(secondAngle); secondEnd_y = center_y - secondLength*cos(secondAngle); // 由角度决定的分针端点坐标 minuteEnd_x = center_x + minuteLength*sin(minuteAngle); minuteEnd_y = center_y - minuteLength*cos(minuteAngle); // 由角度决定的时针端点坐标 hourEnd_x = center_x + hourLength*sin(hourAngle); hourEnd_y = center_y - hourLength*cos(hourAngle); setlinestyle(PS_SOLID, 2); setcolor(YELLOW); line(center_x, center_y, secondEnd_x, secondEnd_y); // 画秒针 setlinestyle(PS_SOLID, 5); setcolor(BLUE); line(center_x, center_y, minuteEnd_x, minuteEnd_y); // 画分针 setlinestyle(PS_SOLID, 10); setcolor(RED); line(center_x, center_y, hourEnd_x, hourEnd_y); // 画时针 FlushBatchDraw(); Sleep(10); setcolor(BLACK); setlinestyle(PS_SOLID, 2); line(center_x, center_y, secondEnd_x, secondEnd_y); // 隐藏前一帧的秒针 setlinestyle(PS_SOLID, 5); line(center_x, center_y, minuteEnd_x, minuteEnd_y); // 隐藏前一帧的分针 setlinestyle(PS_SOLID, 10); line(center_x, center_y, hourEnd_x, hourEnd_y); // 隐藏前一帧的时针 } EndBatchDraw(); getch(); // 按任意键继续 closegraph(); // 关闭绘图窗口 return 0; }
但是注意文件后缀名是.cpp因为EasyX是C++的库