当前位置:   article > 正文

Easyx图形库(进阶版)_esyx图形库实现捕捉鼠标坐标代码

esyx图形库实现捕捉鼠标坐标代码

在最近的组队做坦克大战项目中,我也是丰富了自己的知识库,学会了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++游戏趣味编程》这本书,通过几个游戏手把手教你制作,游戏难度逐渐增大。

好啦,谢谢大家的浏览
 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/94076
推荐阅读
相关标签
  

闽ICP备14008679号