setcolor(12);
line(3,5,20,25);
line(20,25,28,5);
line(28,5,3,5);
fillellipse(16,15,4,4);
getimage(0,0,29,29,tu[5]);
putimage(0,0,tu[5],1);
tu[6]=tu[4];/*六号空存的是炸弹图像,吃了可以增加放的炸弹数,*/
/*所以真接使用炸弹第四帧的图像*/
/*把闪电图像存到7号空间中*/
setcolor(4);
setlinestyle(0,0,3);
line(20,2,7,16);
line(20,2,16,12);
line(16,12,24,13);
line(7,16,15,15);
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);
}
/***************************
初始化游戏
并产生随机地图
****************************/
initgame()
{int i,j;
cleardevice();
randomize();
/*清空所有炸弹*/
for(i=0;i<10;i++) ball[i].used=0;
/*先把屏幕信息数组初始化什为100*/
for (i=0;i<22;i++)
for (j=0;j<16;j++)
map[i][j]=100;
/*先把屏幕信息数组人的位置,始初化,每次都不变*/
man[0].x=0;
man[0].y=0;
man[0].maxball=1;
man[0].ballnum=0;
man[0].power=2;
man[0].definetime=0;
man[1].x=MX-1;
man[1].y=MY-1;
man[1].maxball=1;
man[1].ballnum=0;
man[1].power=2;
man[1].definetime=0;
map[0][0]=11;
map[0][1]=0;
map[1][0]=0;
map[MX-1][MY-1]=12;
map[MX-1][MY-2]=0 ;
map[MX-2][MY-1]=0;
/*把人的图输出*/
putimage(0,0,tu[11],1);
putimage(600,15*30,tu[12],0);
/*下面产生随机地图*/
for (i=0;i<21;i++)
for (j=0;j<16;j++)
{ if (map[i][j]!=100) continue;
if (random(1000)%2==0||random(1000)%6==0)
{
map[i][j]=9;
putimage(i*30,j*30,tu[9],0);
}else if(random(1000)%2==0||random(1000)%5==0)
{map[i][j]=10;
putimage(i*30,j*30,tu[10],0);
}else
map[i][j]=0;
}
}
/***************************************
向一个方向产生爆炸效果
参数num是要爆炸的炸弹编号
x1,y1 炸的方向
0,1 是向下
0,-1 向上
-1,0 向左
1,0 向右
****************************************/
ZaLine(int x1,int y1,int num)
{int x,y,x2,y2,i,l,j;
x=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)/*如果没有到指定长度 */