/////////////////////////////////////////////////////////////////////////////////
//
//
//
//
/////////////////////////////////////////////////////////////////////////////////
#include <Stdio.h>
#include "CommonClass.h"
#include "LessonX.h"
////////////////////////////////////////////////////////////////////////////////
//
//
CGameMain g_GameMain;
//==============================================================================
//
// 大体的程序流程为:GameMainLoop函数为主循环函数,在引擎每帧刷新屏幕图像之后,都会被调用一次。
//==============================================================================
//
// 构造函数
CGameMain::CGameMain()
{
m_iGameState = 0;
m_pGameBegin = new CSprite("GameBegin");
m_iGetGoldState = 0;
m_fHookRotation = 0.f;
m_iHookRotToLeft = 1;
m_fHookStartPosX = 0.f;
m_fHookStartPosY = 0.f;
m_iInitedHookPos = 0;
m_pGoldenHook = new CSprite("goldHook");
m_pGoldenMan = new CAnimateSprite("goldMan");
mcp =new CSprite("mcp ");
m_iGoldCount = 0;
sum=0;
m_iGoldBornMinX = 0;
m_iGoldBornMaxX = 0;
m_iGoldBornMinY = 0;
m_iGoldBornMaxY = 0;
m_pGoldenTemplate = new CSprite("goldTemplate");
m_fEmptyHookSpeed = 15.f;
}
//==============================================================================
//
// 析构函数
CGameMain::~CGameMain()
{
}
//==============================================================================
//
// 游戏主循环,此函数将被不停的调用,引擎每刷新一次屏幕,此函数即被调用一次
// 用以处理游戏的开始、进行中、结束等各种状态.
// 函数参数fDeltaTime : 上次调用本函数到此次调用本函数的时间间隔,单位:秒
void CGameMain::GameMainLoop( float fDeltaTime )
{
switch( GetGameState() )
{
// 初始化游戏,清空上一局相关数据
case 1:
{
GameInit();
SetGameState(2); // 初始化之后,将游戏状态设置为进行中
}
break;
// 游戏进行中,处理各种游戏逻辑
case 2:
{
// TODO 修改此处游戏循环条件,完成正确游戏逻辑
if( m_iGoldCount>0)
{
GameRun( fDeltaTime );
}
else // 游戏结束。调用游戏结算函数,并把游戏状态修改为结束状态
{
SetGameState(0);
GameEnd();
}
}
break;
// 游戏结束/等待按空格键开始
case 0:
default:
break;
};
DrawHookLine();
}
//=============================================================================
//
// 每局开始前进行初始化,清空上一局相关数据
void CGameMain::GameInit()
{
// 重设钩子从0度、由右往左自动旋转
m_fHookRotation = 0.f;
m_iHookRotToLeft = 1;
// 初始化抓取状态
m_iGetGoldState = 0;
// 以下变量只需要初始化一次。
m_iInitedHookPos = 0;
m_iGoldCount=20;
sum=1;
if( 0 == m_iInitedHookPos )
{
m_iInitedHookPos = 1;
// 钩子初始位置值初始化
m_fHookStartPosX = m_pGoldenHook->GetSpritePositionX();
m_fHookStartPosY = m_pGoldenHook->GetSpritePositionY();
//钩子的世界边界初始化
m_pGoldenHook->SetSpriteWorldLimit(WORLD_LIMIT_NULL,CSystem::GetScreenLeft(),CSystem::GetScreenTop(),CSystem::GetScreenRight(),CSystem::GetScreenBottom());
m_iGoldBornMinX = CSystem::GetScreenLeft() + 5;
m_iGoldBornMaxX = CSystem::GetScreenRight() - 5;
m_iGoldBornMinY = CSystem::GetScreenTop() + 20;
m_iGoldBornMaxY = CSystem::GetScreenBottom() - 5;
//钩子可以发出碰撞
m_pGoldenHook->SetSpriteCollisionSend(true);
//金子可以接收碰撞
m_pGoldenTemplate->SetSpriteCollisionReceive(true);
mcp->SetSpriteCollisionReceive(true);
}
int iLoop = 0;
int iSize = 4, iPosX = 0, iPosY = 0;
for( iLoop = 0; iLoop < m_iGoldCount; iLoop++ )
{
if( iLoop < 10 )
{
iSize = 4;
}
else if( iLoop >= 10 && iLoop < 16 )
{
iSize = 6;
}
else
{
iSize = 8;
}
// 初始化金子精灵实例
char* tmpBlock;
tmpBlock=CSystem::MakeSpriteName("GoldBlock",iLoop);
CSprite *tmpGlodenBlock=new CSprite(tmpBlock);
tmpGlodenBlock->CloneSprite("goldTemplate");
tmpGlodenBlock->SetSpriteWidth((float)iSize );
tmpGlodenBlock->SetSpriteHeight((float)iSize);
// 随机一个位置
iPosX = CSystem::RandomRange(m_iGoldBornMinX, m_iGoldBornMaxX);
iPosY = CSystem::RandomRange(m_iGoldBornMinY, m_iGoldBornMaxY);
tmpGlodenBlock->SetSpritePosition((float)iPosX, (float)iPosY);
m_vGoldenBlock.push_back(*tmpGlodenBlock);
}
//设置自己的名字
char* tmpBlock1;
tmpBlock1=CSystem::MakeSpriteName("mcp1",1);
CSprite *tmpGlodenBlock1=new CSprite(tmpBlock1);
tmpGlodenBlock1->CloneSprite("mcp");
tmpGlodenBlock1->SetSpriteWidth(10);
tmpGlodenBlock1->SetSpriteHeight(8);
// 随机一个位置
tmpGlodenBlock1->SetSpritePosition(-5, -10);
m_vmyname.push_back(*tmpGlodenBlock1);
// 播放挖金者的动作(恢复初始守候动作)
m_pGoldenMan->AnimateSpritePlayAnimation("GolderManAnimation2", 0);
// 隐藏游戏开始的提示
m_pGameBegin->SetSpriteVisible(0);
}
//=============================================================================
//
// 每局游戏进行中
void CGameMain::GameRun( float fDeltaTime )
{
// 如果当前为等待抓取状态,那么,左右摇摆钩子
if( 0 == m_iGetGoldState)
{
const float fRotateSpeed = 45.f; // 摇摆速度,单位度/秒
float fThisRotate = fRotateSpeed * fDeltaTime; // 本次旋转的度数
if( m_iHookRotToLeft )
{
m_fHookRotation += fThisRotate;
if( m_fHookRotation >= 180.f )
{
m_fHookRotation = 180.f;
m_iHookRotToLeft = 0;
}
}
else
{
m_fHookRotation -= fThisRotate;
if( m_fHookRotation <= 0.f )
{
m_fHookRotation = 0.f;
m_iHookRotToLeft = 1;
}
}
m_pGoldenHook->SetSpriteRotation(m_fHookRotation);
}
else if( 2 == m_iGetGoldState || 3 == m_iGetGoldState )
{
// 判断是否移动到终点(判断的依据是XY方向的移动速度为0,即金子是否已经停止移动)
float fSpeedX = m_pGoldenHook->GetSpriteLinearVelocityX();
float fSpeedY = m_pGoldenHook->GetSpriteLinearVelocityY();
// 当前速度不为0,还在运动中
// 浮点数是否为0,不能直接判断 == != 0
if( fSpeedX > 0.00001f || fSpeedX < -0.00001f || fSpeedY > 0.00001f || fSpeedY < -0.00001f )
return;
// 速度为0,钩子回到初始点,开始下一轮的抓取
// 当前抓取到金子,将抓取到的金子释放并删除之。然后将金子数量减一
if(3 == m_iGetGoldState&&stricmp(m_szCurGetGold,"GoldBlock")==1)
{
m_iGoldCount--;
GetCurGoldenSprite( m_szCurGetGold ).SpriteDismount();
GetCurGoldenSprite( m_szCurGetGold ).DeleteSprite();
}
if(3 == m_iGetGoldState&&stricmp(m_szCurGetname,"mcp1")==1)
{
sum--;
GetCurGoldenSprite1( m_szCurGetname ).SpriteDismount();
GetCurGoldenSprite1( m_szCurGetname ).DeleteSprite();
}
m_iGetGoldState=0;
m_pGoldenMan->AnimateSpritePlayAnimation("GolderManAnimation2", 0);
}
}
//=============================================================================
//
// 本局游戏结束
void CGameMain::GameEnd()
{
m_pGameBegin->SetSpriteVisible(1);
}
void CGameMain::OnKeyDown( const int iKey, const int iAltPress, const int iShiftPress, const int iCtrlPress )
{
if( KEY_SPACE == iKey && 0 == m_iGameState )
{
m_iGameState = 1;
m_pGameBegin->SetSpriteVisible(0);
}
else if( KEY_DOWN == iKey && 2 == m_iGameState && m_iGetGoldState==0 )
{
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
funcode——黄金矿工 (164个子文件)
CommonClass.a 78KB
level.t2d.bak 1KB
HUANGJIN.cbp 2KB
LessonX.cpp 12KB
Main.cpp 3KB
levelManagement.cs 14KB
options.cs 11KB
profiles.cs 10KB
keybindings.cs 10KB
align.cs 9KB
xml.cs 8KB
messageBox.cs 6KB
common.cs 5KB
chatClient.cs 5KB
projectManagement.cs 4KB
main.cs 4KB
serverConnection.cs 4KB
message.cs 4KB
clientConnection.cs 4KB
projectResources.cs 4KB
chatServer.cs 4KB
defaultPrefs.cs 4KB
datablocks.cs 4KB
screenshot.cs 3KB
metrics.cs 3KB
properties.cs 3KB
cursor.cs 3KB
audio.cs 2KB
server.cs 2KB
main.cs 2KB
help.cs 2KB
client.cs 2KB
message.cs 2KB
canvas.cs 2KB
main.cs 2KB
guiProfiles.cs 1KB
game.cs 1KB
kickban.cs 839B
scriptDoc.cs 640B
cursors.cs 598B
datablocks.cs 365B
brushes.cs 122B
persistent.cs 38B
banlist.cs 0B
Thumbs.db 3KB
GolderBack.dds 256KB
GolderMan.dds 32KB
GolderBlock.dds 16KB
Begin.dds 8KB
GolderTool.dds 4KB
HUANGJIN.depend 498B
joinServer.gui.dso 11KB
profiles.cs.dso 9KB
levelManagement.cs.dso 9KB
options.gui.dso 9KB
align.cs.dso 9KB
xml.cs.dso 8KB
options.cs.dso 7KB
console.gui.dso 6KB
keybindings.cs.dso 6KB
messageBox.cs.dso 5KB
chatGui.gui.dso 5KB
level.t2d.dso 5KB
startServer.gui.dso 4KB
defaultPrefs.cs.dso 4KB
common.cs.dso 4KB
messageBoxOKCancelDetailsDlg.gui.dso 3KB
projectManagement.cs.dso 3KB
datablocks.cs.dso 3KB
metrics.cs.dso 3KB
main.cs.dso 3KB
properties.cs.dso 3KB
messageBoxYesNoCancel.gui.dso 3KB
helpDlg.gui.dso 2KB
help.cs.dso 2KB
NetworkMenu.gui.dso 2KB
projectResources.cs.dso 2KB
messageBoxOKCancel.gui.dso 2KB
messageBoxYesNo.gui.dso 2KB
screenshot.cs.dso 2KB
messageBoxOk.gui.dso 2KB
audio.cs.dso 2KB
guiProfiles.cs.dso 1KB
cursor.cs.dso 1KB
messagePopup.gui.dso 1KB
waitingForServer.gui.dso 1KB
remap.gui.dso 1KB
FrameOverlayGui.gui.dso 848B
mainScreen.gui.dso 847B
canvas.cs.dso 836B
game.cs.dso 732B
main.cs.dso 689B
scriptDoc.cs.dso 458B
cursors.cs.dso 405B
brushes.cs.dso 233B
persistent.cs.dso 129B
datablocks.cs.dso 33B
Game.exe 1.51MB
project.funProj 409B
options.gui 15KB
共 164 条
- 1
- 2
资源评论
- 月下槐2018-09-09可以,还不错
阴天快乐、、
- 粉丝: 430
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- CVE-2019-0708漏洞检测与利用工具
- STM32单片机FPGA毕设电路原理论文报告利用c8051f020系列单片机实现智能仪器开发
- STM32单片机FPGA毕设电路原理论文报告利用8位单片机实现与Internet网络通信应用研究
- STM32单片机FPGA毕设电路原理论文报告利用80C196单片机测量三相异步电动机功率因数
- STM32单片机FPGA毕设电路原理论文报告力学传感器与单片机的接口设计
- p107-u07FLT2.wav
- STM32单片机FPGA毕设电路原理论文报告雷达幅频特性测试仪的智能化研究
- STM32单片机FPGA毕设电路原理论文报告可组网电子温湿度测量仪的设计与实现
- STM32单片机FPGA毕设电路原理论文报告可在单片机上实现的语音混沌保密通信方法
- STM32单片机FPGA毕设电路原理论文报告可实现的基于MCS51单片机的恒温控制系统的设计
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功