Funcode拍飞虫 C语言

LessonX.CPP文件

#include <Stdio.h>
#include “CommonAPI.h”
#include “LessonX.h”
#include <stdlib.h>
#include <windows.h>
#include <mmsystem.h>
#pragma comment(lib,“winmm.lib”)

//
//

int g_iGameState = 0; // 游戏状态,0 – 游戏结束等待开始状态;1 – 按下空格键开始,初始化游戏;2 – 游戏进行中
//
void GameInit();
void GameRun( float fDeltaTime );
void GameEnd();
float g_gameTime=10.f;
float g_gameScore=0.f;
float fPaiziPosX=0.f;
float fPaiziPosY=0.f;
float fOldPaiziRotation=0.f;
float fResetPaiziRotation=0.f;
float fPosX=0.f,fPosY=0.f;
float fSpeed=0.f;
float fScreenLeft=0.f,fScreenRight=0.f,fScreenTop=0.f,fScreenBottom=0.f;
float fPosX1=0.f,fPosY1=0.f;
struct FlyBug
{
char szName[128];
int iScore;
}FlyBugs[15];
int g_iCount=0;
int g_HighScore[5];

//==============================================================================
//
// 大体的程序流程为:GameMainLoop函数为主循环函数,在引擎每帧刷新屏幕图像之后,都会被调用一次。

//==============================================================================
//
// 游戏主循环,此函数将被不停的调用,引擎每刷新一次屏幕,此函数即被调用一次
// 用以处理游戏的开始、进行中、结束等各种状态.
// 函数参数fDeltaTime : 上次调用本函数到此次调用本函数的时间间隔,单位:秒
void GameMainLoop( float fDeltaTime )
{
switch( g_iGameState )
{
// 初始化游戏,清空上一局相关数据
case 1:
{
GameInit();
g_iGameState = 2; // 初始化之后,将游戏状态设置为进行中
}
break;

	// 游戏进行中,处理各种游戏逻辑
case 2:
	{
		// TODO 修改此处游戏循环条件,完成正确游戏逻辑
		g_gameTime-=fDeltaTime;
		if( g_gameTime>0 )
		{
			GameRun( fDeltaTime );
		}
		else
		{
			// 游戏结束。调用游戏结算函数,并把游戏状态修改为结束状态
			g_iGameState	=	0;
			GameEnd();
		}
	}
	break;

	// 游戏结束/等待按空格键开始
case 0:
default:
	break;
};

}

