C++可视化角色按键移动控制的实现
1.新建项目
新建一个空项目,并添加一个源文件(.cpp)
记住.cpp文件所在的位置
2.新建一个窗口,并添加背景图片
将要使用的图片,拷贝到项目所在文件夹
与.cpp文件处于同一文件夹
#include//用于标准输入输出 #include //用于图形的函数库 intmain() { initgraph(1440,768); //创建一个窗口,大小设定为背景大小,以免图片拉伸变形 IMAGEbackground; //创建一个图像,命名为background loadimage(&background,"background.bmp"); //加载背景图片 putimage(0,0,&background); //输出到窗口,背景图片从0,0,为原点 getchar(); //暂停,等待输入任意字符 closegraph(); //关闭窗口 return0;
3.加入一个角色
在main()函数中插入角色
IMAGErole,roleY; loadimage(&role,"role.bmp"); loadimage(&roleY,"roleY.bmp"); putimage(100,500,93,100,&roleY,0,200,SRCAND); putimage(100,500,93,100,&role,0,200,SRCPAINT);
第4行
putimage(100,500,93,100,&roleY,0,200,SRCAND);
100,500表示角色在窗口中的坐标,位置大约在左下角
93,100表示角色图片的大小
&roleY插入的图片对象
0,200从该图片的0,200像素开始取值
SRCAND使用AND的方式加载
第4、5行,使用三元光栅操作实现透明贴图
背景图:
4.接收用户输入的按键,并判断输入的是什么
#include//控制台输入输出 voidkeyDonw() { charchoice=_getch(); switch(choice) { case'w': case'W': case72: break; case's': case'S': case80: break; case'a': case'A': case75: break; case'd': case'D': case77: break; } }
需要添加一个头文件,并接收用户输入的按键
接收上下左右四个方向键
使用switch()循环,判断用户输入
5.当用户按键后,执行相应功能
1.首先将main()函数中定义的一些变量提出来,作为全局变量
不然只有main()函数可以使用,别的函数使用不了
IMAGEbackground,role,roleY;
2.putimage(100,500,93,100,&roleY,0,200,SRCAND);
putimage(100,500,93,100,&role,0,200,SRCPAINT);
putimage()函数中的,表示角色在窗口位置的参数,
会随着用户操作方向键改变因此不能再使用100,500
应该使用变量代替,如:intx;inty;
case'w': case'W': case72: putimage(0,0,&background); putimage(x,y,93,100,&roleY,imageNum*93,300,SRCAND); putimage(x,y,93,100,&role,imageNum*93,300,SRCPAINT); imageNum++; y-=5; if(imageNum==4) imageNum=0; break;
以按下向上箭头为例:
- 首先重新载入背景putimage(0,0,&background);
- 其次将图片显示为角色像上
- 用imageNum记录按下照片的次数
- 由于每走一步角色会稍有变化,向上走的图片共有四张,
- 用每个角色的宽度X按下的次数
- 使用if语句,当照片到第四张的时候,回到第一张
- 将y轴减小5个像素,是人物向上移动
6.添加个背景音乐BGM
将要使用的音乐,拷贝到项目所在文件夹
与.cpp文件处于同一文件夹
#include////包含多媒体接口 #pragmacomment(lib,"winmm.lib") intmain() { mciSendString("open1.mp3aliasmusic",0,0,0);//媒体控制接口函数 mciSendString("playmusicrepeat",0,0,0); }
7.完整代码
#include//用于标准输入输出 #include //用于图形的函数库 #include //控制台输入输出 #include //包含多媒体接口 #pragmacomment(lib,"winmm.lib") IMAGEbackground,role,roleY; intx=100; inty=500; intimageNum=0; //为照片计数,从0开始 voidkeyDonw() { charchoice=_getch(); switch(choice) { case'w': case'W': case72: putimage(0,0,&background); putimage(x,y,93,100,&roleY,imageNum*93,300,SRCAND); putimage(x,y,93,100,&role,imageNum*93,300,SRCPAINT); imageNum++; y-=5; if(imageNum==4) imageNum=0; break; case's': case'S': case80: putimage(0,0,&background); putimage(x,y,93,100,&roleY,93*imageNum,0,SRCAND); putimage(x,y,93,100,&role,93*imageNum,0,SRCPAINT); imageNum++; y+=5; if(imageNum==4) imageNum=0; break; case'a': case'A': case75: putimage(0,0,&background); putimage(x,y,93,100,&roleY,93*imageNum,100,SRCAND); putimage(x,y,93,100,&role,93*imageNum,100,SRCPAINT); imageNum++; x-=5; if(imageNum==4) imageNum=0; break; case'd': case'D': case77: putimage(0,0,&background); putimage(x,y,93,100,&roleY,93*imageNum,200,SRCAND); putimage(x,y,93,100,&role,93*imageNum,200,SRCPAINT); imageNum++; x+=5; if(imageNum==4) imageNum=0; break; } } intmain() { initgraph(1440,768); //创建一个窗口,大小设定为背景大小,以免图片拉伸变形 loadimage(&background,"background.bmp"); //加载背景图片 putimage(0,0,&background); loadimage(&role,"role.bmp"); loadimage(&roleY,"roleY.bmp"); putimage(x,y,93,100,&roleY,0,200,SRCAND); putimage(x,y,93,100,&role,0,200,SRCPAINT); mciSendString("open1.mp3aliasmusic",0,0,0);//媒体控制接口函数 mciSendString("playmusicrepeat",0,0,0); while(true) { keyDonw(); } getchar(); //暂停,等待输入任意字符 closegraph(); return0; }
8.遇到的一些问题
VS中可能找不到头文件
安装EasyX,素材中有
loadimage()函数,没有与参数列表匹配的重载函数
右击项目名称,选择“属性”,点左侧的“配置属性”,在右侧的设置中找到“字符集”,修改默认的“使用Unicode字符集”为“使用多字节字符集(即MBCS)”即可。
涉及的素材下载链接:Csucai_jb51.rar
到此这篇关于C++可视化角色按键移动控制的实现的文章就介绍到这了,更多相关C++按键移动控制内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。