Easyx图形库(进阶版)

在最近的组队做坦克大战项目中,我也是丰富了自己的知识库,学会了easyx的几种以前没有接触过的函数,由于在之前博主的文章《Easyx图形库的基础知识》中没有提到,所以今天博主特地发一篇easyx的进阶版文章来总结这几种常用的函数或操作。

1.鼠标操作:

MOUSEMSG msg;  //定义一个鼠标消息
msg=GetMouseMsg();//获取鼠标消息
switch(msg.uMsg)
{
    case  WM_MOUSEMOVE:       ……break;//鼠标移动消息
    case  WM_MOUSEWHEEL:      ……break;// 鼠标滚轮拨动消息
    case  WM_LBUTTONDOWN:     ……break;// 左键按下消息
    case  WM_MBUTTONDOWN:     ……break;// 中键按下消息
    case  WM_RBUTTONDOWN:     ……break;// 右键按下消息
}
2.双缓冲操作,用于缓解屏幕操作(比如这次坦克大战操作中,我们对于被子弹打到的坦克的重新刷新就用到这个函数)是配套存在的他俩。

BeginBatchDraw();

EndBatchDraw();

3.放映图片函数:

putimage(pos_x,pos_y,photo_width,photo_high,&image,photo_x,photo_y);//pos_x,pos_y表图片显示的位置,photo_width,photo_high表图片的大小,&image图片的地址,photo_x,photo_y表从该处开始取图

4.获得图片image的宽和高:

IMAGE iamge;

image.getwidth();//获取宽

image.getheight();//获取高

5.计时(记秒数),不要忘了他的必添加头文件

#include <time.h>//头文件

clock_t start=clock();

clock_t end=(clock()-start)/CLOCKS_PER_SEC;

6.画旋转线段:

int line_long;//线段长度
float line_Alge;//每次转动的角度
int center_x,center_y,end_x,end_y;//线段的起点与终点
end_x=center_x+line_long*sin(line_Alge);
end_y=center_y+line_long*cos(line_Alge);
line(center_x,center_y,end_x,end_y);
7.随机函数:

#include <time.h>;

int num=rand()%100;//从0-99之间随机选取一个数

在使用随机函数的开始出要用随机函数的种子,避免每次出现的随机数是一样的:srand((unsigned int)time(NULL));//这句是必备的且常用。

8.创立图形窗口并保留控制台窗口:

initgraph(w,h, SHOWCONSOLE),w、h的意义不必多说,重点关注第三个参数。

9.播放音乐:其实这并不算图形库的内容,但博主我觉得很常见且好用,所以放出来啦。

#include <mmsystem.h>                            //必备头文件
#pragma  comment(lib,”winmm.lib”)        //引用静态库
mciSendstring(“open  音乐文件名(加文件类型,例:.mp3) alias music”,NULL,NULL,NULL);

//将音乐文件放在与源文件同一目录下,alias  music的意思就是将这个音乐文件重新命名为music
mciSendstring(“play music repeat”,NULL,NULL,NULL);//播放音乐,play意为播放,同样可换做pause:暂停,stop:停止,close:关闭,Resume:继续。Repeat意为重复播放。
mciSendstring(“stop music repeat”,NULL,NULL,NULL);//暂停播放音乐。

10.防止闪屏操作(其实上面有讲过,这里主要是讲操作思路)

1,在循环画之前加上:BeginBatchDraw();//开始批量绘图

2,在循环中,画图之下加上:FlushBatchDraw();

3,在循环下面,加上:EndBatchDraw();//结束批量绘图

4,如有需要可以延迟程序:Sleep();//让程序睡眠多少毫秒,注意是毫秒哦(博主踩过的坑)

11.键盘消息函数(获取键盘按键消息)

获取鼠标消息函数【用来控制x,y坐标】
  //getch(); 需要头文件 <conio.h>
    ·getch();需要使用返回值来判断//使用_kbhit()判断有无键盘消息
    ·非ASCII表字符:上(72),下(80),左(75),右(77)
  //GetAsyncKeyState(键值); 需要头文件 windows.h
    ·GetAsyncKeyState(键值);需要传入一个键值
    ·如果按下这些返回真:上(VK_UP),下(VK_DOWN),左(VK_LEFT),右(VK_RIGHT)
    //【注意:也可使用大写字母表示】
  //【注意:(graphics.h包含了windows.h,也包含了放音乐的头文件:<mmsystem.h>】
 12.修改窗口

·GetHWnd();//获取窗口句柄,获取之后可以用来操作窗口【弹窗】
//HWND hwnd=GetHWnd();//获得窗口句柄
//SetWindowText(hwnd,标题名称);//修改窗口标题
//MessageBox(hwnd,对话框内容,标题名称,MB_OKCANCEL);

13.播放音乐函数(和上面讲的一样,只是这里再作补充)

//mciSendString("open hh.mp3 alias BBB",NULL,0,NULL); 打开音乐//alias为路径取别名
    //mciSendString("play BBB repeat",NULL,0,NULL);播放音乐//加上repeat可以重复播放
    //mciSendString("close BBB",NULL,0,NULL);关闭音乐
    
14.获取用户输入:

// 八、获取用户输入
bool InputBox(LPTSTR pString, int nMaxCount, LPCTSTR pPrompt = NULL, LPCTSTR pTitle = NULL, LPCTSTR pDefault = NULL, int width = 0, int height = 0, bool bOnlyOK = true);
// 鼠标消息
// 支持如下消息:
//        WM_MOUSEMOVE        鼠标移动
//        WM_MOUSEWHEEL        鼠标滚轮拨动
//        WM_LBUTTONDOWN        左键按下
//        WM_LBUTTONUP        左键弹起
//        WM_LBUTTONDBLCLK    左键双击
//        WM_MBUTTONDOWN        中键按下
//        WM_MBUTTONUP        中键弹起
//        WM_MBUTTONDBLCLK    中键双击
//        WM_RBUTTONDOWN        右键按下
//        WM_RBUTTONUP        右键弹起
//        WM_RBUTTONDBLCLK    右键双击
struct MOUSEMSG
{
    UINT uMsg;                // 当前鼠标消息
    bool mkCtrl;            // Ctrl 键是否按下
    bool mkShift;            // Shift 键是否按下
    bool mkLButton;            // 鼠标左键是否按下
    bool mkMButton;            // 鼠标中键是否按下
    bool mkRButton;            // 鼠标右键是否按下
    short x;                // 当前鼠标 x 坐标
    short y;                // 当前鼠标 y 坐标
    short wheel;            // 鼠标滚轮滚动值 (120 的倍数)
};

bool MouseHit();            // 检查是否存在鼠标消息
MOUSEMSG GetMouseMsg();        // 获取一个鼠标消息。如果没有,就等待
bool PeekMouseMsg(MOUSEMSG *pMsg, bool bRemoveMsg = true);    // 获取一个鼠标消息,并立即返回
void FlushMouseMsgBuffer();    // 清空鼠标消息缓冲区

好啦,今天的分享就到此为止啦,本篇为博主从各大网站搜集有关资料整理而成。如果大家对于想用C语言或c++结合easyx图形库来编程游戏有兴趣想学的话,博主给大家推荐一本书《c和c++游戏趣味编程》这本书,通过几个游戏手把手教你制作,游戏难度逐渐增大。

好啦,谢谢大家的浏览
 

  • 1
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值