📄 tank041.c
字号:
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
for(n=0;n<15;n++) /*降落伞*/
{
JIANG_LUO_SAN[n].LIVE=0;
JIANG_LUO_SAN[n].x=0; /*当前坐标X*/
JIANG_LUO_SAN[n].y=0; /*当前坐标Y*/
JIANG_LUO_SAN[n].nonce_fram=1; /*当前帧号*/
JIANG_LUO_SAN[n].fram_time=0; /*每帧记时*/
JIANG_LUO_SAN[n].fram_MAX_time=6;
JIANG_LUO_SAN[n].MAX_fram=16; /*最大帧数*/
JIANG_LUO_SAN[n].kind=0;
}
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*飞机初始化*/
for(n=0;n<3;n++)
{
PLANE[n].LIVE=0;
PLANE[n].x=0;
PLANE[n].y=0;
PLANE[n].BOMB_XROF=4;
PLANE[n].BOMB_XROF_MAX_TIME=4;
PLANE[n].BOMB_FIRE=0;
PLANE[n].BOMB_N=0;
PLANE[n].BOMB_X=0;
PLANE[n].BOMB_Y=0;
PLANE[n].BOMB_kind=0;
PLANE[n].kind=0;
}
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*初始化箱子*/
for(n=0;n<3;n++)
{
GOODS_BOX[n].LIVE=0;
GOODS_BOX[n].x=0;
GOODS_BOX[n].y=0;
GOODS_BOX[n].MAP_A=0;
GOODS_BOX[n].MAP_B=0;
GOODS_BOX[n].kind=0;
}
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
camera_update(PLAYER[0].X1,PLAYER[0].Y1); /* 设置相机位置 */
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*初始化玩家*/
for(n=0;n<NPC_max_num;n++) /*初始化玩家*/
{
PLAYER[n].LIVE=0;
}
/*-----------------*/
/*player*/
PLAYER[0].kind=1; INIT_PLAYER_ID(0,1); INIT_PLAYER(0); /*初始化 其他属性*/
/*建筑物*/
PLAYER[1].kind=1; INIT_PLAYER_ID(1,10); INIT_PLAYER(1); /*初始化 其他属性*/
/*-----------------*/
/*玩家*/
PLAYER[0].LIVE=1;
PLAYER[0].MAP_B=14;
PLAYER[0].MAP_A=16;
PLAYER[0].X1=MAP_X0+PLAYER[0].MAP_B*32+15;
PLAYER[0].Y1=MAP_Y0+PLAYER[0].MAP_A*32+15;
PLAYER[0].X0=PLAYER[0].X1;
PLAYER[0].Y0=PLAYER[0].Y1;
PLAYER[0].angle[1]=PLAYER[0].angle[0];
PLAYER[0].o_angle[1]=PLAYER[0].angle[1];
/*-----------------*/
/*-----------------*/
/*玩家的建筑物*/
PLAYER[1].LIVE=1;
PLAYER[1].MAP_B=14;
PLAYER[1].MAP_A=14;
PLAYER[1].X1=MAP_X0+PLAYER[1].MAP_B*32+15;
PLAYER[1].Y1=MAP_Y0+PLAYER[1].MAP_A*32+15;
PLAYER[1].X0=PLAYER[1].X1;
PLAYER[1].Y0=PLAYER[1].Y1;
PLAYER[1].angle[0]=0; PLAYER[1].o_angle[0]=0;
PLAYER[1].angle[1]=PLAYER[1].angle[0];
PLAYER[1].o_angle[1]=PLAYER[1].angle[1];
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
position_mouse(361, 321);
A_BOMB_LIVE=0;
TimeM=GAME_MAX_TIME_M; /*时间 分*/
TimeS=0; /*时间 秒*/
alert01x=0; /*警告声音防止重复*/
alert02x=0;
/*NPC复活的间隔时间*/
PLAYER_RISE_TIME=5; PLAYER_RISE=0; /*玩家*/
ENEMY_RISE_TIME=5; ENEMY_RISE=0; /*敌人*/
FRIEND_RISE_TIME=5 ; FRIEND_RISE=0; /*朋友*/
ENEMY_N=0; FRIEND_N=0; /*记录数量*/
adage_N=0; /*格言编号*/
V=0; /*增援信号*/
WIN=0; /**/
END=0;
WAIT_GAME_EXIT=0; /*任务结束 等待退出游戏*/
WAIT_GAME_EXIT_TIME=10;
EXIT_MISSION_SOUND=0; /*任务结束声音 开关*/
PLAYER_KILL=0;
PLAYER_DEAD=0;/*玩家死亡次数*/
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
image_01 = create_bitmap(SCREEN_W, SCREEN_H); /*建立图位*/
rectfill(image_01,0,0,639,479,BLACK);
play_sample(start_music, 255, pan, pitch, TRUE); /*循环播放开始音乐*/
while(1)
{
if(key[KEY_ENTER]){
break;
}
if(key[KEY_ESC]){
goto EXIT_GAME;
}
/*----------------------------*/
if (mouse_b == 1) /*左键按下*/
{
mb=1; /*左键按过了*/
}
if (mouse_b == 0)
{
if(mb==1)/*左键按过*/
{
if(mouse_x>=293 && mouse_x<=344 && mouse_y>=251 && mouse_y<=303 )
{
mb=0;
play_sample(start_sound, 255, pan, pitch, FALSE);
break;
}
mb=0;
}
}
/*----------------------------*/
/*画封面*/
draw_sprite (buffer, bmp,100,100); /*logo*/
draw_sprite (buffer, COVER,0,0); /*画封面*/
textout_ex(buffer, font,"VER 0.41", 569+1,461+1, BLACK,-1); /*显示版本*/
textout_ex(buffer, font,"VER 0.41", 569,461, LIGHTGRAY,-1);
if(mouse_x>=293 && mouse_x<=344 && mouse_y>=251 && mouse_y<=303 )
{
alphaimage(291,248,COVER_YUAN,200);
}
draw_sprite (buffer, bmp_mouse ,mouse_x-8,mouse_y-8); /*显示鼠标*/
blit(buffer, screen, 0,0, 0,0,SCREEN_W, SCREEN_H); /*双缓冲图位输出到屏幕*/
}
for(n=0;n<=255;n+=15)
{
draw_sprite (buffer, COVER,0,0); /*画封面*/
alphaimage(0,0,image_01,n);
blit(buffer, screen, 0,0, 0,0,SCREEN_W, SCREEN_H); /*双缓冲图位输出到屏幕*/
rest(60);
}
rectfill(image_01,0,0,639,479,WHITE); /*白屏 为以后原子弹做闪屏效果*/
stop_sample(start_music);
position_mouse(280, 240);
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*大循环开始*/
while(END!=1)
{
if(WAIT_GAME_EXIT==1 && WAIT_GAME_EXIT_TIME==7) /*任务结束报告 发声 */
{
if(EXIT_MISSION_SOUND==0)
{
if(WIN==1) /*女声 MISSION COMPLETED*/
{
play_sample(win_sound, 255, pan, pitch, FALSE);
}
else /*女声 MISSION FAILED*/
{
play_sample(failed_sound, 255, pan, pitch, FALSE);
}
EXIT_MISSION_SOUND=1; /*不再出现*/
}
}
if(TimeM==0&&TimeS==0) /*游戏时间到了 准备退出*/
{
WAIT_GAME_EXIT=1;
if(PLAYER[1].LIVE==1)
WIN=1; /*核设施存在 胜利*/
}
if(TimeM<GAME_MAX_TIME_M && TimeS==56) /*女声 警告敌人逼近*/
{
if(alert02x==0)
{
play_sample(alert02_sound, 255, pan, pitch, FALSE);
alert02x=1;
}
}
if(TimeM<GAME_MAX_TIME_M && TimeS==54) /*拉响警报*/
{
if(alert01x==0)
{
play_sample(alert01_sound, 255, pan, pitch, FALSE);
alert01x=1;
}
}
/*最后一分钟飞机投放信号弹增援出现*/
if(TimeM==1&&TimeS==10)
{
if(PLANE[2].LIVE==0) /*初始化飞机*/
{
INIT_PLANE(2,15 *32+15,16 *32+15+10, 1, 3,1); /*初始化飞机*/
}
}
/*时间中断处理*/
if(TimeDelayUnit(1.0)){
if(TimeM>=0) /*记时 减秒*/
{
TimeS--;
if(TimeS<0) { TimeS=59; TimeM--; } /*IF满60秒为1分钟*/
if(TimeM<0) { TimeM=0; TimeS=0; } /*补丁*/
}
if(PLAYER[0].LIVE==0)
{
PLAYER_RISE_TIME--; /*玩家等待 复活*/
if(PLAYER_RISE_TIME<=0) { PLAYER_RISE=1; }
}
if(V==0 && ENEMY_N < ENEMY_SUM)
{
ENEMY_RISE_TIME--; /*敌人等待 复活*/
if(ENEMY_RISE_TIME<=0) { ENEMY_RISE=1; }
}
if(V==1 && FRIEND_N < FRIEND_SUM)
{
FRIEND_RISE_TIME--; /*朋友等待 复活*/
if(FRIEND_RISE_TIME<=0) { FRIEND_RISE=1; }
}
if(WAIT_GAME_EXIT==1)
{
WAIT_GAME_EXIT_TIME--;
if(WAIT_GAME_EXIT_TIME<=0) END=1;
}
}
/*++++++++++++++++++++++++子弹飞行++++++++++++++++++++++++++++*/
/*玩家的子弹*/
for(n=0;n<BB_max_num;n++)
{
if(BB[n].RUN==1)
{
/*------------------------*/
/*子弹移动*/
MOVE_TO3(BB[n].oa,&BB[n].PX,&BB[n].PY,BB[n].Speed); /*移动*/
/*------------------------*/
if(DZ(BB[n].PX,BB[n].PY,BB[n].opx,BB[n].opy)<= BB[n].Speed+1 ) /*子弹接近目标点*/
{ /*子弹 消失*/
BB[n].RUN=0;
BB[n].PX=BB[n].opx;
BB[n].PY=BB[n].opy;
INIT_A_BAO(BB[n].PX,BB[n].PY,BB[n].weapon_number); /* 初始化一个爆炸 坐标X,坐标Y,武器编号*/
for(i=0;i< NPC_max_num ;i++) /*计算伤害*/
{
if(PLAYER[i].LIVE==1)
{
if(DZ(BB[n].PX,BB[n].PY,PLAYER[i].X1,PLAYER[i].Y1)<=weapon[BB[n].weapon_number].Bao_range)/*杀伤范围*/
/*IF在杀伤范围内*/
{
MAX_Damage= weapon[ BB[n].weapon_number ] . MAX_Damage[ PLAYER[i].Armor ] ; /*最大杀伤值*/
MIN_Damage= weapon[ BB[n].weapon_number ] . MIN_Damage[ PLAYER[i].Armor ] ; /*最小杀伤值*/
PLAYER[i].HP -= Xrand( MIN_Damage , MAX_Damage ); /*随机计算伤害*/
if(PLAYER[i].HP<=0 )
{
if(PLAYER[i].kind!=PLAYER[ BB[n].NPC_number ].kind)
{
PLAYER[ BB[n].NPC_number ].kill++;
if(BB[n].NPC_number==0) PLAYER_KILL++;
}
}
}
}
}
} /*if子弹接近目标点*/
}
}
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
for(n=0;n<BAO_max_num;n++) /*爆炸处理*/
{
if(BAO[n].LIVE==1)
{
BAO[n].fram_time--;
if(BAO[n].fram_time<=0)
{
if(BAO[n].nonce_fram==1) /*爆炸第一帧 触发事件*/
{
if(BAO[n].Bao_number==4) play_sample(BAO_SOUND_04, 255, pan, pitch, FALSE); /*爆炸4声音*/
else if(BAO[n].Bao_number==5) play_sample(BAO_SOUND_05, 255, pan, pitch, FALSE); /*爆炸5声音*/
else if(BAO[n].Bao_number==6)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -