十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
黄金矿工的黄金随机位置代码用java随机函数写。根据查询相关公开信息显示,要在黄金矿工游戏中实现随机位置黄金,需使用JavaScript或TypeScript代码,具体来说,需要使用Math.random来生成随机数,然后使用Math.floor方法来转换为整数,这将帮助指定黄金的x和y坐标。
成都创新互联成都网站建设定制制作,是成都网站推广公司,为成都水处理设备提供网站建设服务,有成熟的网站定制合作流程,提供网站定制设计服务:原型图制作、网站创意设计、前端HTML5制作、后台程序开发等。成都网站制作热线:13518219792
需要。这是一个比较大的项目了,展示所有代码会有些困难,从中还要数据库的参与。
1、先创建一个头文件,把一些结构体以及枚举类型的函数放进去,这样会让整个项目看起来更加有序,更好理解,先把枚举类型放进去。
2、之后把我结构体也放进去。
3、下来就是主要函数main.Cpp了,记得开始的时候加上我们写的头文件,先写初始化函数。
4、再写绘制函数,这个比较简单,就是贴图。
5、接下来是抓取函数,也是比较简单。
6、最后是主函数。
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
#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 );
}
给你这个网站这里就有,不用注册,下载的时候看好你要的就行。拷到电脑上之后运行就能自动安装。我也是在这里下的,现在就在玩还不错!你可以密切关注这个网站,随时会有升级版的哦,祝你游戏愉快。
最简洁的方式就是你自己下载一个黄金矿工的游戏,需要什么,然后在游戏里面截图,那个图片的质量会比你找的像素都高,但是后面自己制作的时候,还是需要把图片处理一下,抠出来,然后在组合