//黄金矿工V2.0
//2013.8
//田文 吉同晖 阴笑笑 罗布旺加
#include "CommonAPI.h"
#include "stdio.h"
#include "time.h"
int g_iGameState ,g_iHookDirection=0 ,g_iHookDirection2=0 ,
g_iGetGoldState , g_iGetGoldState2 , g_iHookState , g_iHookState2,
g_iSpriteCount=27 , score ,score2, g_iMousedirection1=0,g_iMousedirection2=0,g_iMousedirection3=0;
char szGoldName[128],g_szCurGetGold[128],g_szCurGetGold2[128];
float g_fGameTime=31,g_fHookStartPosX,
g_fHookStartPosX2,g_fHookStartPosY2,
g_fHookStartPosY,fPosX,fPosY,GM2PosX, GM2PosY,
g_fScreenLeft,g_fScreenRight, g_fScreenTop,
g_fHookRotation , g_fHookRotation2,
g_fEmptyHookSpeed=15,g_fScreenBottom,g_fEmptyHookSpeed2=15;
//********************************************************************************************************************
//
// 当g_iGameState==1,调用 GameInit()
void GameInit()
{
char szName[128];
g_fScreenLeft = dGetScreenLeft();
g_fScreenRight = dGetScreenRight();
g_fScreenTop = dGetScreenTop();
g_fScreenBottom = dGetScreenBottom();//获取屏幕边界
dSetSpriteWorldLimit("goldhook", WORLD_LIMIT_NULL, g_fScreenLeft, g_fScreenTop ,g_fScreenRight , g_fScreenBottom );
//设置钩子的世界边界
dSetSpriteVisible( "danren", 0);
dSetSpriteVisible( "shuangren", 0);
dSetSpriteVisible( "goldMan", 1);
dSetSpriteVisible( "goldhook", 1);
dSetSpriteVisible( "time", 1);
dSetSpriteVisible( "beijing", 0);
dSetSpriteVisible( "defen", 0);//设置精灵的隐藏
}
//********************************************************************************************************************
//
//当g_iGameState==2,调用 GameInit2()
void GameInit2()
{
char szName[128];
g_fScreenLeft = dGetScreenLeft();
g_fScreenRight = dGetScreenRight();
g_fScreenTop = dGetScreenTop();
g_fScreenBottom = dGetScreenBottom();
dSetSpriteWorldLimit("goldhook", WORLD_LIMIT_NULL, g_fScreenLeft, g_fScreenTop ,g_fScreenRight , g_fScreenBottom );
dSetSpriteWorldLimit("goldhook2", WORLD_LIMIT_NULL, g_fScreenLeft, g_fScreenTop ,g_fScreenRight , g_fScreenBottom );
dSetSpriteVisible( "danren", 0);
dSetSpriteVisible( "shuangren", 0);
dSetSpriteVisible( "goldman2", 1);
dSetSpriteVisible( "goldhook2", 1);
dSetSpriteVisible( "goldMan", 1);
dSetSpriteVisible( "goldhook", 1);
dSetSpriteVisible( "beijing", 0);
dSetSpriteVisible( "defen", 0);
dSetSpriteVisible( "score2", 1 );
dSetSpriteVisible( "win", 0);
dSetSpriteVisible( "win2", 0);
}
//********************************************************************************************************************
//
//当按下空格键同时g_iGameState==1,调用 SpaceInit()
void SpaceInit()
{
//生成金矿
for(int i=0; i<15; i++)
{
char szName[128];
sprintf(szName, "GoldBlock%d", i);
dCloneSprite("gold_muban", szName);
fPosX = (float)dRandomRange(-50, 50);
fPosY = (float)dRandomRange(-20,30);
dSetSpritePosition(szName, fPosX, fPosY);
dSetSpriteScale( szName, (float)dRandomRange(1,2) );
dSetSpriteCollisionPhysicsReceive( szName , 1 );
}
//生成石头
for(int j=0; j<3; j++)
{
char szNameStone[128];
sprintf(szNameStone, "Stone%d", j);
dCloneSprite("stone_muban", szNameStone);
fPosX = (float)dRandomRange(-50, 50);
fPosY = (float)dRandomRange(-20,30);
dSetSpritePosition(szNameStone, fPosX, fPosY);
dSetSpriteCollisionPhysicsReceive( szNameStone , 1 );
}
//生成钻石
for(int k=0; k<3; k++)
{
char szNameZuanshi[128];
sprintf(szNameZuanshi, "Zuanshi%d", k);
dCloneSprite("Zuanshi_muban", szNameZuanshi);
fPosX = (float)dRandomRange(-50, 50);
fPosY = (float)dRandomRange(-20,30);
dSetSpritePosition(szNameZuanshi, fPosX, fPosY);
dSetSpriteCollisionPhysicsReceive( szNameZuanshi , 1 );
}
//生成大力水
for(int w=0; w<1; w++)
{
char szNameWater[128];
sprintf(szNameWater, "Water%d", w);
dCloneSprite("water_muban", szNameWater);
fPosX = (float)dRandomRange(-50, 50);
fPosY = (float)dRandomRange(-20,30);
dSetSpritePosition(szNameWater, fPosX, fPosY);
dSetSpriteCollisionPhysicsReceive( szNameWater , 1 );
}
//生成老鼠
for(int q=0; q<3; q++)
{
char szNameMouse[128];
sprintf(szNameMouse, "Mouse%d", q);
dCloneSprite("piggy_muban", szNameMouse);
fPosX = (float)dRandomRange(-50, 50);
fPosY = (float)dRandomRange(-10,30);
dSetSpritePosition(szNameMouse, fPosX, fPosY);
dSetSpriteCollisionPhysicsReceive( szNameMouse , 1 );
dSetSpriteLinearVelocity(szNameMouse, dRandomRange(-3, -10), 0);
dSetSpriteWorldLimit(szNameMouse, WORLD_LIMIT_NULL, g_fScreenLeft-10, g_fScreenTop,g_fScreenRight+10 , g_fScreenBottom );
}
//生成钱袋
for(int l=0; l<2; l++)
{
char szNameMoney[128];
sprintf(szNameMoney, "Money%d",l);
dCloneSprite("money_muban", szNameMoney);
fPosX = (float)dRandomRange(-50, 50);
fPosY = (float)dRandomRange(-20,30);
dSetSpritePosition(szNameMoney, fPosX, fPosY);
dSetSpriteCollisionPhysicsReceive( szNameMoney , 1 );
}
//设置“空格开始”文字不可见
dSetSpriteVisible( "GameBegin", 0);
}
//********************************************************************************************************************
//
//当按下P同时g_iGameState==3,调用 Gamepause(float g_fGameTime)
float Gamepause(float g_fGameTime)
{
g_iHookState=0;
dSetSpriteLinearVelocity("Mouse1", 0, 0);
dSetSpriteLinearVelocity("Mouse2", 0, 0);
dSetSpriteLinearVelocity("Mouse0", 0, 0);
return g_fGameTime;//返回当前游戏的时间
}
//********************************************************************************************************************
//
//当按下R同时g_iGameState==7,调用 GameRestart()
void GameRestart()
{
if (g_iMousedirection1==0)
dSetSpriteLinearVelocity("Mouse1", -3, 0);
else if (g_iMousedirection1==1)
dSetSpriteLinearVelocity("Mouse1", 4, 0);
if (g_iMousedirection2==0)
dSetSpriteLinearVelocity("Mouse2", -4, 0);
else if(g_iMousedirection2==1)
dSetSpriteLinearVelocity("Mouse2", 7, 0);
if (g_iMousedirection3==0)
dSetSpriteLinearVelocity("Mouse0", -5, 0);
else if(g_iMousedirection3==1)
dSetSpriteLinearVelocity("Mouse0", 4, 0);//设置游戏恢复时老鼠运动的方向
}
//********************************************************************************************************************
//
//通过画线函数取代绳子的效果,此函数为单人游戏调用
void DrawHookLine()
{
// 首先,从矿工精灵上获取一个缆绳链接点作为绳子的起始点(该链接点在编辑器里编辑好)
float fStartX = dGetSpriteLinkPointPosX( "goldMan", 1);
float fStartY = dGetSpriteLinkPointPosY( "goldMan", 1 );
// 绳子终点在钩子精灵上获取(该链接点在编辑器里编辑好)
float fEndX = dGetSpriteLinkPointPosX( "goldhook", 0 );
float fEndY = dGetSpriteLinkPointPosY( "goldhook", 0 );
// 在这两点之间划线
dDrawLine( fStartX, fStartY, fEndX, fEndY, 1.f, 1, 40, 70, 50, 255 );
}
//********************************************************************************************************************
//
//通过画线函数取代绳子的效果,此函数为双人游戏调用
void DrawHookLine2()
{
float fStartX = dGetSpriteLinkPointPosX( "goldMan2", 1);
float fStartY = dGetSpriteLinkPointPosY( "goldMan2", 1 );
float fEndX = dGetSpriteLinkPointPosX( "goldhook2", 0 );
float fEndY = dGetSpriteLinkPointPosY( "goldhook2", 0 );//操作同上
dDrawLine( fStartX, fStartY, fEndX, fEndY, 1.f, 1, 40,70,50, 255 );
}
//==========================================================================
//
// 当g_iGameState==3,调用 GameRun(float fTimeDelta )
void GameRun(float fTimeDelta )
{
if (g_iHookState==1)
{
if (g_iHookDirection==0)
{
dSetSpriteRotation( "goldhook",fTimeDelta * 70 + g_fHookRotation);
if (g_fHookRotation>160) g_iHookDirection=1;
}
if (g_iHookDirection==1)
{
dSetSpriteRotation( "goldhook", g_fHookRotation-fTimeDelta * 70 );
if (g_fHookRotation<20) g_iHookDirection=0;
}
}
else if (g_iHookState==0) dSet
评论5
最新资源