嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元微信扫码支付:2 元
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
坦克大战 C语言 源代码
void GamePlay()/*玩游戏的过程*/
{
int i,j,lose=0;/*lose是1的时候表示失败*/
int t=0;
randomize();
while(1)
{
for(i=0;i<5;i )/*画敌人的子弹*/
{
if(amy[i].fire.direction>0)
putpixel(100 amy[i].fire.y*20,50 amy[i].fire.x*20,11);
}
for(i=0;i<=4;i )/*画玩家子弹*/
{
if(Playone.fire[i].direction>0)/*大于0表示玩家子弹存在*/
putpixel(100 Playone.fire[i].y*20,50 Playone.fire[i].x*20,11);
}
TimeDelay(500000);/*要害的时间改动*/
for(i=0;i<5;i )/*去敌人的子弹*/
{
if(amy[i].fire.direction>0)
putpixel(100 amy[i].fire.y*20,50 amy[i].fire.x*20,0);
}
for(i=0;i<=4;i )/*去玩家除子弹*/
{
if(Playone.fire[i].direction>0)
putpixel(100 Playone.fire[i].y*20,50 Playone.fire[i].x*20,0);
}
for(i=0;i<=4;i )/*玩家子弹位置的变化*/
{
if(Playone.fire[i].direction<0)
continue;
if(Playone.fire[i].direction==1)
{Playone.fire[i].x--;Playone.fire[i].y=Playone.fire[i].y;}
else if(Playone.fire[i].direction==2)
{Playone.fire[i].y ;Playone.fire[i].y=Playone.fire[i].y;}
else if(Playone.fire[i].direction==3)
{Playone.fire[i].x ;Playone.fire[i].y=Playone.fire[i].y;}
else if(Playone.fire[i].direction==4)
{Playone.fire[i].y--;Playone.fire[i].y=Playone.fire[i].y;}
/*打到石头或者砖头的情况下减少子弹*/
if(map[Playone.fire[i].x][Playone.fire[i].y]==1)/*打到石头*/
Playone.fire[i].direction=-1;/*子弹消失*/
if(map[Playone.fire[i].x][Playone.fire[i].y]==2)/*打到砖头*/
{
Playone.fire[i].direction=-1;
DrawBlack(Playone.fire[i].y,Playone.fire[i].x);/*砖头打掉*/
map[Playone.fire[i].x][Playone.fire[i].y]=0;/*被打掉的地方变成可走的地方*/
}
if(map[Playone.fire[i].x][Playone.fire[i].y]==5)/*自己打到老家*/
{lose=1;break;}
for(j=0;j<5;j )
{
if(amy[j].direction<0)/*不存在的不判定*/
continue;
if(amy[j].x==Playone.fire[i].x&&amy[j].y==Playone.fire[i].y)/*打中敌人*/
{
Playone.fire[i].direction=-1;
DrawBlack(Playone.fire[i].y,Playone.fire[i].x);
map[Playone.fire[i].x][Playone.fire[i].y]=0;/*被打掉的地方变成可走的地方*/
amy[j].fire.direction=amy[j].direction=-1;/*这个敌人消失*/
Score();/*输出得分*/
}
}
}
for(i=0;i<5;i )/*敌人子弹位置的变化*/
{
if(amy[i].direction<0||amy[i].fire.direction<0)
continue;
if(amy[i].fire.direction==1)
{amy[i].fire.x--;amy[i].fire.y=amy[i].fire.y;}
else if(amy[i].fire.direction==2)
{amy[i].fire.y ;amy[i].fire.x=amy[i].fire.x;}
else if(amy[i].fire.direction==3)
{amy[i].fire.x ;amy[i].fire.y=amy[i].fire.y;}
else if(amy[i].fire.direction==4)
{amy[i].fire.y--;amy[i].fire.x=amy[i].fire.x;}
/*打到石头或者砖头的情况下减少子弹*/
if(map[amy[i].fire.x][amy[i].fire.y]==1)/*打到石头*/
amy[i].fire.direction=-1;/*子弹消失*/
if(map[amy[i].fire.x][amy[i].fire.y]==2)/*打到砖头*/
{
amy[i].fire.direction=-1;
DrawBlack(amy[i].fire.y,amy[i].fire.x);/*砖头打掉*/
map[amy[i].fire.x][amy[i].fire.y]=0;/*被打掉的地方变成可走的地方*/
}
if(map[amy[i].fire.x][amy[i].fire.y]==5)/*敌人打到老家*/
{lose=1;break;}
if(amy[i].fire.x==Playone.x&&amy[i].fire.y==Playone.y)/*打中玩家*/
{
for(j=0;j<5;j )
Playone.fire[j].direction=-1;/*玩家子弹都消失*/
amy[i].fire.direction=-1;
DrawBlack(amy[i].fire.y,amy[i].fire.x);
map[amy[i].fire.x][amy[i].fire.y]=0;/*被打掉的地方变成可走的地方*/
lose=1;break;/*好人被打掉后就失败*/
}
}
nosound();
for(i=0;i<5;i )/*敌人方向随机的改变*/
{
if(amy[i].direction<0)
continue;
while(1)
{
amy[i].directiontwo=random(4) 1;
if(amy[i].direction==1&&amy[i].directiontwo==3)
continue;
if(amy[i].direction==3&&amy[i].directiontwo==1)
continue;
if(amy[i].direction==2&&amy[i].directiontwo==4)
continue;
if(amy[i].direction==4&&amy[i].directiontwo==2)/*这里4个if是判定有没有往返走*/
continue;
if(amy[i].directiontwo==3&&(map[amy[i].x 1][amy[i].y]==3||map[amy[i].x 1][amy[i].y]==1||map[amy[i].x 1][amy[i].y]==2))
continue;
if(amy[i].directiontwo==1&&(map[amy[i].x-1][amy[i].y]==3||map[amy[i].x-1][amy[i].y]==1||map[amy[i].x-1][amy[i].y]==2))
continue;
if(amy[i].directiontwo==2&&(map[amy[i].x][amy[i].y 1]==3||map[amy[i].x][amy[i].y 1]==1||map[amy[i].x][amy[i].y 1]==2))
continue;
if(amy[i].directiontwo==4&&( map[amy[i].x][amy[i].y-1]==3||map[amy[i].x][amy[i].y-1]==1||map[amy[i].x][amy[i].y-1]==2))
continue;/*以上4个是是否碰到了墙壁或者水什么的*/
DrawBlack(amy[i].y,amy[i].x);/*把原来的地方擦掉*/
amy[i].direction=amy[i].directiontwo;
if(amy[i].direction==1)
{amy[i].x--;amy[i].y=amy[i].y;}
if(amy[i].direction==3)
{amy[i].x ;amy[i].y=amy[i].y;}
if(amy[i].direction==2)
{amy[i].y ;amy[i].x=amy[i].x;}
if(amy[i].direction==4)
{amy[i].y--;amy[i].x=amy[i].x;}
if(amy[i].x==Playone.x&&amy[i].y==Playone.y)/*相撞*/
lose=1;
if(map[amy[i].x][amy[i].y]==5)/*敌人撞到老家*/
lose=1;
DrawAmy(amy[i].y,amy[i].x,i);/*画敌人*/
if(amy[i].fire.direction<0)
amy[i].fireplay=random(4);
if(amy[i].fireplay==1&&amy[i].fire.direction<0)/*发射*/
{
amy[i].fire.direction=amy[i].direction;/*子弹方向与敌人方向一致*/
amy[i].fire.x=amy[i].x;
amy[i].fire.y=amy[i].y;
}
break;
}
}
if(lose)/*因为失败而跳出循环显示失败*/
{GameOver();break;}
if(GetKey(KEY_ESC))
break;
if(GetKey(KEY_UP))/*往上*/
{
if(Playone.direction==1&&map[Playone.x-1][Playone.y]!=1&&map[Playone.x-1][Playone.y]!=2)
{
if(map[Playone.x-1][Playone.y]==3)
continue;
DrawBlack(Playone.y,Playone.x);/*这个if是移动,前提是方向与按下的到向一致*/
Playone.x--;
Playone.direction=1;
DrawPlay(Playone.y,Playone.x);
}
else/*只调整炮头方向*/
{
DrawBlack(Playone.y,Playone.x);
Playone.direction=1;
DrawPlay(Playone.y,Playone.x);
}