//==============================================================================
//
// 每局开始前进行初始化,清空上一局相关数据
void GameInit()
{
g_gameTime=10.f;

fPaiziPosX=dGetSpritePositionX("PAIZI");//huo de pai zi de hong zuo biao
fPaiziPosY=dGetSpritePositionY("PAIZI");//huo de pai zi de zong zuo biao
fOldPaiziRotation=dGetSpriteRotation("PAIZI");//huoqu pai zi de chushi zuobiao
fScreenLeft=dGetScreenLeft();//huoqu bing mu jie xian
fScreenRight=dGetScreenRight();//huoqu ping mu jie xian
fScreenTop=dGetScreenTop();//huo qu ping mu jie xian
fScreenBottom=dGetScreenBottom();//huo qu ping mu jie xian
dSetSpriteVisible("HY",false);//rang huang ying xiao shi
dSetSpriteVisible("KAISHI",false);//rang kai shi xiao shi
dSetTextValue("Time",g_gameTime);
dSetTextValue("Score",g_gameScore);
dShowCursor(false);//rang shu biao xiao shi
AddFlyBugs();//shiyong jia ru feichong de fang fa
for(int i=0;i<g_iCount;i++)//xian zhi shu liang
{
    if(FlyBugs[i].iScore==1)//fen bie dui bu tong fen shu de jin xin pan duan
    {
        dCloneSprite("FEICHONG_MUBAN1",FlyBugs[i].szName);
    }else{
        if(FlyBugs[i].iScore==2)//butong de fen shu panduan
        {
            dCloneSprite("FEICHONG_MUBAN2",FlyBugs[i].szName);//ke long jing ling
        }
    if(FlyBugs[i].iScore==-1)//hudie de fenshu pan duan
    {
        dCloneSprite("HU",FlyBugs[i].szName);//ke long jing ling
    }
    }


    dSetSpriteWorldLimit(FlyBugs[i].szName,WORLD_LIMIT_NULL,fScreenLeft-10.f,fScreenTop-10.f,fScreenRight+10.f,fScreenBottom+10.f);
    Flying((FlyBugs[i].szName));


}

}
//==============================================================================
//
// 每局游戏进行中
void GameRun( float fDeltaTime )
{

dPlaySound("1",1,1);//bei jing yin yue
dSetTextValue("Time",g_gameTime);//huoqu you xi shi jian
if(fResetPaiziRotation>0)
{
    fResetPaiziRotation-=fDeltaTime;
    if(fResetPaiziRotation<0)
    {
        dSetSpriteRotation("PAIZI",fOldPaiziRotation);//paizi fu wei
    }
}
dSetTextValue("Time",g_gameTime);
dSetTextValue("Score",g_gameScore);

}
//==============================================================================
//
// 本局游戏结束
void GameEnd()
{
FILE *fp;
fp=fopen(“1.TXT”,“w”);
if(fp!=NULL)
{
fprintf(fp,“Score”,1);
}
dSetSpriteVisible(“KAISHI”,true);//yi ju you xi jie shu shi ,chong xin xian shi chu lai
dSetSpritePosition(“PAIZI”,fPaiziPosX,fPaiziPosY);//pai zi fu wei
for(int i=0;i<g_iCount;i++)
{
dDeleteSprite(FlyBugs[i].szName);//pai da fei chong hou ,feichong xiao shi
}

int length=0;
length=sizeof(g_HighScore)/sizeof(g_HighScore[0]);//ce ding changdu
if(g_gameScore>g_HighScore[4])//jingxing bi jiao
{
    g_HighScore[4]=g_gameScore;
    MAOPAO(g_HighScore,length);
}

char szTextName[128];//dui fen shu jinxing bi jiao oai xu
for(int i=0;i<5;i++)
{
    sprintf(szTextName,"Score%d",i);
    dSetTextValue(szTextName,g_HighScore[i]);
}
g_gameScore=0;//chu shi hua
g_iCount=0;//chu shi hua ding yi

}
//==========================================================================
//
// 鼠标移动
// 参数 fMouseX, fMouseY:为鼠标当前坐标
void OnMouseMove( const float fMouseX, const float fMouseY )
{
if(g_iGameState==2)
{
dSetSpritePosition(“PAIZI”,fMouseX,fMouseY);//paizi gen sui shu biao yi dong
}

}
//==========================================================================
//
// 鼠标点击
// 参数 iMouseType:鼠标按键值,见 enum MouseTypes 定义
// 参数 fMouseX, fMouseY:为鼠标当前坐标
void OnMouseClick( const int iMouseType, const float fMouseX, const float fMouseY )
{
if(g_iGameState==2)
{
float fFeichongPosX=0.f,fFeichongPosY=0.f;//ding yi fei chong wei zhi
float fHuPosX=0.f,fHuPosY=0.f;//hu die weizhi chushihua
for(int i=0;i<g_iCount;i++)
{
fFeichongPosX=dGetSpritePositionX(FlyBugs[i].szName);//huo de fei chong jing ling de wei zhi
fFeichongPosY=dGetSpritePositionY(FlyBugs[i].szName);
if(dIsPointInSprite(“PAIZI”,fFeichongPosX,fFeichongPosY))//dang paizi weizhi yu fei chong weizhi cheng he shi
{

             Flying(FlyBugs[i].szName);
             g_gameScore+=FlyBugs[i].iScore;//huo de bu tong fei chong de fenshu,bing jiarufenshuzhong
        }
        fHuPosX=dGetSpritePositionX(FlyBugs[i].szName);//hudie de wei zhi huo qu
        fHuPosY=dGetSpritePositionY(FlyBugs[i].szName);
        if(dIsPointInSprite("PAIZI",fHuPosX,fHuPosY))//dang pai zi yu hu die chenghe shi
        {
             Flying(FlyBugs[i].szName);
             g_gameScore+=FlyBugs[i].iScore;//kou chu fen shu

        }



    }

    dSetSpriteRotation("PAIZI",fOldPaiziRotation-10.f);//pai zi de pai dong xiao guo

    fResetPaiziRotation=0.2f;

}

}
//==========================================================================
//
// 鼠标弹起
// 参数 iMouseType:鼠标按键值,见 enum MouseTypes 定义
// 参数 fMouseX, fMouseY:为鼠标当前坐标
void OnMouseUp( const int iMouseType, const float fMouseX, const float fMouseY )
{

}
//==========================================================================
//
// 键盘按下
// 参数 iKey:被按下的键,值见 enum KeyCodes 宏定义
// 参数 iAltPress, iShiftPress,iCtrlPress:键盘上的功能键Alt,Ctrl,Shift当前是否也处于按下状态(0未按下,1按下)
void OnKeyDown( const int iKey, const bool bAltPress, const bool bShiftPress, const bool bCtrlPress )
{
if(iKeyKEY_SPACE&&g_iGameState0)//dan jianpan an xia kong geshi kai shi you xi
{
g_iGameState=1;

}

}
//==========================================================================
//
// 键盘弹起
// 参数 iKey:弹起的键,值见 enum KeyCodes 宏定义
void OnKeyUp( const int iKey )
{

}
//===========================================================================
//
// 精灵与精灵碰撞
// 参数 szSrcName:发起碰撞的精灵名字
// 参数 szTarName:被碰撞的精灵名字
void OnSpriteColSprite( const char *szSrcName, const char *szTarName )
{

}
//===========================================================================
//
// 精灵与世界边界碰撞
// 参数 szName:碰撞到边界的精灵名字
// 参数 iColSide:碰撞到的边界 0 左边,1 右边,2 上边,3 下边
void OnSpriteColWorldLimit( const char *szName, const int iColSide )
{
if(strstr(szName,“FEICHONG”))//xian zhi fei chong shu liang
{
for(int i=0;i<g_iCount;i++)
{
if(strcmp(szName,FlyBugs[i].szName)==0)
{

            Flying(FlyBugs[i].szName);
        }
    }

}
if(strstr(szName,"HU"))//xian zhi hu die shu liang
{
    for(int i=0;i<g_iCount;i++)
    {
        if(strcmp(szName,FlyBugs[i].szName)==0)
        {

            Flying(FlyBugs[i].szName);
        }
    }

}

}
void Flying(const char *szName)//fei chong fei xing de hanshu
{

int iDir=0;
iDir=dRandomRange(0,3);//suiji shuzi
switch(iDir)//an zhao shu zi lai chan sheng sui ji wei zhi
{
    case 0:
        fPosX=dRandomRange(fScreenLeft-5,fScreenLeft);
        fPosY=dRandomRange(fScreenTop,fScreenBottom+5);
        break;
    case 1:
        fPosX=dRandomRange(fScreenLeft-5,fScreenRight+5);
        fPosY=dRandomRange(fScreenBottom-5,fScreenBottom+5);
        break;
    case 2:
        fPosX=dRandomRange(fScreenRight,fScreenRight+5);
        fPosY=dRandomRange(fScreenTop-5,fScreenBottom+5);
        break;
    case 3:
        fPosX=dRandomRange(fScreenLeft-5,fScreenRight+5);
        fPosY=dRandomRange(fScreenTop-5,fScreenTop+5);
        break;



}
fSpeed=dRandomRange(10,40);//sui ji su du
dSetSpritePosition(szName,fPosX,fPosY);
fPosX1=dRandomRange(fScreenLeft+15,fScreenRight-15);
fPosY1=dRandomRange(fScreenTop+15,fScreenBottom-15);
dSpriteMoveTo(szName,fPosX1,fPosY1,fSpeed,false);

}
void AddFlyBugs()//zong jia fei chong yu hudie de han shu fang fa
{
for(int i=0;i<5;i++)
{
sprintf(FlyBugs[g_iCount].szName,“FEICHONG_%d”,g_iCount);
FlyBugs[g_iCount].iScore=1;//ding yi da fei chong de fen zhi
g_iCount++;

}
for(int i=0;i<7;i++)
{
    sprintf(FlyBugs[g_iCount].szName,"FEICHONG_%d",g_iCount);
    FlyBugs[g_iCount].iScore=2;//ding yi xiao fei chong de fen zhi
    g_iCount++;

}
for(int i=0;i<3;i++)
{
    sprintf(FlyBugs[g_iCount].szName,"HU%d",g_iCount);
    FlyBugs[g_iCount].iScore=-1;//ding yi hu die de fen zhi
    g_iCount++;

}

}
void MAOPAO(int a[],int length)//dui fen shu you gao dao di jing xing pai xu de han shu fang fa
{
int i,j,temp;
for(int i=0;i<length;++i)
{
for(int j=length-1;j>i;–j)
{
if(a[j]>a[j-1])
{
temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
}
}

}

}

