首页 > 其他 > 详细

一. 透明坦克跑起来

时间:2020-05-02 20:34:26      阅读:64      评论:0      收藏:0      [点我收藏+]

说明: 我使用的是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技术分享图片

  

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

一. 透明坦克跑起来

原文:https://www.cnblogs.com/SunChuangYu/p/12818775.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!