/////////////////////////////////////////////////////////////////////////////////
//
//
//
//
/////////////////////////////////////////////////////////////////////////////////
#include <Stdio.h>
#include "CommonAPI.h"
#include "LessonX.h"
////////////////////////////////////////////////////////////////////////////////
int g_score ; //定义游戏获得的分数
int g_iMaxScore; //定义游戏的最高分
float g_fScreenLeft = 0.f; // 屏幕左边界值
float g_fScreenRight = 0.f; // 右
float g_fScreenTop = 0.f; // 上
float g_fScreenBottom = 0.f; // 下
float g_wuditime; // 设置无敌时间
//设置战机的上下左右的移动速度
float g_fSpeedTop = 0.f;
float g_fSpeedLeft = 0.f;
float g_fSpeedBottom = 0.f;
float g_fSpeedRight = 0.f;
int mybulletcount ;//定义我方战机产生子弹的数量
int dijicount ;//定义产生敌机的数量
float fPoX = 0.f;//定义战机的横坐标
float fPoY = 0.f;//定义战机的纵坐标
float g_myBulletTime ;//定义产生子弹的间隔时间
float g_dijitime ;//定义产生敌机的间隔时间
float g_dijizidantime1 ;//定义第一关产生子弹的间隔时间
float g_dijizidantime2 ;//定义第二关产生子弹的间隔时间
float g_dijizidantime3 ;//定义第三关产生子弹的间隔时间
int g_dijizidancount ;//定义产生敌机子弹的数量
//定义当战机碰撞到边界时按键是否可以获得速度
bool iscandong0;
bool iscandong1;
bool iscandong2;
bool iscandong3;
bool iswudi;
bool bossiskilled;
int bosslife;
int Id1;
int Id; //设置一个整型数据记录播放背景故事的音效的Id
int changjingqiehuan = 0; //场景切换
int guanqia = 1;//定义当前关卡数
int g_iGameState = 0; // 游戏状态,0 -- 游戏结束等待开始状态;1 -- 按下空格键开始,初始化游戏;2 -- 游戏进行中
int g_zhanjilife ; // 战机生命
//定义敌机是否被击杀的数组
int iskilled [30];
int guanqia2_dijilife[30];
void GameInit();
void GameRun( float fDeltaTime );
void GameEnd();
void MyBulletCreate();
void DijiCreate(int guanqia);
void DijiZidanCreate();
//==============================================================================
//
// 大体的程序流程为:GameMainLoop函数为主循环函数,在引擎每帧刷新屏幕图像之后,都会被调用一次。
//==============================================================================
//
// 游戏主循环,此函数将被不停的调用,引擎每刷新一次屏幕,此函数即被调用一次
// 用以处理游戏的开始、进行中、结束等各种状态.
// 函数参数fDeltaTime : 上次调用本函数到此次调用本函数的时间间隔,单位:秒
void GameMainLoop( float fDeltaTime )
{
switch( g_iGameState )
{
// 初始化游戏,清空上一局相关数据
case 1:
{
GameInit();
g_iGameState = 2; // 初始化之后,将游戏状态设置为进行中
}
break;
// 游戏进行中,处理各种游戏逻辑
case 2:
{
// 战机的生命值大于0才能进行游戏
if(g_zhanjilife>0)
{
GameRun( fDeltaTime );
}
else
{
//将屏幕上显示的生命值改变为0
// 游戏结束。调用游戏结算函数,并把游戏状态修改为结束状态
g_iGameState = 0;
GameEnd();
}
}
break;
// 游戏结束/等待按空格键开始
case 0:
default:
break;
};
}
//==============================================================================
//
// 每局开始前进行初始化,清空上一局相关数据
void GameInit()
{
//初始化一些数据
bossiskilled = false;
bosslife = 50;
g_zhanjilife = 3;
mybulletcount = 0 ;
dijicount = 0 ;
iswudi =false;
iscandong0 = true;
iscandong1 = true;
iscandong2 = true;
iscandong3 = true;
g_wuditime = 5.0f;
g_dijizidantime1 = 2.0f;
g_dijizidantime2 = 2.0f;
g_dijizidantime3 = 2.0f;
g_myBulletTime= 0.4f;
g_dijitime= 2.0f;
g_dijizidancount = 0;
g_fScreenLeft = dGetScreenLeft();
g_fScreenRight = dGetScreenRight();
g_fScreenTop = dGetScreenTop();
g_fScreenBottom = dGetScreenBottom();
dSetSpriteWorldLimit("zhanji", WORLD_LIMIT_NULL, g_fScreenLeft, g_fScreenTop, g_fScreenRight, g_fScreenBottom);
for(int i=0;i<30;i++)
{
iskilled[i]=1;
guanqia2_dijilife[i]= 1 ;
}
dSetSpriteLinearVelocityY("boss",8.0f);
}
//==============================================================================
//
// 每局游戏进行中
void GameRun( float fDeltaTime )
{
//在屏幕上显示获得分数和剩余的生命数
dSetSpritePosition("now",-40.0f,-35.0f);
dSetSpritePosition("NowScoreText",-15.0f,-35.0f);
dSetSpritePosition("lifecounttext",8.496f,-35.0f);
dSetSpritePosition("lifecount",37.0f,-35.0f);
dSetTextString( "now", "当前分数");
dSetTextValue( "NowScoreText", g_score );
dSetTextString( "lifecounttext", "剩余生命");
dSetTextValue( "lifecount", g_zhanjilife );
//记录最高分
if( g_iMaxScore < g_score )
{
g_iMaxScore = g_score ;
// 写文件
// [Your Code]
FILE *pfp = fopen( "Score.dat", "wb" );
if( NULL != pfp )
{
fwrite( &g_iMaxScore, sizeof(g_iMaxScore), 1, pfp );
fclose( pfp );
}
// [End Your Code]
}
//计算产生子弹的时间
g_myBulletTime -= fDeltaTime;
if(g_myBulletTime <= 0 )
{
g_myBulletTime = 0.4f;
MyBulletCreate();
}
//计算产生敌机的时间
g_dijitime -= fDeltaTime;
if( g_dijitime <=0 )
{
g_dijitime = 2.0f;
DijiCreate(guanqia);
}
//计算产生敌机子弹的时间
switch(guanqia)
{
case 1:
g_dijizidantime1 -= fDeltaTime;
if( g_dijizidantime1<=0)
{
g_dijizidantime1 = 2.0f;
DijiZidanCreate();
}
break;
case 2:
g_dijizidantime2 -= fDeltaTime;
if( g_dijizidantime2<=0)
{
g_dijizidantime2 = 3.0f;
DijiZidanCreate();
}
break;
case 3:
g_dijizidantime3 -= fDeltaTime;
if( g_dijizidantime3<=0)
{
g_dijizidantime3 = 2.0f;
DijiZidanCreate();
}
break;
}
//计算战机无敌时间
if(iswudi==true)
{
g_wuditime -= fDeltaTime;
if( g_wuditime<=0)
{
g_wuditime = 5.0f;
iswudi = false;
dSetSpriteVisible("zhanji",1);
dSetSpriteVisible("donghua",0);
}
}
//关卡跳转
switch(guanqia)
{
case 1:
if( g_score >= 125)
{
g_iGameState = 0;
dSetSpritePosition("beijinggushi2",0.f,0.f);
Id=dPlaySound("beijinggushipeiyin2",0,1);
}
case 2:
if( g_score >= 250)
{
g_iGameState = 0;
dSetSpritePosition("guanqia2",0.f,0.f);
Id=dPlaySound("guanqia2",0,1);
}
break;
case 3:
if(bosslife == 0)
{
g_score += 50;
bossiskilled = true;
g_iGameState = 0;
dSetSpritePosition("guanqia3",0.f,0.f);
Id=dPlaySound("guanqia3_0",0,1);
}
break;
}
}
//==============================================================================
//
// 本局游戏结束
void GameEnd()
{
//将屏幕上显示的生命值改变为0
dSetTextValue( "lifecount", g_zhanjilife );
dSetSpritePosition("youxijieshu",0.f,0.f);
Id=dPlaySound("youxijieshu",0,1);
}
//==========================================================================
//
// 鼠标移动
// 参数 fMouseX, fMouseY:为鼠标当前坐标
void OnMouseMove( const float fMouseX, const float fMouseY )
{
}
//==========================================================================
//
// 鼠标点击
// 参数 iMouseType:鼠标按键值,见 enum MouseTypes 定义
// 参数 fMouseX, fMouseY:为鼠标当前坐标
void OnMouseClick( const int iMouseType, const float fMouseX, const float fMouseY )
{
if( (fMouseY < 4 &&fMouseY> -4 )&&( fMouseX > -8 &&fMouseX<8) && iMouseType == 0 && dGetSpritePositionY("youxijieshu") == 0.f)
{
dStopSound(Id);
dStopSound(Id1);
changjingqiehuan = 0;
g_score = 0;
dLoadMap("chushijiemian.t2d");
}
if((fMouseY < 8 &&fMouseY> 3 )&&( fMouseX > -36 &&fMouseX<-20) && iMouseType == 0 && changjingqiehuan == 0)
{
Id=dPlaySound("beijinggushipeiyin1",0,1);
dSpriteMoveTo("beijinggushi", 0.f, 0.f, 5.0f, 1 );
dSetSpriteVisible("kaishi",
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
funcode平台小游戏飞机大战C语言开发 (240个子文件)
VCTemplate.aps 47KB
level.t2d.bak 17KB
LessonX.cpp 26KB
List.cpp 4KB
Main.cpp 4KB
datablocks.cs 33KB
chatClient.cs 5KB
serverConnection.cs 4KB
message.cs 4KB
clientConnection.cs 4KB
chatServer.cs 4KB
server.cs 2KB
client.cs 2KB
message.cs 2KB
main.cs 2KB
kickban.cs 839B
brushes.cs 92B
persistent.cs 38B
banlist.cs 0B
Score.dat 4B
bgmountains1.dds 256KB
bghills2.dds 128KB
bgcloud1.dds 128KB
bgground2.dds 128KB
bghills1.dds 128KB
bgground1.dds 128KB
enemyShip3c.dds 64KB
particles2.dds 64KB
particles3.dds 64KB
bgbuildings1.dds 64KB
debrisplayer.dds 64KB
debris2.dds 64KB
debris1.dds 64KB
enemyship2b.dds 32KB
enemyship2a.dds 32KB
enemyShip3a.dds 32KB
playerShip.dds 32KB
enemyShip3b.dds 32KB
enemyShip1.dds 32KB
particles1.dds 16KB
particles5.dds 16KB
particles6.dds 16KB
Begin.dds 8KB
playerMissile.dds 8KB
enemyMissile.dds 8KB
ring.dds 4KB
upgrade2.dds 4KB
upgrade1.dds 4KB
upgrade3.dds 4KB
playerHelper.dds 2KB
bgblanksky.dds 2KB
EngineDllC.dll 3.25MB
EngineDllCpp.dll 3.25MB
datablocks.cs.dso 20KB
joinServer.gui.dso 11KB
profiles.cs.dso 9KB
levelManagement.cs.dso 9KB
options.gui.dso 9KB
align.cs.dso 9KB
level.t2d.dso 8KB
level3.t2d.dso 8KB
xml.cs.dso 8KB
level2.t2d.dso 8KB
options.cs.dso 7KB
console.gui.dso 6KB
keybindings.cs.dso 6KB
chushijiemian.t2d.dso 5KB
messageBox.cs.dso 5KB
chatGui.gui.dso 5KB
startServer.gui.dso 4KB
defaultPrefs.cs.dso 4KB
common.cs.dso 4KB
messageBoxOKCancelDetailsDlg.gui.dso 3KB
untitled.t2d.dso 3KB
projectManagement.cs.dso 3KB
metrics.cs.dso 3KB
main.cs.dso 3KB
properties.cs.dso 3KB
messageBoxYesNoCancel.gui.dso 3KB
helpDlg.gui.dso 2KB
help.cs.dso 2KB
NetworkMenu.gui.dso 2KB
projectResources.cs.dso 2KB
messageBoxOKCancel.gui.dso 2KB
messageBoxYesNo.gui.dso 2KB
screenshot.cs.dso 2KB
messageBoxOk.gui.dso 2KB
audio.cs.dso 2KB
guiProfiles.cs.dso 1KB
cursor.cs.dso 1KB
messagePopup.gui.dso 1KB
waitingForServer.gui.dso 1KB
remap.gui.dso 1KB
FrameOverlayGui.gui.dso 848B
mainScreen.gui.dso 847B
canvas.cs.dso 836B
game.cs.dso 732B
main.cs.dso 689B
scriptDoc.cs.dso 458B
cursors.cs.dso 405B
共 240 条
- 1
- 2
- 3
资源评论
- 白月夜泊2023-07-13资源值得借鉴的内容很多,那就浅学一下吧,值得下载!
- 枝江化工人2023-07-26资源内容总结的很到位,内容详实,很受用,学到了~
- m0_650256582022-07-21这个资源内容超赞,对我来说很有价值,很实用,感谢大佬分享~
- HuayeBBQ2022-07-14果断支持这个资源,资源解决了当前遇到的问题,给了新的灵感,感谢分享~
tqc666
- 粉丝: 0
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功