============================================================================
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;
}
网友评论