一、EasyX 是什么
以下功能为EasyX_20210730版本,最新版本请下载查看EasyX帮助文档
二、图像
主要用贴图功能,做小游戏,需要注意的是坐标默认的原点在窗口的左上角,X 轴向右为正,Y 轴向下为正,度量单位是点。
#include<easyx.h>//图形库
//或者#include<graphics.h>
int main()
{
//创建窗口640,480;
initgraph(640,480);
//图像
IMAGE img;//定义图像变量
loadimage(&img,L"填路径",640,480);//加载图片到 img 并将图片的长宽赋值640,480
//路径可以是相对路径,也可以是绝对路径
//贴图
BeginBatchDraw();//这个函数用于开始批量绘图。执行后,任何绘图操作都将暂时不输出到屏幕上,
putimage(0,0,&img);//将img图片贴在坐标(0,0)位置
EndBatchDraw();//直到执行 EndBatchDraw 才将之前的绘图输出。
return 0;
}
三、音乐
#include<mmsystem.h>//音乐
//或者#include<windows.h>
#pragma comment(lib,"winmm.lib")//库文件 多媒体
int main()
[
//音乐
mciSendString(L"open 填路径",0,0,0);//打开
mciSendString(L"close 填路径",0,0,0);//关闭
mciSendString(L"play 填路径",0,0,0);//播放
mciSendString(L"stop 填路径",0,0,0);//停止
mciSendString(L"pause 填路径",0,0,0);//暂停
mciSendString(L"resume 填路径",0,0,0);//恢复
//循环播放
mciSendString(L"open 填路径",0,0,0);//打开
mciSendString(_T("play 填路径 repeat"), 0, 0, 0);//repeat循环播放
//仅支持wav格式音乐
PlaySound(L"填路径", nullptr, SND_FILENAME | SND_ASYNC);
return 0;
}
四、键盘
获取键盘消息,根据按键执行操作需要包含头文件#include<conio.h>
#include<conio.h>//按键
int main()
{
while(true){
if (_kbhit())//检测是否有按键消息 有消息返回非零值
{
char ch = _getch();//需要包含conio.h
switch (ch)//判断用户按了那些按键
{
case 'w':
case 72://↑小键盘键值
//执行相关操作
break;
case 'a':
case 75://←小键盘键值
//执行相关操作
break;
case 's':
case 80://↓小键盘键值
//执行相关操作
break;
case 'd':
case 77://→小键盘键值
//执行相关操作
break;
}
}
}
return 0;
}
五、鼠标
获取鼠标消息,先了解消息结构体声明,这些均在#include <graphics.h>
struct ExMessage
{
USHORT message; // 消息标识
union
{
// 鼠标消息的数据
struct
{
bool ctrl :1; // Ctrl 键是否按下
bool shift :1; // Shift 键是否按下
bool lbutton :1; // 鼠标左键是否按下
bool mbutton :1; // 鼠标中键是否按下
bool rbutton :1; // 鼠标右键
short x; // 鼠标的 x 坐标
short y; // 鼠标的 y 坐标
short wheel; // 鼠标滚轮滚动值,为 120 的倍数
};
//其余略
};
};
#include <graphics.h>
//或者#include<easyx.h>
int main()
{
initgraph(640,480);
ExMessage m;// 定义消息变量
while(true){
m = getmessage(EM_MOUSE);// 获取一条鼠标消息
if (m.message == WM_LBUTTONDOWN)
{//如果鼠标左键按下
closegraph();
}
}
return 0;
}
六、文字
在使用<graphics.h>或<easyx.h>的窗口时,需要用专门的文字输出函数
#include<easyx.h>
int main()
{
initgraph(640,480);
setbkmode(0);//设置文字背景透明,有背景贴图可用
settextcolor(RED);//设置字体颜色 红色
settextstyle(64, 0, _T("宋体"));//64是字体大小 0是自适应 双引号里可以填字体名字
//参数1:指定高度(逻辑单位)
//参数2:字符的平均宽度(逻辑单位)如果为 0,则比例自适应
//参数3:字体名称
outtextxy(0, 0, _T("Hello World!"));//输出文本的坐标(0,0) 后面是文本内容
system("pause");//暂停看效果
return 0;
}
七、颜色
可用RGB颜色:
RGB(0~255,0~255,0~255);
也可用预定义颜色常量,如下:
常量 值 颜色
BLACK 0 黑
WHITE 0xFFFFFF 白
BLUE 0xAA0000 蓝
GREEN 0x00AA00 绿
CYAN 0xAAAA00 青
YELLOW 0x55FFFF 黄
RED 0x0000AA 红
MAGENTA 0xAA00AA 紫
BROWN 0x0055AA 棕
DARKGRAY 0x555555 深灰
LIGHTGRAY 0xAAAAAA 浅灰
LIGHTBLUE 0xFF5555 亮蓝
LIGHTGREEN 0x55FF55 亮绿
LIGHTCYAN 0xFFFF55 亮青
LIGHTRED 0x5555FF 亮红
LIGHTMAGENTA 0xFF55FF 亮紫
八、实战
学完基础,点进来学习基于EasyX的推箱子游戏吧,保姆级教程,手把手教你写游戏!
学完基础,点进来学习基于EasyX的拼图游戏吧,保姆级教程,手把手教你写游戏!
学完基础,点进来学习基于EasyX的扫雷游戏吧,保姆级教程,手把手教你写游戏!