基于C++ EGE游戏头文件更新啦,增加精灵组和跳跃等功能

用EGE如何实现游戏效果(附加)

可以利用EGE图形库不断地显示图像,从而产生图层的堆叠,让游戏中的图像动起来,这应该是

二维游戏的基本原理,例如:一秒连续打印60次为fps(60)

如何让EGE窗口实现这个原理,代码如下:

ROLE hero;//建立一个精灵
hero.getname("hero.png");//加载物体图像
for(;is_run();delay_fps(60)){
    hero.move(1,0);//移动精灵
    //在此加入背景代码
    hero.print_role();//打印精灵
}

这样就建立出了一个基本的人物移动样例,注意如果没有打印背景来盖住前面的图层,你会得到一条长长的图层堆叠,像个进度条

更新版代码

cyfgame游戏库更新至1.1,代码如下不必多言^_^

/*库名称:cyfgame.h
 版本:1.1
 这是一个基于graphics.h图形库编写的一个十分轻量级的游戏编程库
 如要使用,请先下载EGE图形库*/
#include<graphics.h>
#include<windows.h>
int cyf[1000];
void creat_window(int x,int y,char name[60],int w,int h)//显示窗口,此函数为非必要函数,用EGE的initgraph可以使用,格式一样
{
	initgraph(w,h);
	setcaption(name);
	movewindow(x,y);
}
void hide_cmd(void)//隐藏控制台
{
	ShowWindow(GetForegroundWindow(),SW_HIDE);
}
bool aniu(char name[60],int x,int y,int bian,mouse_msg mouse)//按钮函数 1.按钮的png文件路径,x,y为按钮坐标,4.按钮编号(必须填写)5.定义一个鼠标结构体getmouse(),此函数需要在循环中使用
{
	PIMAGE png=newimage();
	int w,h;
	getimage(png,name);
	w=getwidth(png);
	h=getheight(png);
	if(cyf[bian]==0)
	{
		putimage(x,y,png);
		cyf[bian]=1;
	}
	delimage(png);
	if(mouse.is_down() && mouse.is_left() && mouse.y>=y && mouse.y<=y+h && mouse.x>=x && mouse.x<=x+w)
	{
		return true;
	}
	else
	{
		return false;
	}
}
struct ROLE//角色结构体 pngname:png路径 x,y角色坐标 inint_role()初始化角色 move(x,y)移动角色多少格不是坐标
{
	char pngname[60];
	bool jumpbreak=false;
	int x;
	int y;
	void getname(char name[60])
	{
		for(int i=0;i<=59;i++)
		{
			pngname[i]=name[i];
		}
	}
	void init_role(void)
	{
		PIMAGE png=newimage();
		getimage(png,pngname);
		putimage_transparent(NULL,png,x,y,(0,0,0));
		delimage(png);
	}
	void print_role(void)
	{
		PIMAGE png=newimage();
		getimage(png,pngname);
		putimage_transparent(NULL,png,x,y,(0,0,0));
		delimage(png);
	}
	void move(int x3,int y3)
	{
		PIMAGE png1=newimage();
		getimage(png1,pngname);
		putimage_transparent(NULL,png1,x+x3,y+y3,(0,0,0));
		x+=x3;
		y+=y3;
		delimage(png1);
	}
	void jump(int gao)
	{
		int speed=gao;
		for(int i=0;i<=gao;i++)
		{
			if(jumpbreak==true)
			{
				break;
			}
			y-=speed;
			speed--;
		}
		for(int i=0;i<=gao;i++)
		{
			if(jumpbreak==true)
			{
				break;
			}
			y+=speed;
			speed++;
		}
	}
};
struct Group//精灵组结构体,便于管理多个role,add_role()添加精灵,add_group()添加精灵组,update_group()刷新显示精灵组
{
private:
	int i;
public:
	ROLE role[1000];
	void add_role(ROLE add)
	{
		role[i] = add;
		i++;
	}
	void add_group(ROLE add_group[100],int numaber)
	{
		for(int i1;i1<=numaber;i1++)
		{
			role[i+i1] = add_group[i1];
		}
		i+=numaber+1;
	}
	void update_group(void)
	{
		for(int i2;i2<=i;i2++)
		{
			role[i2].print_role();
		}
	}
};
bool crash(ROLE a,ROLE b)//检测碰撞两个角色之间
{
	PIMAGE png3=newimage(),png2=newimage();
	int w1,h1,w2,h2;
	getimage(png3,a.pngname);
	getimage(png2,b.pngname);
	w1=getwidth(png3);
	h1=getheight(png3);
	w2=getwidth(png2);
	h2=getheight(png2);
	delimage(png3);
	delimage(png2);
	if(a.x<=b.x)
	{
		if((a.x+w1>b.x)==false)
		{
			return false;
		}
	}
	if(a.x>=b.x)
	{
		if((a.x+w1<b.x)==false)
		{
			return false;
		}
	}
	if(a.y<b.y)
	{
		if((a.y+h1>b.y)==false)
		{
			return false;
		}
	}
	if(a.y>b.y)
	{
		if((a.y+h1<b.y)==false)
		{
			return false;
		}
	}
	if(a.y==b.y && a.x==b.x)
	{
		return false;
	}
		return true;
}

更新内容

cyfgame安装使用教程可参考:C++游戏头文件(基于EGE图形库的游戏头文件代码及教程)

同在优快云发布

一.精灵组

用来管理多个精灵,统一输出图像,便于汇总相同的精灵,使输出精灵统一化

二.跳跃

没编成功但似乎可以运行,精灵直接飞出屏幕,物理还需进一步学习。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值