• 一. 透明坦克跑起来


    说明: 我使用的是visual Studio 2019,安装的是Easyx这个库。

    推荐一篇透明贴图的博客。  详解透明贴图和三元光栅操作

    1创建一个Image文件夹,存放坦克图片(main函数放在TANKTEST里了)

     资源在这里

      

      

    2.然后就是一些 EasyX库(graphics.h)  函数的使用,看不懂建议去翻EasyX的帮助文档,贴下代码。

    #include<graphics.h>
    #include<iostream>
    #include<stdlib.h> 
    #include<time.h> 
    #include <string>
    #define KEY_DOWN(VK_NONAME) (GetAsyncKeyState(VK_NONAME) & 0x8000)   //一个键是否按下 
    
    int  r = 168, g = 168, b = 168 , x = 500, y = 300;
    void transparentimage(int x, int y, IMAGE* srcimg, IMAGE* maskimg)//三元光栅贴透明图
    {
        putimage(x, y, maskimg, SRCAND);  //遮罩图片
        putimage(x, y, srcimg, SRCPAINT);
    }
    int main() {
        //图片加载
        IMAGE pic[4], mask[4],ImageShow , ImageMask;
        loadimage(&mask[0], _T("Image\player_hide0_up.png"), 60, 60, false);
        loadimage(&mask[1], _T("Image\player_hide0_down.png"), 60, 60, false);
        loadimage(&mask[2], _T("Image\player_hide0_left.png"), 60, 60, false);
        loadimage(&mask[3], _T("Image\player_hide0_right.png"), 60, 60, false);
        loadimage(&pic[0], _T("Image\player1_0_up1.png"), 60, 60, false);
        loadimage(&pic[1], _T("Image\player1_0_down1.png"), 60, 60, false);
        loadimage(&pic[2], _T("Image\player1_0_left1.png"), 60, 60, false);
        loadimage(&pic[3], _T("Image\player1_0_right1.png"), 60, 60, false);
        ImageShow = pic[0], ImageMask = mask[0];
    
        initgraph(800, 600);  //创建绘图窗口
        BeginBatchDraw();  //防止坦克闪烁
        while (1) {
            r += rand() % 10 - 5, g += rand() % 10 - 5, b += rand() % 10 - 5;  //调渐变
            setbkcolor(RGB(r,g,b));  //设置背景色
            cleardevice();  //背景色填充
            if (KEY_DOWN('W')) {
                y -= 2;
                ImageShow = pic[0], ImageMask = mask[0];
            }
            else if (KEY_DOWN('S')) {
                y += 2;
                ImageShow = pic[1], ImageMask = mask[1];
            }
            else if (KEY_DOWN('A')) {
                x -= 2;
                ImageShow = pic[2], ImageMask = mask[2];
            }
            else if (KEY_DOWN('D')) {
                x += 2;
                ImageShow = pic[3], ImageMask = mask[3];
            }
            //putimage(300, 300, &pic);  //普通的贴图
            transparentimage(x, y, &ImageShow, &ImageMask);
            FlushBatchDraw();  //防止坦克闪烁
            Sleep(10);
        }
        EndBatchDraw();  //防止坦克闪烁
    
        //system("pause");
        closegraph();
        return 0;
    }

    3 运行截图

     

                  又要被带飞了好开心

    DLS

      

    详解透明贴图和三元光栅操作

  • 相关阅读:
    云计算
    uc/xi
    互联网 2.0概念
    java连接数据库
    记录一下安装 mysql 的踩坑之路
    1
    Linux介绍与基本必知命令
    Web课程Linux命令统计
    7——条件判断、三目运算、条件循环、迭代循环
    6——散列类型、运算符优先级、逻辑运算
  • 原文地址:https://www.cnblogs.com/SunChuangYu/p/12818775.html
Copyright © 2020-2023  润新知