Logo.hpp
上传用户:zhj2929
上传日期:2022-07-23
资源大小:28772k
文件大小:6k
- #ifndef _GAMEOBJECT_HPP
- #define _GAMEOBJECT_HPP
- class Logo
- {
- protected:
- //hge的指针
- //HGE *hge;
- //加载马里奥脸部朝向后边的一组图像的图片
- JTexture* texB;
- //指向马力奥面向后方站立的图片
- JSprite* mstand1;
- //指向马力奥面向后方跳跃的精灵图片
- JSprite* mjump;
- //指向马力奥面向后方走路的精灵图片1
- JSprite* mwalk1;
- //指向马力奥面向后方走路的精灵图片2
- JSprite* mwalk2;
- //记录渲染的图片序列号
- int number;
- //控制渲染速度
- int rendspeed;
- //站立还是行走
- int StandOrWalk;
- int JumpOrParticle;
- //粒子特效的一些指针
- JSprite* spt;//指向粒子渲染的精灵图片
- JSystem* par;//加载粒子特效系统的指针
- JParticleSystem* par2;//加载粒子特效系统的指针
-
- JParticleSystem* par3;//加载菜单粒子特效系统的指针
- JParticleSystem* par4;//加载菜单粒子特效系统的指针
- JParticleSystem* par5;//加载菜单粒子特效系统的指针
- JTexture* tex;//加载精灵图片的指针
- //粒子特效系统的一些变量
- //第一个粒子系统的位置坐标
- float x0,xp,yp;
- //第一个粒子系统每次的移动距离
- float dx, dy;
- //第二个粒子系统的位置坐标
- float x02,xp2,yp2;
- //第二个粒子系统每次的移动距离
- float dx2, dy2;
- //粒子系统的移动速度
- float speed;
- float friction;
- //菜单特效
- JMusic* snd2;//点击菜单项时发出的声音
- JTexture* tex2;//鼠标指针的图片
- JQuad* quad;//背景图片的四边形结构
- //hgeGUI指针,用来在界面上与用户进行交互
- JGUI *gui;
- //指向菜单选项字体的指针
- hgeFont *fnt;
- //指向鼠标的精灵图片
- JSprite *spr;
- float caidanx1;
- float caidanx2;
- float caidanx3;
- boolean xianshi;
- static JGE* mEngine;
- static GameStateLogo* mApp;
- public:
- //logo的构造函数,初始化一些最初的变量
- Logo(GameStateLogo *app);
- //随机函数,用来生成随机数
- int Random();
- //设置logo的框架函数,控制马里奥的运动路线和粒子系统的移动。
- bool FrameFunc();
- //设置logo的渲染函数,根据马里奥的运动来即时渲染。
- void RenderFunc();
- //logo的析构函数,释放logo所占用的系统资源。
- ~Logo();
-
- };
- JGE* Logo::mEngine = NULL;
- GameStateLogo* Logo::mApp = NULL;
- Logo::Logo(GameStateLogo *app)
- {
- //传递游戏指针
- mApp = app;
- texB = mApp-> GetTexture(0);
- mQuestion = mApp->GetTexture(1);
- mEngine = mApp->GetJGE();
- //加载马里奥脸部朝向后边的一组图像的图片
- texB=hge->Texture_Load("mario/all-supermario3.png");
-
- //粒子效果中的一些图片
- tex=hge->Texture_Load("particle/particles.png");
- //加载背景图片
- quad.tex=hge->Texture_Load("backgroud/snow.png");
- //加载鼠标指针的图片
- tex2=hge->Texture_Load("cursor/cursor.png");
- //加载鼠标移动声音
- snd2=hge->Effect_Load("music/menu.wav");
- //如果加载失败,则弹出提示窗口
- if(!texB|| !tex||!quad.tex || !tex2 || !snd2)
- {
-
- MessageBox(NULL, "Can't load all-supermario2.png or logo.mp3 or particles.png or bg.png, cursor.png or menu.wav", "Error", MB_OK | MB_ICONERROR | MB_APPLMODAL);
- check=false;
- return check;
- }
-
- //指向马力奥面向后方站立的图片
- mstand1 =new hgeSprite(texB,502,0,100,100) ;
- //指向马力奥面向后方跳跃的精灵图片
- mjump =new hgeSprite(texB,100,0,100,100);
- //指向马力奥面向后方走路的精灵图片1
- mwalk1 =new hgeSprite(texB,400,0,100,100);
- //指向马力奥面向后方走路的精灵图片2
- mwalk2 =new hgeSprite(texB,600,0,100,100);
- //设置马里奥图片的anchor point,基本相当于是图片的中心位置
- mstand1->SetHotSpot(50,50);
- mjump->SetHotSpot(50,50);
- mwalk1->SetHotSpot(50,50);
- mwalk2->SetHotSpot(50,50);
- //设置马里奥图片的渲染模式
- mstand1->SetBlendMode(BLEND_COLORMUL | BLEND_ALPHABLEND | BLEND_NOZWRITE);
- mjump->SetBlendMode(BLEND_COLORMUL | BLEND_ALPHABLEND | BLEND_NOZWRITE);
- mwalk1->SetBlendMode(BLEND_COLORMUL | BLEND_ALPHABLEND | BLEND_NOZWRITE);
- mwalk2->SetBlendMode(BLEND_COLORMUL | BLEND_ALPHABLEND | BLEND_NOZWRITE);
- //加载粒子渲染的形状
- spt=new hgeSprite(tex, 32, 32, 32, 32);
- //设置粒子渲染的模式
- spt->SetBlendMode(BLEND_COLORMUL | BLEND_ALPHAADD | BLEND_NOZWRITE);
- //设置粒子的重心
- spt->SetHotSpot(16,16);
-
- //初始化第一个粒子系统
- par=new hgeParticleSystem("trail.psi",spt);
- //点燃第一个粒子系统
- par->Fire();
- //初始化第二个粒子系统
- par2=new hgeParticleSystem("trail.psi",spt);
- //点燃第二个粒子系统
- par2->Fire();
- //初始化第一个菜单项的粒子系统
- par3=new hgeParticleSystem("trail.psi",spt);
- //点燃第一个菜单项的粒子系统
- par3->Fire();
- //初始化第二个菜单项的粒子系统
- par4=new hgeParticleSystem("trail.psi",spt);
- //点燃第二个菜单项的粒子系统
- par4->Fire();
- //初始化第三个菜单项的粒子系统
- par5=new hgeParticleSystem("trail.psi",spt);
- //点燃第三个菜单项的粒子系统
- par5->Fire();
- //设置背景图片的渲染模式
- quad.blend=BLEND_ALPHABLEND | BLEND_COLORMUL | BLEND_NOZWRITE;
- //设置背景图片的深度-即z值和颜色
- for(int i=0;i<4;i++)
- {
- quad.v[i].z=0.5f;
- quad.v[i].col=0xFFFFFFFF;//完全不透明的白色
- }
- //背景图片四边形的范围
- quad.v[0].x=0; quad.v[0].y=0;
- quad.v[1].x=GAMESCREEN_WIDTH; quad.v[1].y=0;
- quad.v[2].x=GAMESCREEN_WIDTH; quad.v[2].y=GAMESCREEN_HEIGHT;
- quad.v[3].x=0; quad.v[3].y=GAMESCREEN_HEIGHT;
-
- //创建并初始化hgeGUI的指针,用于在界面上和用户进行交互
- gui=new hgeGUI();
- //生成菜单项的字体
- fnt=new hgeFont("font1.fnt");
- //根据鼠标指针的图片生成精灵图片
- spr=new hgeSprite(tex2,0,0,32,32);
- return check;
- //马里奥的初始位置坐标
- x=450.0f;
- y=100.0f;
- //记录渲染的图片序列号
- number=1;
- //调用15次框架函数之后,再渲染另外的图片
- rendspeed=15;
- StandOrWalk = 1;//站立
- JumpOrParticle=1;//跳跃
- //粒子系统的一些变量
- //第一个粒子系统的一些变量
- x0=150.0f;
- xp=150.0f; yp=100.0f;
- dx=0.0f,dy=0.0f;
- //第二个粒子系统的一些变量
- x02=150.0f;
- xp2=150.0f; yp2=100.0f;
- dx2=0.0f,dy2=0.0f;
-
- speed=90;//粒子移动速度
- friction=0.98f;//摩擦系数
- //菜单项的位置
- caidanx1=450.0f;
- caidanx2=450.0f;
- caidanx3=450.0f;
- xianshi=false;
- }