PS:不是技术文,萌新小白请多指教
目前学习工具主要为vc6.0和vs2022
学校有布置嵌入式和单片机的寒假作业(去tb买有一堆,还带教程,温控,解锁这类见怪不怪,我不是很感兴趣)好在也可选开发课题,依靠c语言的基础学习不是很深入的自学c++,因为闲来无事加入了一些c++类的学习群,偶然看见有卖课的托分享了一些文件,其中有扫雷贪吃蛇啥的,源码其实我在GitHub有找到一堆,但是他那个1kb大小的文档激起了我的兴趣
于是我选择了格斗类游戏作为我的第一个项目(虽然明知道卖课的只是宣传,东西根本没给全,但是自己还是要尝试一下),开发课题因为不能以窗口形式呈现,所以后面还要打包成exe文档,有些许难度,总之加油吧!
打开文件代码如下:
#include#include #include #include #pragma comment(lib,"winmm.lib") IMAGE img[23], img_y[23], background; int frameMoveNum = 0; int x = 0, y = 200; //加载图片 void InitImg(){ char buff[128], buff_y[128]; for (int i = 1; i < 24; i++){ sprintf(buff, "images\%d.bmp", i); sprintf(buff_y, "images\%dy.bmp", i); loadimage(&img[i - 1], buff); loadimage(&img_y[i - 1], buff_y); } loadimage(&background, "images\background.jpg", 640, 480); } //画角色 void drawRole() { putimage(x, y, &img_y[frameMoveNum], SRCAND); putimage(x, y, &img[frameMoveNum], SRCPAINT); //改变贴图的帧数 frameMoveNum++; Sleep(50); //防止动作过度 if (frameMoveNum == 6) frameMoveNum = 0; } //释放技能 void keyPlay(IMAGE background) { frameMoveNum = 6; //从第六张图片开始 ,是放技能 while (frameMoveNum < 24) { BeginBatchDraw(); putimage(0, 0, &background); drawRole(); frameMoveNum++; Sleep(5); EndBatchDraw(); } frameMoveNum = 1; //技能放完帧数还原 } int main(){ initgraph(640, 480); //创建窗口 mciSendString("play x.mp3 repeat", 0, 0, 0); InitImg();//加载图片 while (1){ BeginBatchDraw(); putimage(0, 0, &background);//显示背景图 drawRole();//显示人物图 if (kbhit()) { fflush(stdin); switch (getch()){ case 'W': case 'w': case 72: y -= 5; break; case 's': case 'S': case 80: y += 15; break; case 'a': case 'A': case 75: x -= 15; break; case 'd': case 'D': case 77: x += 15; break; case 'k': keyPlay(background); break; } } EndBatchDraw(); } return 0; }
报错了4~5处吧,好在网络上找到了解决的方法:
1.无法打开 源 文件 "graphics,h"
头文件graphics.h属于easyx库,EasyX 文档 - 使用教程
2.没有与参数列表匹配的 重载函数 "loadimage" 实例
解决方法:Visual Studio菜单栏【调试】→【调试属性】→【“项目名”配置属性】→【高级】→【高级属性】右【字符集】设置成【使用多字节字符集】
3.C4996 ‘sprintf‘: This function or variable may be unsafe
项目属性—配置属性----C/C++ ----预处理器----预处理定义,添加两个宏:_CRT_SECURE_NO_DEPRECATE
_SCL_SECURE_NO_DEPRECATE(这个参考别的大佬对sprintf函数解决方法,虽然不知道解决原理是什么,但是报错没了,就不想深究了,有想了解的朋友可以去看看( C4996 ‘sprintf‘: This function or variable may be unsafe_COMAC_919的博客-CSDN博客)
报错全部解决后运行得到如下:系统找不到指定文件,无法启动程序:
考虑到vs2022的版本问题,又转使用vc6.0一试:
4.fatal error C1004: unexpected end of file found (放在vc6.0时的报错)
后经过查找发现是因为在 { }符号缺少造成的。 使用Vc6.0 编写C程序时,出现了“发现意外文件尾”的错误,通过网上搜索,发现出现这种情况就是类或者结构体的定义后面没有加“;”导致的
后报错全部解决后运行,窗口为空
目前止步于此,希望大佬们能够提供一些宝贵的意见帮助我
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)