#include<graphics.h>和#include<easyx.h>的区别
时间: 2023-09-10 11:13:46 浏览: 199
`<graphics.h>` 和 `<easyx.h>` 都是 C++ 语言的图形库头文件,用于在 Windows 平台上进行图形绘制。它们的区别在于:
1. `<graphics.h>` 是 Borland 公司开发的 BGI(Borland Graphics Interface)图形库的头文件,而 `<easyx.h>` 则是中国开发者学习网络(EasyX)开发的图形库的头文件。
2. `<graphics.h>` 只能在 Borland 公司的 C++ 编译器中使用,而 `<easyx.h>` 可以在多个编译器中使用,如 Visual Studio、Dev-C++、Code::Blocks 等。
3. `<easyx.h>` 比 `<graphics.h>` 更加简单易用,提供了更多的图形绘制函数,也可以在不同的窗口模式下进行图形绘制,如窗口模式、全屏模式等。
总之,如果你是在 Borland 公司的 C++ 编译器中进行图形绘制,可以使用 `<graphics.h>`;如果你使用其他编译器,或者想要更加简单的图形库,可以考虑使用 `<easyx.h>`。
相关问题
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <graphics.h> #include <conio.h> #include <mmsystem.h> #pragma comment(lib,"winmm.lib") IMAGE background; IMAGE array[16]; IMAGE arrayY[16]; struct bgInfo { int x; int y; int speed; }; struct bgInfo bg = { 1000, 0, 5 }; enum 方向 { LEFT, RIGHT }; struct roleInfo { int x; int y; int direct; }; struct roleInfo role = { 300, 400 ,RIGHT }; void loadResource() { loadimage(&background, "Background\\background.jpg"); for (int i = 0; i < 16; i++) { char fileName[50] = ""; sprintf(fileName, "Helix_attack\\Helix_attack_r%d.gif", i + 1); loadimage(array + i, fileName); sprintf(fileName, "Helix_attack\\Helix_attacky_r%d.gif", i + 1); loadimage(arrayY + i, fileName); } } void drawStand(int i) { putimage(0, 0, 1000, 700, &background, bg.x, bg.y); putimage(role.x, role.y, arrayY + i, SRCAND); putimage(role.x, role.y, array + i, SRCPAINT); } void drawKey(int beginFrame, int endFrame) { int i = beginFrame; while (i < endFrame) { putimage(0, 0, 1000, 700, &background, bg.x, bg.y); putimage(role.x, role.y, arrayY + i, SRCAND); putimage(role.x, role.y, array + i, SRCPAINT); i++; Sleep(50); } } DWORD WINAPI playMusic(LPVOID lpVoid) { mciSendString("open 1.mp3", 0, 0, 0); mciSendString("play 1.mp3 wait", 0, 0, 0); mciSendString("close 1.mp3", 0, 0, 0); return 0; } void keyDown() { fflush(stdin); char userKey = _getch(); switch (userKey) { case 'a': case 'A': case 75: bg.x -= bg.speed; role.x -= 5; if (bg.x <= 0) bg.x = 0; break; case 'd': case 'D': case 77: bg.x += bg.speed; role.x += 5; if (bg.x >= background.getwidth() - 1000) bg.x = background.getwidth() - 1000; break; case 'w': case 'W': case 72: role.y -= 5; break; case 's': case 'S': case 80: role.y += 5; break; case ' ': CreateThread(0, 0, playMusic, 0, 0, 0); drawKey(4, 16); break; } } int main() { loadResource(); initgraph(1000, 700); int i = 0; while (1) { drawStand(i); i++; if (i == 4) i = 0; Sleep(50); if (_kbhit()) { keyDown(); } } _getch(); closegraph(); return 0; }
这段代码是一个简单的游戏程序,使用了C语言和EasyX图形库。程序的功能是控制一个角色在背景中移动,并播放音乐。
代码的主要流程如下:
1. 加载资源:通过loadimage函数加载背景图片和角色动画图片。
2. 绘制静态画面:通过putimage函数将背景图片和角色绘制到屏幕上。
3. 监听键盘输入:通过_getch函数获取用户按下的键,根据不同的键执行相应的操作。
4. 移动角色:根据用户按下的键来改变背景的位置和角色的位置,实现角色的移动。
5. 播放音乐:通过CreateThread函数创建一个线程来播放音乐,使用mciSendString函数打开、播放和关闭音乐文件。
6. 绘制动态画面:通过循环调用drawStand函数,不断切换角色的动画帧,实现角色的动态效果。
7. 程序退出:当用户按下任意键时,程序退出。
请注意,这段代码使用了EasyX图形库,请确保你已经安装了EasyX,并配置好开发环境。另外,代码中的图片文件和音乐文件需要与代码文件放在同一目录下。
#include <iostream> #include <string> #include <stdio.h> #include<graphics.h> using namespace std; int Screen_width = 1080; int Screen_height = 720; const char* DF_move_R[16] = { "./DF_move_R/%d.png" }; IMAGE DF_move_R[16]; //当前显示的图片编号 int DF_move_R_index = 1; void DF_run_r() { initgraph(1080, 720); //戴夫的初始坐标和大小 int DF_x = 100; int DF_y = 100; int DF_width = 128; int DF_height = 190; //戴夫奔跑时的速度 int DF_speed = 5; //计算戴夫奔跑时的新坐标 int new_x = DF_x + DF_speed; int new_y = DF_y; //判断新坐标是否超出屏幕范围 if (new_x + DF_width > Screen_width) { new_x = Screen_width - DF_width; } //更新戴夫的坐标 DF_x = new_x; DF_y = new_y; //切换图片 DF_move_R_index = (DF_move_R_index + 1) % 4; cleardevice(); //在新坐标处打印戴夫奔跑的图片 loadimage(&DF_move_R[DF_move_R_index] , "./DF_move_R/%d.png", DF_width, DF_height); }中loadimage的函数声明是什么
在这段代码中,`loadimage` 函数的声明应该是:
```c++
int loadimage(IMAGE* img, LPCTSTR filename, int width = 0, int height = 0);
```
其中,`img` 是指向 `IMAGE` 结构体的指针,`filename` 是图片文件的路径,`width` 和 `height` 分别指定图片的宽度和高度。如果 `width` 和 `height` 都为 0,则表示使用原始图片的尺寸。需要注意的是,这里没有 `shared` 参数,因为 EasyX 图形库默认使用了共享内存方式加载图片。
阅读全文