LessonX.h文件(头文件)
#ifndef LESSON_X_H
#define LESSON_X_H
//
#include <Windows.h>

extern void GameMainLoop( float fDeltaTime );
extern void OnMouseMove( const float fMouseX, const float fMouseY );
extern void OnMouseClick( const int iMouseType, const float fMouseX, const float fMouseY );
extern void OnMouseUp( const int iMouseType, const float fMouseX, const float fMouseY );
extern void OnKeyDown( const int iKey, const bool bAltPress, const bool bShiftPress, const bool bCtrlPress );
extern void OnKeyUp( const int iKey );
extern void OnSpriteColSprite( const char *szSrcName, const char *szTarName );
extern void OnSpriteColWorldLimit( const char *szName, const int iColSide );

#endif // LESSON_X_H
void Flying(const char *szName);
void AddFlyBugs();
void MAOPAO(int a[],int length);

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: funcode 是一个编程平台,它以游戏的形式教授编程知识。其中一个游戏模块是 "飞虫"。 在这个游戏中,玩家需要编写代码来控制一个角色(例如一个手或是其他的形象)去飞虫。通过编写代码指令,玩家可以让角色向上、向下、向左、向右移动,以及击动作,用来捕获飞虫。 在编写代码的过程中,玩家需要运用到编程的基本概念和语法,如循环、条件语句和函数等。通过这个游戏,玩家可以学习到如何使用编程语言进行逻辑思考、问题解决和算法设计。 飞虫模块还提供了不同的关卡,每个关卡都有不同的难度和挑战。玩家需要灵活运用已学的知识,设计出最有效的代码来完成关卡目标。通过不断挑战和实践,玩家可以提升自己的编程能力,并且享受到解决问题的成就感。 总结而言,通过 funcode飞虫游戏模块,玩家可以通过编程学习基本的逻辑思维和编程技巧。这不仅可以帮助他们在解决问题时变得更加灵活和高效,而且可以培养他们的创造力和创新精神。这个游戏模块是一个有趣且有益的工具,适合初学者和编程爱好者使用。 ### 回答2: funcode 是一个充满趣味和挑战性的游戏,其中的一个任务是飞虫。虽然听起来很简单,但实际上需要一些技巧和耐心。 在游戏中,玩家需要利用手机的重力感应功能,将手持的手机当作“子”来击虫子。虫子会在屏幕上随机出现并飞行,玩家需要准确地用手机“”起来。 击虫子的关键是正确的时机和准确的姿势。虫子的飞行速度快,因此玩家必须通过准确的手势来打中它们。同时,玩家还需要注意不要误伤其他物体,否则会扣分。 另外,游戏还设有一些障碍物,如树木、花朵等,玩家在击虫子时需要避免中它们,否则也会扣分。这增加了游戏的难度和挑战性,需要玩家保持集中注意力和灵活反应。 击虫子不仅考验玩家的手眼协调能力,还能锻炼反应能力和注意力。通过挑战不同的游戏难度,玩家可以不断提升自己的技能和成绩。 总的来说,funcode飞虫是一款富有趣味性和挑战性的游戏。玩家需要准确的时机和姿势来击飞行中的虫子,避免误伤其他物体。这款游戏不仅能带来娱乐,还能锻炼玩家的手眼协调能力和反应能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值