美文网首页
网易c++------课时43---复杂动画效果

网易c++------课时43---复杂动画效果

作者: heiqimingren | 来源:发表于2020-10-13 16:56 被阅读0次

============================================================================

void main()
{
    initgraph(350, 600);
    IMAGE img_bk;      //定义  IMAGE对象
    loadimage(&img_bk, _T("E:\\5.3 复杂动画效果\\行走素材图.jpg"));
    
    while (1)
    {
        for (int i = 0; i < 4;i++)
        {
            putimage(0, 0, 75, 130, &img_bk, i*75, 0);
            //在坐标(0,0)位置显示image对象
            Sleep(100);
        }
    }
}
/*
// 绘制图像(指定宽高和起始位置)
void putimage(
int dstX,               // 绘制位置的 x 坐标
int dstY,               // 绘制位置的 y 坐标
int dstWidth,           // 绘制的宽度
int dstHeight,          // 绘制的高度
IMAGE *pSrcImg,         // 要绘制的 IMAGE 对象指针
int srcX,               // 绘制内容在 IMAGE 对象中的左上角 x 坐标
int srcY,               // 绘制内容在 IMAGE 对象中的左上角 y 坐标
DWORD dwRop = SRCCOPY   // 三元光栅操作码
);
*/
image.png

===============================================================================

image.png
#include<stdio.h>
#include<stdlib.h>    //清屏命令在这里。
#include <windows.h> //延时10毫秒-sleep,gotoxy函数
#include <iostream>
#include <conio.h>       //getch()----不用按回车,就可以输入字符。    
#include <graphics.h>      //EasyX库,所使用的!
#include <math.h>         //三角函数

using namespace std;



int main()
{
    initgraph(480, 300);
    IMAGE img_human, img_walls; // 定义 IMAGE 对象
    loadimage(&img_human, _T("E:\\5.3 复杂动画效果\\行走素材图.jpg"));
    loadimage(&img_walls, _T("E:\\5.3 复杂动画效果\\walls.gif"));
    int x, y; // 小人整体的坐标位置
    x = 250;
    y = 80;
    int left_i = 0;  // 向左行走动画的序号
    int right_i = 0; // 向右行走动画的序号
    char input;

    int maps[8][5] = { 0 }; // 存储地图信息,0为空地,1为墙
    int i, j;
    // 以下让地图四个边界为墙
    for (i = 0; i < 8; i++)    //上下两个边界
    {
        maps[i][0] = 1;
        maps[i][4] = 1;
    }
    for (j = 0; j < 5; j++)  //左右2个边界
    {
        maps[0][j] = 1;
        maps[7][j] = 1;
    }

    // 显示地图图案,将设置好的墙显示出来。
    for (i = 0; i < 8; i++)
        for (j = 0; j < 5; j++)
            if (maps[i][j] == 1)
                putimage(i * 60, j * 60, &img_walls);

    putimage(x, y, 75, 130, &img_human, 0, 0);
    BeginBatchDraw();

    while (1)
    {
        if (_kbhit())  // 判断是否有输入
        {
            input = _getch();  // 根据用户的不同输入来移动,不必输入回车
            if (input == 'a') // 左移
            {
                clearrectangle(x, y, x + 75, y + 130);  // 清空画面全部矩形区域
                left_i++;
                if (x > 60) // 没有达到左边的墙,才移动小人的坐标
                    x = x - 10;
                putimage(x, y, 75, 130, &img_human, left_i * 75, 0);
                FlushBatchDraw();
                Sleep(1);
                if (left_i == 3) //left_i,代表图片顺序
                    left_i = 0;
            }
            else if (input == 'd')  // 右移
            {
                clearrectangle(x, y, x + 75, y + 130);  // 清空画面全部矩形区域
                right_i++;
                if (x < 340) // 没有达到右边的墙,才移动小人的坐标
                    x = x + 10;
                putimage(x, y, 75, 130, &img_human, right_i * 75, 120);
                FlushBatchDraw();
                Sleep(1);
                if (right_i == 3)
                    right_i = 0;
            }
        }
    }
    return 0;
}

相关文章

网友评论

      本文标题:网易c++------课时43---复杂动画效果

      本文链接:https://www.haomeiwen.com/subject/frivpktx.html