C++初学格斗游戏制作日志 Day1

C++初学格斗游戏制作日志 Day1,第1张

C++初学格斗游戏制作日志 Day1

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程序时,出现了“发现意外文件尾”的错误,通过网上搜索,发现出现这种情况就是类或者结构体的定义后面没有加“;”导致的

后报错全部解决后运行,窗口为空

目前止步于此,希望大佬们能够提供一些宝贵的意见帮助我

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/5710488.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存