line(15,15,8,29);
line(24,13,8,29);
getimage(0,0,29,29,tu[7]);
putimage(0,0,tu[7],1);
/*把模拟爆炸效果的图像存到8号空间中*/
for(i=0;i<200;i++)
putpixel(random(30),random(30),random(16));
getimage(0,0,29,29,tu[8]);
putimage(0,0,tu[8],1);
/*把可推动的箱子图像存到9号空间中*/
setcolor(1);
setfillstyle(1,14);
bar(1,1,28,28);
setcolor(1);
line(15,1,15,10);
line(1,10,28,10);
line(1,20,29,20);
line(15,20,15,28);
getimage(0,0,29,29,tu[9]);
putimage(0,0,tu[9],1);
/*把不可推动的箱子图像存到10号空间中*/
setcolor(9);
setfillstyle(1,12);
bar3d(1,1,26,26,1,1);
getimage(0,0,29,29,tu[10]);
putimage (0,0,tu[0],0);
/*把第一个人脸图像存到11号空间中*/
setlinestyle(0,0,3);
setcolor(4);
circle(15,15,13);
circle(8,13,4);
circle(24,13,4);
line(11,18,17,15);
line(11,18,15,19);
setlinestyle(0,0,3);
arc(15,15,225,320,9);
getimage(0,0,29,29,tu[11]);
putimage(0,0,tu[11],1);
/*把第二个人脸图像存到11号空间中*/
setlinestyle(0,0,3);
setcolor(1);
circle(15,15,13);
circle(8,13,4);
circle(24,13,4);
line(11,18,17,15);
line(11,18,15,19);
setlinestyle(0,0,3);
arc(15,15,225,320,9);
getimage(0,0,29,29,tu[12]);
putimage(0,0,tu[12],1);
}
/***************************************
向一个方向产生爆炸效果
参数num是要爆炸的炸弹编号
x1,y1 炸的方向
0,1 是向下
0,-1 向上
-1,0 向左
1,0 向右
****************************************/
ZaLine(int x1,int y1,int num,int *IsHave )
{
int x,y,x2,y2,i,l,j;
x2=ball[num].x;/* 取出炸弹位置 */
y2=ball[num].y;
l=man[ball[num].man].power;/* 炸弹爆炸的长度 */
for(i=0,j=0;abs(i)<l&&abs(j)<l;i+=x1,j+=y1)/*如果没有到指定长度 */
{ x=x2+i;y=y2+j;/* 当前炸到的位置位置 */
if(x<0||x>20||y<0||y>15) return 0;/* 如果超出屏幕范围,退出函数执行 */
if ((x==man[0].x&&y==man[0].y)||(x==man[1].x&&y==man[1].y))/* 如果炸到了人 */
{ if (!(x==man[0].x&&y==man[0].y))/* 如果不是一号 */
message("the red win!");/* 显示红色玩家胜的信息 */
else
message("the green win!");/* 显示篮色玩家胜的信息 */
GameOver();/* 结束游戏 */
}else if(map[x][y]==0)/* 如果为空 */
{ putimage((x)*30,(y)*30,tu[8],0);/*放爆炸效果图 */
}else if(map[x][y]==9)/* 如果为可推箱子 */
{ putimage((x)*30,(y)*30,tu[0],0);/* 清去原始图像*/
putimage((x)*30,(y)*30,tu[8],0);/*放爆炸效果图 */
if (random(1000)%4==0) /*产生爆东西的效果*/
{ int r;
r=random(3)+5;
if(r>7)r--;
map[x][y]=r;
}
else map[x][y]=0;
return 0;/* 因为炸到了可吃的东西,所以停止爆炸 */
}
else if (map[x][y]>=20)
{ (*IsHave)++;
BaoZa(map[x][y]%10);/* 如果烽到炸弹,继续炸 */
}
else if (map[x][y]==10) return 0;/* 如果如是是炸不动箱子,停止爆炸 */
else/* 如果是其它肯定是那三个,以吃的东西,就是闪电,定时器,和炸弹,所以炸掉,结束爆炸 */
{ putimage((x)*30,(y)*30,tu[0],0);
putimage((x)*30,(y)*30,tu[8],0);
if (random(1000)%3==0)
map[x][y]=random(3)+5;
else
map[x][y]=0;
return(0);
}
}/* end of for */
}/* end of ZaLine*/
/**************************************
爆炸后清理爆炸现场
参数和Zaline()一样
把爆炸爆出的东西显示出来