当前位置:首页 > 代码 > 正文

黄金矿工的代码(黄金矿工代码pygame)

admin 发布:2022-12-19 23:21 176


今天给各位分享黄金矿工的代码的知识,其中也会对黄金矿工代码pygame进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

用c语言在funcode上做黄金矿工的游戏 求发整个文件

//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 );

}

跪求黄金矿工c++代码

#include "stdio.h"

main()

{char c;

intletters=0,space=0,digit=0,others=0;

printf("pleaseinput some characters\n");

while((c=getchar())!='\n')

{

if(c='a'c='z'||c='a'c='z')

letters++;

else if(c=='')

space++;

elseif(c='0'c='9')

digit++;

else

others++;

}

printf("all in all:char=%d space=%ddigit=%d others=%d\n",letters,

space,digit,others);

}

求一个黄金矿工小游戏的源代码,工程文件最好!要用win32 框架编写的,谢谢!好的一定再追加100分悬赏分!

最近在学windows游戏编程,老师布置了...求高手们给个windows 用C++编写的潜艇大战的源代码,谢谢了! ...

这题的c语言源代码,还有解题思想,随机化算法,麻烦手打,谢谢

//随机化算法 用随机投点法计算定积分

#includestdio.h

#includemath.h

#includetime.h//使用当前时钟做种子

double Darts(int n,double a,double b);

double f(double x);//积分函数 

main(){ 

int i,n[5]={100,1000,1000,10000,10000000};//随机投点个数,个数越多结果越精确 

double a=1.0,b=2.0;//积分上下界 

srand((unsigned)time(NULL)); //初始化随机数

for(i=0;i5;i++)

printf("%d:\tn=%d\tr=%lf\n",i+1,n[i],Darts(n[i],a,b));

}

/* 基本思想是在矩形区域内随机均匀投点,求出由这些点

 * 产生的函数值的算术平均值,再乘以区间宽度,即可得

 * 出定积分的近似解 

 */

double Darts(int n,double a,double b)  

{

int i;

double sum = 0.0; 

for(i=0; in; i++){

double x = (b-a)*rand() + a;//产生[a,b)之间的随机数

sum = sum + f(x);

}

return (b-a)*sum/n;

}

double f(double x){

return sin(x)/x;

}

黄金矿工的代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于黄金矿工代码pygame、黄金矿工的代码的信息别忘了在本站进行查找喔。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/29902.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载