① 誰有funcode黃金礦工代碼
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
#include "CommonAPI.h"
#include "stdio.h"
#include "string.h"
void DrawHookLine();
int g_fGoldBornMinX = 0;
int g_fGoldBornMaxX = 0;
int g_fGoldBornMinY = 0;
int g_fGoldBornMaxY = 0;
int g_iGoldCount = 20;
int g_iGameState=2;
int flag=1;
float Score=0.f;
int flagnum=0;
char szGotGoldName[20] ; //當前抓到金子的名稱
float g_fHookRotation = 0.f;
float g_fEmptyHookSpeed =35.f;
float fTimeDelta;
float g_fHookStartPosX; //存儲鉤子的初始X位置
float g_fHookStartPosY; //存儲鉤子的初始Y位置
///////////////////////////////////////////////////////////////////////////////////////////
//
// 主函數入口
//
//////////////////////////////////////////////////////////////////////////////////////////
int PASCAL WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// 初始化游戲引擎
if( !dInitGameEngine( hInstance, lpCmdLine ) )
return 0;
// 游戲初始化代碼
dSetWindowTitle("黃金礦工");
g_fGoldBornMinX = dGetScreenLeft() + 5; //金子左邊界
g_fGoldBornMaxX = dGetScreenRight() - 5; //金子右邊界
g_fGoldBornMinY = dGetScreenTop() + 20; //金子上邊界
g_fGoldBornMaxY = dGetScreenBottom() - 5; //金子下邊界
g_fHookStartPosX = dGetSpritePositionX("GoldHook"); //獲取鉤子的初始X坐標
g_fHookStartPosY = dGetSpritePositionY("GoldHook"); //獲取鉤子的初始Y坐標
dSetSpriteCollisionSend("goldHook", 1);
dSetSpriteCollisionReceive("goldTemplate", 1);
const float fRotateSpeed = 45.f; // 搖擺速度,單位 度/秒
int iHookRotToLeft = 1; //鉤子擺動的方向:1 ← ;0 →
float fTimeDelta = dGetTimeDelta();
// 引擎主循環,處理屏幕圖像刷新等工作
while( dEngineMainLoop() )
{
// 獲取兩次調用之間的時間差,傳遞給游戲邏輯處理
float fTimeDelta = dGetTimeDelta();
DrawHookLine();
// 執行游戲主循環
if(g_iGameState == 0)
{
float fThisRotate = fRotateSpeed * fTimeDelta;
if( iHookRotToLeft )
{
g_fHookRotation += fThisRotate;
if( g_fHookRotation >= 180.f )
{
g_fHookRotation = 180.f;
iHookRotToLeft = 0;
}
}
else
{
g_fHookRotation -= fThisRotate;
if( g_fHookRotation <= 0.f )
{
g_fHookRotation = 0.f;
iHookRotToLeft = 1;
}
}
dSetSpriteRotation("GoldHook",g_fHookRotation);
}
else if(g_iGameState == 1)
{
dSetTextValue("Score",Score);
//播放拉金塊的動作
dAnimateSpritePlayAnimation("goldMan","GolderManAnimation3", 1 ); //獲取鉤子X方向的速度
float fSpeedX = dGetSpriteLinearVelocityX("GoldHook");
//獲取鉤子Y方向的速度
float fSpeedY = dGetSpriteLinearVelocityY("GoldHook");
//當速度接近為0時,即可判定其已到達初始點
if( fSpeedX < 0.00001f && fSpeedX > -0.00001f &&
fSpeedY < 0.00001f && fSpeedY > -0.00001f )
{
//解除金塊與鉤子的錨定
dSpriteDismount(szGotGoldName);
//刪除獲取的金塊
dDeleteSprite(szGotGoldName);
//回拉結束,設定狀態為0
g_iGameState = 0;
if(flagnum)
{g_iGoldCount--;
}
}
}
// 播放挖金者的動作(恢復初始守候動作)
dAnimateSpritePlayAnimation("goldMan", "GolderManAnimation2", 1);
if(g_iGoldCount==0)
{
g_iGameState = 0;
Score=0;
dSetSpriteVisible("GameBegin",1);
g_iGoldCount = 20;
flag=1;
}
};
dAnimateSpritePlayAnimation("goldMan", "GolderManAnimation2", 1);
// 關閉游戲引擎
dShutdownGameEngine();
return 0;
}
//==========================================================================
//
// 引擎捕捉滑鼠移動消息後,將調用到本函數
void dOnMouseMove( const float fMouseX, const float fMouseY )
{
// 可以在此添加游戲需要的響應函數
}
//==========================================================================
//
// 引擎捕捉滑鼠點擊消息後,將調用到本函數
void dOnMouseClick( const int iMouseType, const float fMouseX, const float fMouseY )
{
// 可以在此添加游戲需要的響應函數
}
//==========================================================================
//
// 引擎捕捉鍵盤按下消息後,將調用到本函數
// iAltPress iShiftPress iCtrlPress 分別為判斷Shift,Alt,Ctrl當前是否也處於按下狀態。比如可以判斷Ctrl+E組合鍵
void dOnKeyDown( const int iKey, const int iAltPress, const int iShiftPress, const int iCtrlPress )
{
// 可以在此添加游戲需要的響應函數
if(iKey==KEY_SPACE)
{
g_iGameState = 1; // 初始化之後,將游戲狀態設置為進行中
dSetSpriteVisible("GameBegin",0);
//生成金子
int iLoop = 0; //循環變數控制
int iSize = 4, iPosX = 0, iPosY = 0; //iSize表示金塊大小的變數
if(flag)
{
for( iLoop = 0; iLoop < g_iGoldCount; iLoop++ )
{
if( iLoop < 10 )//生成10個小金塊,大小為4
{
iSize = 4;
}
else if( iLoop >= 10 && iLoop < 16 )//生成6個中金塊,大小為6
{
iSize = 6;
}
else//生成4個大金塊,大小為8
{
iSize = 8;
}//初始化金子精靈實例
char* tmpName;
//生成金塊名字
tmpName=dMakeSpriteName("GoldBlock",iLoop);
dCloneSprite("goldTemplate",tmpName);
//設置金塊的寬度
dSetSpriteWidth(tmpName,(float)iSize);
//設置金塊的高度
dSetSpriteHeight(tmpName,(float)iSize);
//設置金子精靈位置
iPosX = dRandomRange(g_fGoldBornMinX, g_fGoldBornMaxX);
iPosY = dRandomRange(g_fGoldBornMinY, g_fGoldBornMaxY);
dSetSpritePosition(tmpName,(float)iPosX, (float)iPosY);
flag=0;
}
}
if(g_iGoldCount==0)
{
flag=1;
g_iGoldCount=20;
}
}
if( iKey == KEY_S &&g_iGameState ==0 )
{ //按下↓並且游戲狀態為 "0"
g_iGameState = 2; //置游戲狀態為2,可用於控制鉤子是否擺動
// 以當前朝向給鉤子一個向前的速度
dSetSpriteLinearVelocityPolar("GoldHook",g_fEmptyHookSpeed,g_fHookRotation);
// 播放挖金者的動作(一個胳膊往下壓的動作)
dAnimateSpritePlayAnimation("goldMan","GolderManAnimation1", 0);
//0 表示播放一次,這里胳膊往下壓就是一次
}
}
//==========================================================================
//
// 引擎捕捉鍵盤彈起消息後,將調用到本函數
void dOnKeyUp( const int iKey )
{
// 可以在此添加游戲需要的響應函數
}
//===========================================================================
//
// 引擎捕捉到精靈與精靈碰撞之後,調用此函數
void dOnSpriteColSprite( const char *szSrcName, const char *szTarName )
{
// 發起者為GoldHook,接受者含有GoldBlock欄位
if(strcmp(szSrcName,"GoldHook")== 1 && strstr(szTarName,"GoldBlock")!=NULL )
{
//將金塊錨定在鉤子上
dSpriteMountToSpriteLinkPoint( szTarName, "GoldHook", 2 );
//使鉤子向初始位置移動,即會拉
dSpriteMoveTo("GoldHook",g_fHookStartPosX,g_fHookStartPosY, g_fEmptyHookSpeed, 1);
//復制並保存當前抓取到金塊的名稱
strcpy(szGotGoldName,szTarName);
// 發起者為GoldHook,接受者含有GoldBlock欄位
// 根據金子大小,計算鉤子的往回收的速度,越大的越慢。
// 演算法:之前設置的金子大小為4,6,8,用10減去該大小再除以10,得到3個小數:0.6,0.4,0.2.該小數乘以空鉤子的速度即得到掛接不同金子後的實際速度
float fWidth = dGetSpriteWidth( szTarName );
float fSpeed = ((10.f - fWidth) / 10.f) * g_fEmptyHookSpeed;
Score+=fWidth;
// 鉤子往初始位置移動
dSpriteMoveTo( "goldhook", g_fHookStartPosX, g_fHookStartPosY, fSpeed, 1);
//播放拉金塊的動作
dAnimateSpritePlayAnimation("goldMan","GolderManAnimation1", 0 );
g_iGameState = 1;
flagnum=1;
}
}
//===========================================================================
//
// 引擎捕捉到精靈與世界邊界碰撞之後,調用此函數.
// iColSide : 0 左邊,1 右邊,2 上邊,3 下邊
void dOnSpriteColWorldLimit( const char *szName, const int iColSide )
{
if(strcmp(szName,"GoldHook")!=0)
{
//碰到邊界的為鉤子時
//同樣設置為回拉,只是沒有碰到金子
dSpriteMoveTo(szName,g_fHookStartPosX,g_fHookStartPosY, g_fEmptyHookSpeed, 1);
//播放拉金塊的動作
dAnimateSpritePlayAnimation("goldMan","GolderManAnimation3", 0); g_iGameState = 1;
flagnum=0;
}
}
void DrawHookLine()
{
// 首先,從礦工精靈上獲取一個纜繩鏈接點作為繩子的起始點
float fStartX = dGetSpriteLinkPointPosX( "GoldMan", 1 );
float fStartY = dGetSpriteLinkPointPosY( "GoldMan", 1 );
// 繩子終點在鉤子精靈上獲取
float fEndX = dGetSpriteLinkPointPosX( "GoldHook", 1 );
float fEndY = dGetSpriteLinkPointPosY( "GoldHook", 1 );
// 在這兩點之間劃線.線的顏色紅綠藍值都為50,即灰色
dDrawLine( fStartX, fStartY, fEndX, fEndY, 2.f, 0, 50, 50, 50, 255 );
}
② 黃金礦工單人版的flash源代碼下半部分翻譯一下謝謝了。
scaleX定義是什麼你看看。。setType按照不同的物品啟動gotoAndStop這個函數,裡面的參數不同。。。。getScore就是取到什麼物品加多少分。。。下半段就是一個switch代碼。。。你搜索一下switch的用法就知道了
③ 請給我一份黃金礦工的c語言源代碼,謝謝!
你好!
具體什麼要求?要和黃金礦工界面一樣嗎?那可是非常有難度的
④ 請問大家有沒有黃金礦工游戲的源碼啊
CVC分鞏固vgjhfgjvbnbbb vghjn。,、爸媽那麼
⑤ 求黃金礦工的java源碼,謝謝 最好是可以買賣道具的 [email protected]
flash做的,載入到網頁上的,自己去問做flash的。