EasyX库使用入门 [学编程做游戏,快速入门](二)

简介: EasyX库使用入门 [学编程做游戏,快速入门]

图像处理函数


在使用图像之前,需要定义一个变量,然后把图片加载进变量中才能进行使用.

平时定义变量都是使用的基础数据类型,比如:int temp;

在使用图像的时候需要使用easyx提供给我们的类型:IMAGE,如:IMAGE.img;

loadimage(IMAGE* pDstImg,LPCTSTR pimgFile,int nWidth=0,int nHeight=0,bool bResize=false);从文件中读取图像

pDstImg            //保存图像的IMAGE对象指针&img

plmgFile            //图片文件名

nWidth=0          //图片的拉伸宽度

nHeight=0         //图片的拉伸高度

bResize=false   //是否调整IMAGE的大小以适应图片

putimage(int dstX,int dstY,IMAGE* pSrcimg,DWORD dwRop=SRCCOPY);在当前设备上绘制指定图像

dstX               //绘制位置的X坐标

dstY               //绘制位置的Y坐标

pSrcImg         //要绘制的IMAGE对象指针&

dwRop=SRCCOPY //三元光栅操作码  

加载图片

   IMAGE img;//定义一个对象
  loadimage(&img, L"./相对路径或者绝对路径",500,400);//加载图片,后面两个调整图片大小
  putimage(0, 0, &img);//输出图片,0,0,相当于坐标

注:相对路径: ./表示当前文件夹下,../当前文件夹的上一级目录

     绝对路径:E:\vs\youxi01

这里我推荐用相对路径,我讲解下操作.

1.点击此文件

image.png

2.将图片加载到你创建的文件下面,我这里是test.cpp

image.png

运行结果:

image.png

鼠标消息函数


  1. 鼠标消息需要使用MOUSEMSG类型,比如:MOUSEMSG.msg;
  2. 然后用MoustHit()判断是否有鼠标消息(左键,右键,中间,移动)
  3. 如果有鼠标消息就可以进行接收鼠标消息了msg=GetMouseMsg();
  4. 鼠标消息主要成员:
  1. uMsg;//当前鼠标消息
  2. x;      //当前鼠标x坐标
  3. y;      //当前鼠标y坐标
  • uMsg可用来判断当前鼠标消息是什么消息
  1. WM_LBUTTONDOWN 鼠标左键消息
  2. WM_RBUTTONDOWN 鼠标右键消息

代码示例:(要把前面写的代码的都放进去)

//鼠标消息
  while (1)//不断地处理事务,需要循环
  {
    if (MouseHit())
    {
      //cleardevice();
      MOUSEMSG msg = GetMouseMsg();//接收鼠标消息
      if (msg.x > 200 && msg.x < 500 && msg.y>50 && msg.y < 100)
      {
        printf("我是QK,大家多多关照");
      }
      //消息分发
      switch (msg.uMsg)
      {
      case WM_LBUTTONDOWN:
        outtextxy(400, 400, L"鼠标左键按下");
        printf("坐标(%d,%d)\n", msg.x, msg.y);
        break;
      case WM_RBUTTONDOWN:
        outtextxy(400, 400, L"鼠标右键按下");
        printf("坐标(%d,%d)\n", msg.x, msg.y);
        break;
      }
    }
  }

注:这里>200,<500那段是判断鼠标是否点击在那个矩形区域内,如果是则输出下面的文字,如果不是则输出你所指向的坐标

运行结果:

e467cf110c344866aeb3e5e0a77e8cf7.png

另一种方式:

代码示例:

#include<iostream>
#include<easyx.h>
#include<string>
using namespace std;
void button(int x, int y, int w, int h)
{
  setbkmode(TRANSPARENT);
  setfillcolor(BROWN);
  fillroundrect(x, y, x + w, y + h, 10, 10);
  settextstyle(30, 0, L"黑体");
  wchar_t  text[] = L"按钮";
  int tx = x + (w - textwidth(text)) / 2;
  int ty = y + (h - textheight(text)) / 2;
  outtextxy(tx, ty, text);
}
int main()
{
  initgraph(640, 480, EW_SHOWCONSOLE);
  button(50,50,150,50);
  while (1)//不断地处理事务,需要循环
  {
    if (MouseHit())
    {
      //cleardevice();
      MOUSEMSG msg = GetMouseMsg();//接收鼠标消息
      //消息分发
        switch (msg.uMsg)
        {
        case WM_LBUTTONDOWN:
          if (msg.x >= 50 && msg.x <= 50 + 150 && msg.y >= 50 && msg.y <= 50 + 50)
          {
            printf("我是按钮,我被点击了\n");
          }
          break;
        default:
          break;
        }
    }
  }
  getchar();
  return 0;
}

