黃金礦工的黃金隨機(jī)位置代碼用java隨機(jī)函數(shù)寫。根據(jù)查詢相關(guān)公開信息顯示,要在黃金礦工游戲中實(shí)現(xiàn)隨機(jī)位置黃金,需使用JavaScript或TypeScript代碼,具體來說,需要使用Math.random來生成隨機(jī)數(shù),然后使用Math.floor方法來轉(zhuǎn)換為整數(shù),這將幫助指定黃金的x和y坐標(biāo)。
成都創(chuàng)新互聯(lián)成都網(wǎng)站建設(shè)定制制作,是成都網(wǎng)站推廣公司,為成都水處理設(shè)備提供網(wǎng)站建設(shè)服務(wù),有成熟的網(wǎng)站定制合作流程,提供網(wǎng)站定制設(shè)計(jì)服務(wù):原型圖制作、網(wǎng)站創(chuàng)意設(shè)計(jì)、前端HTML5制作、后臺(tái)程序開發(fā)等。成都網(wǎng)站制作熱線:13518219792
需要。這是一個(gè)比較大的項(xiàng)目了,展示所有代碼會(huì)有些困難,從中還要數(shù)據(jù)庫的參與。
1、先創(chuàng)建一個(gè)頭文件,把一些結(jié)構(gòu)體以及枚舉類型的函數(shù)放進(jìn)去,這樣會(huì)讓整個(gè)項(xiàng)目看起來更加有序,更好理解,先把枚舉類型放進(jìn)去。
2、之后把我結(jié)構(gòu)體也放進(jìn)去。
3、下來就是主要函數(shù)main.Cpp了,記得開始的時(shí)候加上我們寫的頭文件,先寫初始化函數(shù)。
4、再寫繪制函數(shù),這個(gè)比較簡(jiǎn)單,就是貼圖。
5、接下來是抓取函數(shù),也是比較簡(jiǎn)單。
6、最后是主函數(shù)。
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
#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] ; //當(dāng)前抓到金子的名稱
float g_fHookRotation = 0.f;
float g_fEmptyHookSpeed =35.f;
float fTimeDelta;
float g_fHookStartPosX; //存儲(chǔ)鉤子的初始X位置
float g_fHookStartPosY; //存儲(chǔ)鉤子的初始Y位置
///////////////////////////////////////////////////////////////////////////////////////////
//
// 主函數(shù)入口
//
//////////////////////////////////////////////////////////////////////////////////////////
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坐標(biāo)
g_fHookStartPosY = dGetSpritePositionY("GoldHook"); //獲取鉤子的初始Y坐標(biāo)
dSetSpriteCollisionSend("goldHook", 1);
dSetSpriteCollisionReceive("goldTemplate", 1);
const float fRotateSpeed = 45.f; // 搖擺速度,單位 度/秒
int iHookRotToLeft = 1; //鉤子擺動(dòng)的方向:1 ← ;0 →
float fTimeDelta = dGetTimeDelta();
// 引擎主循環(huán),處理屏幕圖像刷新等工作
while( dEngineMainLoop() )
{
// 獲取兩次調(diào)用之間的時(shí)間差,傳遞給游戲邏輯處理
float fTimeDelta = dGetTimeDelta();
DrawHookLine();
// 執(zhí)行游戲主循環(huán)
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);
//播放拉金塊的動(dòng)作
dAnimateSpritePlayAnimation("goldMan","GolderManAnimation3", 1 ); //獲取鉤子X方向的速度
float fSpeedX = dGetSpriteLinearVelocityX("GoldHook");
//獲取鉤子Y方向的速度
float fSpeedY = dGetSpriteLinearVelocityY("GoldHook");
//當(dāng)速度接近為0時(shí),即可判定其已到達(dá)初始點(diǎn)
if( fSpeedX 0.00001f fSpeedX -0.00001f
fSpeedY 0.00001f fSpeedY -0.00001f )
{
//解除金塊與鉤子的錨定
dSpriteDismount(szGotGoldName);
//刪除獲取的金塊
dDeleteSprite(szGotGoldName);
//回拉結(jié)束,設(shè)定狀態(tài)為0
g_iGameState = 0;
if(flagnum)
{g_iGoldCount--;
}
}
}
// 播放挖金者的動(dòng)作(恢復(fù)初始守候動(dòng)作)
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);
// 關(guān)閉游戲引擎
dShutdownGameEngine();
return 0;
}
//==========================================================================
//
// 引擎捕捉鼠標(biāo)移動(dòng)消息后,將調(diào)用到本函數(shù)
void dOnMouseMove( const float fMouseX, const float fMouseY )
{
// 可以在此添加游戲需要的響應(yīng)函數(shù)
}
//==========================================================================
//
// 引擎捕捉鼠標(biāo)點(diǎn)擊消息后,將調(diào)用到本函數(shù)
void dOnMouseClick( const int iMouseType, const float fMouseX, const float fMouseY )
{
// 可以在此添加游戲需要的響應(yīng)函數(shù)
}
//==========================================================================
//
// 引擎捕捉鍵盤按下消息后,將調(diào)用到本函數(shù)
// iAltPress iShiftPress iCtrlPress 分別為判斷Shift,Alt,Ctrl當(dāng)前是否也處于按下狀態(tài)。比如可以判斷Ctrl+E組合鍵
void dOnKeyDown( const int iKey, const int iAltPress, const int iShiftPress, const int iCtrlPress )
{
// 可以在此添加游戲需要的響應(yīng)函數(shù)
if(iKey==KEY_SPACE)
{
g_iGameState = 1; // 初始化之后,將游戲狀態(tài)設(shè)置為進(jìn)行中
dSetSpriteVisible("GameBegin",0);
//生成金子
int iLoop = 0; //循環(huán)變量控制
int iSize = 4, iPosX = 0, iPosY = 0; //iSize表示金塊大小的變量
if(flag)
{
for( iLoop = 0; iLoop g_iGoldCount; iLoop++ )
{
if( iLoop 10 )//生成10個(gè)小金塊,大小為4
{
iSize = 4;
}
else if( iLoop = 10 iLoop 16 )//生成6個(gè)中金塊,大小為6
{
iSize = 6;
}
else//生成4個(gè)大金塊,大小為8
{
iSize = 8;
}//初始化金子精靈實(shí)例
char* tmpName;
//生成金塊名字
tmpName=dMakeSpriteName("GoldBlock",iLoop);
dCloneSprite("goldTemplate",tmpName);
//設(shè)置金塊的寬度
dSetSpriteWidth(tmpName,(float)iSize);
//設(shè)置金塊的高度
dSetSpriteHeight(tmpName,(float)iSize);
//設(shè)置金子精靈位置
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 )
{ //按下↓并且游戲狀態(tài)為 "0"
g_iGameState = 2; //置游戲狀態(tài)為2,可用于控制鉤子是否擺動(dòng)
// 以當(dāng)前朝向給鉤子一個(gè)向前的速度
dSetSpriteLinearVelocityPolar("GoldHook",g_fEmptyHookSpeed,g_fHookRotation);
// 播放挖金者的動(dòng)作(一個(gè)胳膊往下壓的動(dòng)作)
dAnimateSpritePlayAnimation("goldMan","GolderManAnimation1", 0);
//0 表示播放一次,這里胳膊往下壓就是一次
}
}
//==========================================================================
//
// 引擎捕捉鍵盤彈起消息后,將調(diào)用到本函數(shù)
void dOnKeyUp( const int iKey )
{
// 可以在此添加游戲需要的響應(yīng)函數(shù)
}
//===========================================================================
//
// 引擎捕捉到精靈與精靈碰撞之后,調(diào)用此函數(shù)
void dOnSpriteColSprite( const char *szSrcName, const char *szTarName )
{
// 發(fā)起者為GoldHook,接受者含有GoldBlock字段
if(strcmp(szSrcName,"GoldHook")== 1 strstr(szTarName,"GoldBlock")!=NULL )
{
//將金塊錨定在鉤子上
dSpriteMountToSpriteLinkPoint( szTarName, "GoldHook", 2 );
//使鉤子向初始位置移動(dòng),即會(huì)拉
dSpriteMoveTo("GoldHook",g_fHookStartPosX,g_fHookStartPosY, g_fEmptyHookSpeed, 1);
//復(fù)制并保存當(dāng)前抓取到金塊的名稱
strcpy(szGotGoldName,szTarName);
// 發(fā)起者為GoldHook,接受者含有GoldBlock字段
// 根據(jù)金子大小,計(jì)算鉤子的往回收的速度,越大的越慢。
// 算法:之前設(shè)置的金子大小為4,6,8,用10減去該大小再除以10,得到3個(gè)小數(shù):0.6,0.4,0.2.該小數(shù)乘以空鉤子的速度即得到掛接不同金子后的實(shí)際速度
float fWidth = dGetSpriteWidth( szTarName );
float fSpeed = ((10.f - fWidth) / 10.f) * g_fEmptyHookSpeed;
Score+=fWidth;
// 鉤子往初始位置移動(dòng)
dSpriteMoveTo( "goldhook", g_fHookStartPosX, g_fHookStartPosY, fSpeed, 1);
//播放拉金塊的動(dòng)作
dAnimateSpritePlayAnimation("goldMan","GolderManAnimation1", 0 );
g_iGameState = 1;
flagnum=1;
}
}
//===========================================================================
//
// 引擎捕捉到精靈與世界邊界碰撞之后,調(diào)用此函數(shù).
// iColSide : 0 左邊,1 右邊,2 上邊,3 下邊
void dOnSpriteColWorldLimit( const char *szName, const int iColSide )
{
if(strcmp(szName,"GoldHook")!=0)
{
//碰到邊界的為鉤子時(shí)
//同樣設(shè)置為回拉,只是沒有碰到金子
dSpriteMoveTo(szName,g_fHookStartPosX,g_fHookStartPosY, g_fEmptyHookSpeed, 1);
//播放拉金塊的動(dòng)作
dAnimateSpritePlayAnimation("goldMan","GolderManAnimation3", 0); g_iGameState = 1;
flagnum=0;
}
}
void DrawHookLine()
{
// 首先,從礦工精靈上獲取一個(gè)纜繩鏈接點(diǎn)作為繩子的起始點(diǎn)
float fStartX = dGetSpriteLinkPointPosX( "GoldMan", 1 );
float fStartY = dGetSpriteLinkPointPosY( "GoldMan", 1 );
// 繩子終點(diǎn)在鉤子精靈上獲取
float fEndX = dGetSpriteLinkPointPosX( "GoldHook", 1 );
float fEndY = dGetSpriteLinkPointPosY( "GoldHook", 1 );
// 在這兩點(diǎn)之間劃線.線的顏色紅綠藍(lán)值都為50,即灰色
dDrawLine( fStartX, fStartY, fEndX, fEndY, 2.f, 0, 50, 50, 50, 255 );
}
給你這個(gè)網(wǎng)站這里就有,不用注冊(cè),下載的時(shí)候看好你要的就行??降诫娔X上之后運(yùn)行就能自動(dòng)安裝。我也是在這里下的,現(xiàn)在就在玩還不錯(cuò)!你可以密切關(guān)注這個(gè)網(wǎng)站,隨時(shí)會(huì)有升級(jí)版的哦,祝你游戲愉快。
最簡(jiǎn)潔的方式就是你自己下載一個(gè)黃金礦工的游戲,需要什么,然后在游戲里面截圖,那個(gè)圖片的質(zhì)量會(huì)比你找的像素都高,但是后面自己制作的時(shí)候,還是需要把圖片處理一下,摳出來,然后在組合