gezi2d(320+(j-1-m/2)*d,240+(i-1-n/2)*d,d); if(a[i][j]>0) {
shownum(320+(j-1-m/2)*d,240+(i-1-n/2)*d,d,a[i][j]); }
}
else drawlei(320+(j-1-m/2)*d,240+(i-1-n/2)*d,d,a[i][j]);
if(b[i][j]==-1)showflag(320+(j-1-m/2)*d,240+(i-1-n/2)*d,d);
if(b[i][j]==2)shownum(320+(j-1-m/2)*d,240+(i-1-n/2)*d,d,0); }
gbx=320+(ii-1-m/2)*d; gby=240+(jj-1-n/2)*d; drawGB(gbx,gby,d); } /*
随机布雷(randlei)函数用于随机布雷,且计算每个各自周围雷的个数
Int m : 横向各自的数量 要求是双数 Int n : 纵向格子的数量 要求是双数 Int num : 雷的个数 */
randlei(int m,int n,int num) {
int i,j,xx,yy,sum=0,t; srand(time(NULL)); do {
t=random(m*n); xx=t/m+1; yy=t%m+1; if(a[xx][yy]==0) {
a[xx][yy]=-1; sum++; }
}while(sum if(a[i][j]!=-1) { if(a[i-1][j-1]==-1)a[i][j]++; if(a[i-1][j]==-1)a[i][j]++; if(a[i-1][j+1]==-1)a[i][j]++; if(a[i][j-1]==-1)a[i][j]++; if(a[i][j+1]==-1)a[i][j]++; if(a[i+1][j-1]==-1)a[i][j]++; if(a[i+1][j]==-1)a[i][j]++; if(a[i+1][j+1]==-1)a[i][j]++; } } } wangge(int m,int n,int d) { int i,j; setcolor(7); /*网格区域填充浅灰色底色*/ setfillstyle(1,7); bar(320-m/2*d,240-n/2*d,320+m/2*d,240+n/2*d); setcolor(15); for(i=320-m/2*d;i<320+m/2*d;i=i+d) /*小格子起点的横坐标序 列*/ for(j=240-n/2*d;j<240+n/2*d;j=j+d) /*小格子起点的纵坐标序列*/ ;/* gezi3d(i,j,d); */ /*绘制一个立体效果的小格子*/ } /* 画雷(drawlei)函数用于绘制给定坐标位置的雷 雷画在格子的正中心 Int x : 雷所在格子左上角点横坐标 Int y : 雷所在格子左上角点纵坐标 Int d : 格子间的间距 */ drawlei(int x,int y,int d) { int r; setcolor(0); /*雷颜色为黑色*/ for(r=d/4;r>0;r--) circle(x+d/2,y+d/2,r); /*画多个小园形成雷外壳*/ line(x+d/2,y+3,x+d/2,y+d-3); /*画雷外壳上的刺*/ line(x+3,y+d/2,x+d-3,y+d/2); line(x+5,y+5,x+d-5,y+d-5); line(x+5,y+d-5,x+d-5,y+5); } /* 显示数字(shownum)函数用于显示给定坐标位置的数字 数字显示在格子的正中心 lnt x : 数字所在格子左上角点横坐标 lnt y : 数字所在格子左上角点纵坐标 int d : 格子间的间距 int n : 要显示的数字 */ shownum(int x,int y,int d,int n) { setcolor(0+n); /*数字颜色为黑色*/ settextstyle(SMALL_FONT,HORIZ_DIR,0); outtextxy(x+0.3*d,y+0.4*d,num[n]); } /* 显示旗子(showflag)函数用于显示给定坐标位置的标志为雷的小红旗 int x : 旗子所在格子左上角点横坐标 int y : 旗子所在格子左上角点纵坐标 int d : 格子间的间距 */ 百度搜索“70edu”或“70教育网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,70教育网,提供经典综合文库扫雷课程设计报告 -(4)在线全文阅读。
相关推荐: