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 qufHuPosY=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 guofResetPaiziRotation=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 zhig_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 zhig_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);

Funcode拍飞虫 C语言相关推荐

  1. c语言拍飞虫课程设计报告,C++语言课程计一拍飞虫.doc

    C语言课程计一拍飞虫 C++语言课程设计一拍飞虫 一.实验内容 玩家通过控制拍子拍打飞虫获取分数. 要求如下: 游戏的初始界面如图一,单击空格键即可进入游戏.进入游戏后的界面如图二.左上角有两个记录游 ...

  2. c语言拍飞虫课程设计报告,c语言课程设计_拍飞虫提高篇.doc

    c语言课程设计_拍飞虫提高篇 C语言课程设计二 拍飞虫 一.游戏介绍 拍飞虫游戏是玩家用鼠标控制拍子,拍飞虫.飞虫每次从不同的位置.以不同的速度飞来飞去.玩家拍的飞虫越多,分数越高. 二.实验目的 综 ...

  3. funcode拼图游戏c语言程序,同求funcode平台下拼图游戏的C语言代码

    做了好几天,写了好多回就是不对,彻底崩溃.. #include "CommonAPI.h" //#include "LessonX.h" #include #d ...

  4. 【C++FunCode】基于Funcode使用C++语言编写小游戏(小鲨鱼历险记)

    一.前言 大一暑假参加了山东省软件设计大赛,基于FunCode平台使用C++语言编写了大鱼吃小鱼游戏,其美名曰小鲨鱼历险记,哈哈.比赛成绩惨烈,只拿了一个省三,赛后也进行了分析总结,主要还是太不重视比 ...

  5. 2021年Funcode游戏制作二等奖作品

    之前发的有关funcode游戏更多的则是对游戏流程有一个大概的了解,以及如何编写游戏循环,判定游戏的各种触发条件,较为简陋. 这一次看到有人问funcode游戏的制作,就把搁置了许久的 项目拿给大家作 ...

  6. c语言funcode空格消失的函数,01北科大暑期计算机实践FunCode游戏设计+C++课程设计 - 海底世界 - 图文...

    C++语言课程设计一海底世界 一.实验内容 海底有五条鱼,其中四条来回随机游动,由玩家用键盘W A S D控制另外一条游动. 要求如下: 1. 游戏初始界面如下图. 2. 来回游动的四条鱼,从屏幕左边 ...

  7. 孙鑫java高清完整版(课件+视频)_孙鑫Java高清完整版(课件+视频) - 程序语言 - 小木虫 - 学术 科研 互动社区...

    本套光盘由孙鑫老师亲自授课录制.内容涵盖面广,从入门到精通,授课通俗易懂,分析问题独到精辟,学员通过本套光盘的学习,能够快速掌握Java编程语言,成为Java高手. 1.循序渐进 从自学者很难弄明白的 ...

  8. matlab二重指针,VC++中函数返回数组指针或者带指针的结构体的编译方式是否可取? - 程序语言 - 小木虫 - 学术 科研 互动社区...

    libralibra 构造函数+析构函数应该是比较正规的做法吧, 你的结构体/类被提早释放的问题,是不是那个结构体是局部变量,当超出作用域时对象被销毁,如果存在析构函数,会被默认调用, 如果你返回结构 ...

  9. matlab迭代算法实例sor,SOR迭代 - 程序语言 - MATLAB/Mathematica - 小木虫论坛-学术科研互动平台...

    方法一:建立了SOR.m的脚本文件,实现的是SOR迭代,程序语言如下: %SOR迭代 clear; clc; format long; i=1; n=6; H=hilb(n); X=ones(n,1) ...

  10. funcode坐标c语言,c语言程序设计_坦克大战(提高篇)(funcode环境)

    C语言课程设计--坦克大战 一.游戏介绍 玩家坦克与敌方坦克在街道中进行巷战,玩家坦克被击中.玩家指挥部被击中或游戏时间到,一局游戏结束. 二.实验目的 综合应用C语言知识和设计知识开发一款小游戏. ...

最新文章

  1. nginx实现web负载均衡
  2. 【毕业求职季】-听说你想去大厂看学妹,带你看看腾讯微信产品岗面经(已offer)
  3. 去创业公司不能有一夜暴富的侥幸,更不能指望掉馅饼
  4. 35款让你爱不释手的网页元素PSD素材
  5. redis延迟队列 实现_灵感来袭,基于Redis的分布式延迟队列
  6. PHP数组的详细解读
  7. 直接将多个结果转化为数组
  8. socket编程-阻塞和非阻塞
  9. java debug命令详解_DEBUG命令使用解析及范例大全
  10. Deeping操作系统配置tomcat并运行第一个Javaweb程序
  11. 中小企业的采购现状,如何打破发展艰难的局面?
  12. JavaStudy13(MySQL)—B站韩顺平
  13. python求高阶导数_高阶导数 - 问答 - Python中文网
  14. 火焰识别python_五行属火的字大全
  15. php 给视频打水印,如何给视频加表情 给视频局部画面加动态图片或水印
  16. 2019级吉林大学计软实验题目解析
  17. 关于win10中视频文件不显示缩略图的问题
  18. 时分多路复用TDM与时分多址TDMA对比 优缺点以及应用场景
  19. 练习题 William's Colored Pencils
  20. 基础(网络知识 三)——网络系统各层协议分析总结(TCP/IP/UDP/HTTP.....)

热门文章

  1. Python科学计算——Numpy知识点
  2. NoSQL数据库应用
  3. linux 命令行下载bt,linux命令行下载BT种子和磁力链接
  4. 计算机在工程制图上的应用,浅析计算机软件在工程制图中的应用
  5. 非参数统计单样本非参数检验之符号检验
  6. 电脑如何快速截屏技巧 四种常见的电脑截图方法
  7. 如何监控防火墙后的流量?
  8. linux 脚本 日志文件,在linux下用脚本输出日志
  9. SSM实现课程管理系统
  10. 简述hdfs工作原理_简述HDFS的原理?