用贴图方式,实现皮卡丘按键盘上键丢球,按右键翻滚
效果如下:
创建源文件选择.cpp
vs2019下载Easyx并包含头文件
#include<graphics.h>
Easyx图形库下载地址 www.easyx.cn
项目->属性->高级->字符集改为多字节字符集
小知识:
绝对路径
选择文件夹,右键->属性->位置
注意:也可以用相对路径
把图片和含有.cpp文件夹放在一起
准备就绪 上代码
#include<stdio.h>
#include<graphics.h>
#include<Windows.h>
#include<conio.h>
#define WINDOW_WIDTH 1200 //宽
#define WINDOW_HEIGHT 700 //高
#define PEOPLE_WIDTH 169
#define PEOPLE_HEIGHT 185
int x1, y1; //人物坐标
IMAGE bk,move1,move2;
enum dirct{ p_diuqiu1,p_fangun1,p_tiaoyue1
};
//人物动效
int dir;
int main() ={
initgraph(WINDOW_WIDTH, WINDOW_HEIGHT);
//绝对路径方式 两种任选一种
loadimage(&bk, "把图片放桌面,写绝对路径", WINDOW_WIDTH, WINDOW_HEIGHT, true);
loadimage(&move1, "把图片放桌面,写绝对路径move1.bmp");
loadimage(&move2, "把图片放桌面,写绝对路径move2.bmp");
//相对路径的方式 两种任选一种
loadimage(&bk,"bk.bmp", WINDOW_WIDTH, WINDOW_HEIGHT, true);
loadimage(&move1, "move1.bmp");
loadimage(&move2, "move2.bmp");
x1 =100;
y1 = 350;
int n = 0;
int m = 0;
int ch = 0;
dir = p_diuqiu1;
//动图
while (1) {
BeginBatchDraw();//防闪 贴图前
putimage(0, 0, &bk);
//截取一部分
switch (dir) {
//上72下80左75右77
case p_diuqiu1:
putimage(x1, y1, PEOPLE_WIDTH, PEOPLE_HEIGHT, &move1, n * PEOPLE_WIDTH, PEOPLE_HEIGHT, SRCAND);
putimage(x1, y1, PEOPLE_WIDTH, PEOPLE_HEIGHT, &move1, n * PEOPLE_WIDTH, 0, SRCPAINT);
break;
case p_fangun1:
putimage(x1, y1, PEOPLE_WIDTH+10, PEOPLE_HEIGHT, &move2, n * (PEOPLE_WIDTH+10), PEOPLE_HEIGHT, SRCAND);
putimage(x1, y1, PEOPLE_WIDTH+10, PEOPLE_HEIGHT, &move2, n * (PEOPLE_WIDTH+10), 0, SRCPAINT);
break;
}
EndBatchDraw();// 防闪 贴图后
n++;
if (n >= 4) n = 0;
if (_kbhit()) { //先判断有没有按键行为,没有按键行为没有操作
ch = _getch(); //阻塞函数 不输入它不结束
/*printf("ch:%d\n", ch);*/
switch (ch){
//上72下80左75右77
case 72:
case 'W':
case 'w':
dir = p_diuqiu1;
x1+= 10;
break;
case 77:
case 'd':
case 'D':
dir = p_fangun1;
x1+=40;
break;
}
} m++;
if (m >= 7) m =0;
Sleep(200);
}
while (1);
return 0;
}
bk.bmp
move1.bmp
move2.bmp