运行结果

image.png

键盘消息函数


image.png

代码示例:

//鼠标消息
  int x = 0, y = 0;
  while (1)//不断地处理事务,需要循环
  {
    cleardevice();
    setfillcolor(BROWN);
    fillcircle(x, y, 20);
    char key = _getch();
    printf("%d,%c\n", key, key);
    switch (key)
    {
    case 72://上键
    case 'w':
    case 'W':
      y-=5;
      printf("上键\n");
      break;
    case 80://下键
    case 's':
    case 'S':
      y+=5;
      printf("下键\n");
      break;
    case 75:
    case'a'://左键
    case'A':
      x-=5;
      printf("左键\n");
      break;
    case 77://右键
    case 'd':
    case 'D':
      x+=5;
      printf("右键\n");
      break;
    }

运行结果:

image.png

image.png

//双缓冲绘图,需要放在绘图代码之前和之后
  BeginBatchDraw();
......
     EndBatchDraw();

另一种键盘操作方式:

        if (GetAsyncKeyState(VK_UP))//上键
    {
      y -= 5;
    }
    if (GetAsyncKeyState(VK_DOWN))//下键
    {
      y += 5;
    }
    if (GetAsyncKeyState(VK_LEFT))//左键
    {
      x -= 5;
    }
    if (GetAsyncKeyState(VK_RIGHT))//右键
    {
      x += 5;
    }

两种对比:后一种更好一点,不仅可以上下左右走,还可以斜着走

播放音乐


image.png

代码示例:

#include<iostream>
#include<conio.h>//使用getch() 
#include<graphics.h>
#include<mmsystem.h>//包含多媒体设备接口头文件
#pragma comment(lib,"winmm.lib")//加载静态库
//播放音乐
void BGM()
{
  //打开音乐,播放音乐,repeat重复播放
  mciSendString(L"open ./15161.mp3",0,0,0);
  mciSendString(L"play ./15161.mp3",0,0,0);
}

修改窗口标题


image.png

代码示例:

void change()
{
  //获取窗口句柄
  HWND hnd = GetHWnd();
  //设置窗口标题
  SetWindowText(hnd, L"c语言plus,欢迎关注");
  //弹出窗口,提示用户操作
  int isok=MessageBox(hnd, L"恭喜你成功过关", L"提示", MB_OKCANCEL);
  if (isok == IDOK)
  {
    printf("你点击了OK");
  }
  else if (IDCANCEL == isok)
  {
    printf("你点击了取消");
  }
}

运行结果:

image.png

image.png

相关文章
|
4月前
|
定位技术 C# 图形学
从零开始的unity3d入门教程(二)----基本功能讲解
这是一篇Unity3D入门教程,详细介绍了Unity界面操作、游戏物体创建修改、场景搭建、玩家控制、音效添加以及游戏测试和导出的全过程。
从零开始的unity3d入门教程(二)----基本功能讲解
|
6月前
|
存储 定位技术 API
C语言实战 -- 经典贪吃蛇游戏(含完整源码)
C语言实战 -- 经典贪吃蛇游戏(含完整源码)
204 1
|
7月前
|
机器学习/深度学习 数据可视化 TensorFlow
50个Python学习资源,从初学者到高级玩家都有了!
50个Python学习资源,从初学者到高级玩家都有了!
240 0
|
Python
【python基础知识】7.实操-用Python实现“文字PK”小游戏(二)
【python基础知识】7.实操-用Python实现“文字PK”小游戏(二)
128 0
【python基础知识】7.实操-用Python实现“文字PK”小游戏(二)
|
存储 程序员 Python
【python基础知识】7.实操-用Python实现“文字PK”小游戏(一)
【python基础知识】7.实操-用Python实现“文字PK”小游戏(一)
213 0
|
Python
Python 控制台操作的文字版“数独”游戏(非GUI版本)
Python 控制台操作的文字版“数独”游戏(非GUI版本)
204 0
|
编译器 C语言 C++
EasyX库使用入门 [学编程做游戏,快速入门](一)
EasyX库使用入门 [学编程做游戏,快速入门]
EasyX库使用入门 [学编程做游戏,快速入门](一)
|
Python
10个python经典小游戏(上)(动图演示+源码分享)(下)
10个python经典小游戏(上)(动图演示+源码分享)
396 0
|
Python
10个python经典小游戏(上)(动图演示+源码分享)(上)
10个python经典小游戏(上)(动图演示+源码分享)
395 0
|
计算机视觉 C++ Python
超详细OpenCV 教学1(python语言版本)---安装OpenCV
超详细OpenCV 教学1(python语言版本)---安装OpenCV
338 0