數(shù)據(jù)結(jié)構(gòu)掃雷游戲_第1頁(yè)
數(shù)據(jù)結(jié)構(gòu)掃雷游戲_第2頁(yè)
數(shù)據(jù)結(jié)構(gòu)掃雷游戲_第3頁(yè)
數(shù)據(jù)結(jié)構(gòu)掃雷游戲_第4頁(yè)
數(shù)據(jù)結(jié)構(gòu)掃雷游戲_第5頁(yè)
已閱讀5頁(yè),還剩60頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、/*模擬掃雷游戲 */#include <graphics.h>#include <math.h>#include <stdio.h>#include <dos.h>#include <stdlib.h>#include <conio.h>#include <alloc.h>union REGS regs;int size=15;/*用于表示每個(gè)方塊的大小(正方形的邊長(zhǎng))*/int pix,piy=50;/*pix,piy是矩陣的偏移量*/char b2="1"/*用于顯示方格周?chē)睦椎膫€(gè)數(shù)

2、*/int pan3016;/*用于記錄盤(pán)面的情況:0:沒(méi)有、9:有雷、18:周?chē)椎膫€(gè)數(shù)*/int pan13016;/*pan1紀(jì)錄當(dāng)前的挖雷情況,0:沒(méi)有操作、1:打開(kāi)了、2:標(biāo)記了*/int tt;/*紀(jì)錄時(shí)間參數(shù)*/int Eflags;/*用于標(biāo)記鼠標(biāo)按鈕的有效性,0:有效,1:無(wú)效,2:這是鼠標(biāo)的任意鍵等于重新開(kāi)始*/int Msinit();void Draw(int x,int y,int sizex,int sizey);void Facedraw(int x,int y,int sizel,int k);void Dead(int sizel,int x,int y);v

3、oid Setmouse(int xmax,int ymax,int x,int y);int Msread(int *xp,int *yp,int *bup,struct time t1,int k);void Draw1(int x,int y);int Open(int x,int y);float Random();void Have(int sum,int x,int y,int xx,int yy);void Help();void Coread();void Ddraw2(int x,int y);/*下面是主函數(shù)*/main()int mode=VGAHI,devices=VG

4、A;/*圖形模式初始化的變量*/char ams; /*鼠標(biāo)操作中的標(biāo)志變量*/int xms,yms,bms; /*鼠標(biāo)的狀態(tài)變量*/int i,j,k,k1=0; /*i,j,k是循環(huán)變量*/int x=9,y=9,flags=0; /*x,y矩陣的大小*/int sum=10; /*sum 盤(pán)面的雷的總數(shù)目,是個(gè)x,y的函數(shù)*/int x1=0,y1=0; /*用于記錄光標(biāo)當(dāng)前的位置*/int x11=0,y11=0; /*暫時(shí)保存鼠標(biāo)位置的值*/int sizel=10; /*臉的大小*/int cflags=1; /*這是菜單操作標(biāo)志變量,沒(méi)有彈出1,彈出0*/struct time

5、 t1=0,0,0,0; /*時(shí)間結(jié)構(gòu)體,頭文件已定義*/int co3; /*暫時(shí)紀(jì)錄歷史紀(jì)錄*/void far *Map; /*用于保存鼠標(biāo)圖片*/char name320; /*名字字符串,用于記錄名字*/FILE * p; /*文件指針用于文件操作*/Msinit(); /*鼠標(biāo)初始化*/*registerbgidriver(EGAVGA_driver);*/initgraph(&devices,&mode,"C:tc"); /*圖形模式初始化*/*為圖片指針?lè)峙鋬?nèi)存*/if(Map=farmalloc(imagesize(0,0,20,20)=N

6、ULL)/*圖片的大小是20*20*/printf("Memory ererr!n");printf("Press any key to out!n");exit(1);/*用于檢驗(yàn)文件是否完整*/while(p = fopen("score.dat", "r") = NULL) /*如果不能打開(kāi)就新建一個(gè)*/if(p = fopen("score.dat", "w") = NULL)/*如果不能新建就提示錯(cuò)誤并推出*/printf("The file cannot

7、 open!n");printf("Presss any key to exit!n");getch();exit(1);/*寫(xiě)入初始內(nèi)容*/fprintf(p,"%d %d %d,%sn%sn%sn",999,999,999,"xiajia","xiajia","xiajia");fclose(p); /*暫時(shí)讀出歷史紀(jì)錄。并用co3紀(jì)錄*/fscanf(p,"%d %d %d,",&co0,&co1,&co2);for(i=0;i<

8、3;i+)fscanf(p,"%sn",namei);fclose(p);Setmouse(1,1,615,460); /*設(shè)置鼠標(biāo)的活動(dòng)范圍*/pix=250-x*size/2; /*計(jì)算地雷按鈕矩陣的左邊*/bss: b0='1' /*游戲開(kāi)始和重來(lái)的切入點(diǎn)*/flags=0; /*測(cè)試中這個(gè)變量好像沒(méi)有作用,但是為了邏輯的完整性暫時(shí)保留*/k=0;Eflags=0;tt=0;cleardevice();/*清屏*/setbkcolor(LIGHTCYAN);for(i=0;i<30;i+) /*盤(pán)面初始化*/for(j=0;j<16;j+)

9、panij=0;pan1ij=0;for(;) /*用于生成雷的盤(pán)面情況*/i=(int)(x*Random();j=(int)(y*Random();if(panij=0)panij=9;k=k+1;if(k=sum) break; for(i=0;i<x;i+)/*用于統(tǒng)計(jì)各點(diǎn)的周邊情況*/for(j=0;j<y;j+)if(panij=0)/*只有沒(méi)有雷的才需要處理*/if(i-1>=0 && j-1>=0 && pani-1j-1=9) panij+;if(j-1>=0 && panij-1=9) panij

10、+;if(i+1<x && j-1>=0 && pani+1j-1=9) panij+;if(i-1>=0 && pani-1j=9) panij+;if(i+1<x && pani+1j=9) panij+;if(i-1>=0 && j+1<y && pani-1j+1=9) panij+;if(j+1<y && panij+1=9) panij+;if(i+1<x && j+1<y && pan

11、i+1j+1=9) panij+;if(sum=10)/*畫(huà)底座*/Draw(170,1,162,200);setcolor(1);outtextxy(175,5,"Game( )");setcolor(4);outtextxy(175,5," G");/*小*/elseif(sum=40)Draw(115,1,272,307);setcolor(1);outtextxy(120,5,"Game(G)");setcolor(4);outtextxy(120,5," G");/*中*/elseif(sum=99)Dr

12、aw(40,1,470,307);setcolor(1);outtextxy(45,5,"Game(G)");setcolor(4);outtextxy(45,5," G");/*大*/setcolor(1);/*顯示提示信息*/outtextxy(100,350," : Help.");setcolor(4);outtextxy(100,350,"H");setcolor(1);outtextxy(200,350," / : exit.");setcolor(4);outtextxy(200,

13、350,"Q");outtextxy(220,350,"ESC");setcolor(1);outtextxy(330,350," : cores.");setcolor(4);outtextxy(330,350,"R");Facedraw(250,30,sizel,2);/*顯示控制按鈕,臉型*/for(i=0;i<x;i+)/*這一段用于描繪盤(pán)面*/for(j=0;j<y;j+)Draw(i*size+pix,j*size+piy,size,size);Have(sum,pix+20,30,x,y)

14、;/*各項(xiàng)的初始顯示*/k=0;setfillstyle(1, 0);bar(460-pix,25,490-pix,40);setcolor(4);outtextxy(465-pix,30,"000");/*下面這一段用于接收用戶的控制,并做出反應(yīng)*/for(;)ams=Msread(&xms,&yms,&bms,t1,k);/*讀取鼠標(biāo)狀態(tài)*/*下面一段用于保存并記錄鼠標(biāo)圖片*/if(flags!=0)putimage(x11,y11,Map,COPY_PUT);x11=xms;y11=yms;flags=1;/*這里插入菜單操作*/if(xms&

15、gt;=pix-10 && xms<=pix+26 && yms>=2 && yms<=14 && bms=1) | ams='g' | ams='G')/*點(diǎn)中菜單的判斷*/Draw(pix-10,14,100,88); /*畫(huà)菜單*/cflags=0;setcolor(1);/*下面顯示菜單項(xiàng)*/outtextxy(pix-4,19,"Restar(R)");setcolor(4);outtextxy(pix-4,19," R");set

16、color(1);/*下面顯示菜單項(xiàng)*/outtextxy(pix-4,30,"Easy(E)");setcolor(4);outtextxy(pix-4,30," E");setcolor(1);/*下面顯示菜單項(xiàng)*/outtextxy(pix-4,41,"Nomall(N)");setcolor(4);outtextxy(pix-4,41," N");setcolor(1);/*下面顯示菜單項(xiàng)*/outtextxy(pix-4,52,"Hard(H)");setcolor(4);outtex

17、txy(pix-4,52," H");setcolor(1);/*下面顯示菜單項(xiàng)*/outtextxy(pix-4,63,"Corse(C)");setcolor(4);outtextxy(pix-4,63," C");setcolor(1);/*下面顯示菜單項(xiàng)*/outtextxy(pix-4,74,"Help(L)");setcolor(4);outtextxy(pix-4,74," L");setcolor(1);/*下面顯示菜單項(xiàng)*/outtextxy(pix-4,85,"Qu

18、it(Q)");setcolor(4);outtextxy(pix-4,85," Q");bms=0;/*完成菜單的描繪*/*這里是為了完全實(shí)現(xiàn)鼠標(biāo)控制才加入的內(nèi)容*/if(Eflags=2 && (bms!=0 | ams!=-1)goto bss;/*下面實(shí)現(xiàn)菜單的功能,每一項(xiàng)響應(yīng)一個(gè)菜單項(xiàng)*/if(cflags=0)if(xms>=pix-6 && xms<=pix+85 && yms>=17 && yms<=28 && bms=1)| (ams='

19、;r' | ams='R')/*下面依次響應(yīng)菜單中各項(xiàng)*/cflags=1;goto bss;elseif(xms>=pix-6 && xms<=pix+85 && yms>=28 && yms<=39 && bms=1) | ams='e' | ams='E')cflags=1;x=9;y=9;sum=10;pix=250-x*size/2;goto bss;elseif(xms>=pix-6 && xms<=pix+85

20、 && yms>=39 && yms<=50 && bms=1) | ams='n' | ams='N')cflags=1;x=16;y=16;sum=40;pix=250-x*size/2;goto bss;elseif(xms>=pix-6 && xms<=pix+85 && yms>=50 && yms<=61 && bms=1) | ams='h' | ams='H')cfla

21、gs=1;x=30;y=16;sum=99;pix=250-x*size/2+25;goto bss;elseif(xms>=pix-6 && xms<=pix+85 && yms>=61 && yms<=72 && bms=1) | ams='c' | ams='C')cflags=1;Coread();elseif(xms>=pix-6 && xms<=pix+85 && yms>=72 && yms<

22、;=83 && bms=1) | ams='l' | ams='L')cflags=1;Help();elseif(xms>=pix-6 && xms<=pix+85 && yms>=83 && yms<=94 && bms=1) | ams='q' | ams='Q' | ams=27)cflags=1;fclose(p);closegraph();farfree(Map);exit(1);elseif(bms!=0)cfla

23、gs=1;goto bss;/*結(jié)束菜單功能的實(shí)現(xiàn)*/*在笑臉按鈕處單擊時(shí)重新開(kāi)始*/if(cflags!=0 && xms >=250-sizel-2 && yms >= 30-sizel-2 && xms<=250+sizel+2 && yms<=30+sizel+2 && bms=1 )goto bss;if(Eflags=0 && cflags!=0 && xms-pix>=0 && yms-piy >=0 &&am

24、p; xms<pix+x*size && yms<piy+y*size )/*111判斷*/x1=(int)(xms-pix)/size);/*計(jì)算鼠標(biāo)目前的按鈕位置*/y1=(int)(yms-piy)/size);if(ams=-1 && bms=1 && pan1x1y1=0)/*單擊鼠標(biāo)左鍵*/if(k=0)/*k這里判斷是否是第一次按下.0:不計(jì)時(shí),1:開(kāi)始計(jì)時(shí)*/gettime(&t1);k=1;if(panx1y1!=9)Draw1(x1,y1);Open(x,y);elseDead(sizel,x,y);k=0

25、;if(ams=-1 && bms=2 && pan1x1y1=0)/*單擊鼠標(biāo)右鍵*/delay(100);setcolor(10);circle(x1*size+pix+7,y1*size+piy+7,4);pan1x1y1=2;Have(sum,pix+20,30,x,y);elseif(ams=-1 && bms=2 && pan1x1y1=2)/*單擊鼠標(biāo)右鍵*/delay(100);Draw(x1*size+pix,y1*size+piy,size,size);pan1x1y1=0;Have(sum,pix+20,30

26、,x,y);/*相當(dāng)于鼠標(biāo)右擊*/if(ams=-1 && bms=3 && pan1x1y1=1)/*相當(dāng)于鼠標(biāo)雙擊,有效性判斷*/i=0;if(x1-1>=0 && y1-1>=0 && pan1x1-1y1-1=2) i+;if(y1-1>=0 && pan1x1y1-1=2)i+;if(x1+1<x && y1-1>=0 && pan1x1+1y1-1=2) i+;if(x1-1>=0 && pan1x1-1y1=2) i+

27、;if(x1+1<x && pan1x1+1y1=2) i+;if(x1-1>=0 && y1+1<y && pan1x1-1y1+1=2) i+;if(y1+1<y && pan1x1y1+1=2) i+;if(x1+1<x && y1+1<y && pan1x1+1y1+1=2) i+;if(i=panx1y1) /*有效*/if(x1-1>=0 && y1-1>=0 && pan1x1-1y1-1!=2) if(p

28、anx1-1y1-1!=9) Draw1(x1-1,y1-1);else Dead(sizel,x,y); k=0;if(y1-1>=0 && pan1x1y1-1!=2)if(panx1y1-1!=9)Draw1(x1,y1-1);else Dead(sizel,x,y);k=0;if(x1+1<x && y1-1>=0 && pan1x1+1y1-1!=2) if(panx1+1y1-1!=9) Draw1(x1+1,y1-1);else Dead(sizel,x,y);k=0;if(x1-1>=0 &&

29、; pan1x1-1y1!=2) if(panx1-1y1!=9) Draw1(x1-1,y1);else Dead(sizel,x,y);k=0;if(x1+1<x && pan1x1+1y1!=2) if(panx1+1y1!=9) Draw1(x1+1,y1);else Dead(sizel,x,y);k=0;if(x1-1>=0 && y1+1<y && pan1x1-1y1+1!=2) if(panx1-1y1+1!=9)Draw1(x1-1,y1+1);else Dead(sizel,x,y);k=0;if(y1+1

30、<y && pan1x1y1+1!=2)if(panx1y1+1!=9) Draw1(x1,y1+1);else Dead(sizel,x,y);k=0;if(x1+1<x && y1+1<y &&pan1x1+1y1+1!=2) if(panx1+1y1+1!=9) Draw1(x1+1,y1+1);else Dead(sizel,x,y);k=0;Open(x,y);/*勝利條件*/k1=0;for(i=0;i<x;i+)for(j=0;j<y;j+)if(pan1ij!=1) k1+;if(k1=sum)for

31、(i=0;i<x;i+)for(j=0;j<y;j+)if(pan1ij=0) setcolor(10);circle(i*size+pix+7,j*size+piy+7,4);Facedraw(250,30,sizel,3);if(x=9 && tt<co0) j=0;co0=tt;i=0;if(x=16 && tt<co1) j=1;co1=tt;i=0;if(x=30 && tt<co2) j=2;co2=tt;i=0;if(i=0)Draw(10,10,300,55);setcolor(4);outtextx

32、y(20,15,"You break the corse!");outtextxy(20,25,"Please input your name(0 - 19):");setfillstyle(1, 14);bar(20,35,200,50);for(i=0;i<19;i+)nameji=getch();if(nameji=8) i=i-2;if(nameji=13) nameji='0'break;nameji+1='0'setfillstyle(1, 14);bar(20,35,200,50);setcolor(1

33、);outtextxy(20,40,namej);if(p = fopen("score.dat", "w") = NULL)printf("The file cannot open!n");exit(1);fprintf(p,"%d %d %d,",co0,co1,co2);for(i=0;i<3;i+)fprintf(p,"%sn",namei);fclose(p);Coread();getch();goto bss;/*結(jié)束111的判斷*/*下面是一些快捷功能鍵的定義*/if(ams

34、='q'|ams='Q'| ams=27 ) fclose(p);closegraph();farfree(Map);exit(1); /*退出主程序的唯一出口*/if(ams='c'|ams='C') goto bss; /*重來(lái)*/if(ams='h'|ams='H') Help();k=0; /*幫助文檔*/if(ams='r'|ams='R') Coread();k=0; /*察看成績(jī)*/getimage(xms,yms,xms+20,yms+20,Map);

35、Ddraw2(xms,yms);delay(10);/*結(jié)束鼠標(biāo)循環(huán)讀取的死循環(huán)*/*+主函數(shù)結(jié)束+*/*這個(gè)函數(shù)用于實(shí)現(xiàn)鼠標(biāo)的初始化*/int Msinit()int recored;regs.x.ax=0;int86 (0x33, & regs, & regs);recored=regs.x.ax;if(recored=0)printf("Mouse not found or Mouse driver not installed.n");return 0;elsereturn recored;/*下面這個(gè)子程序是完成描繪一個(gè)按鈕*/void Draw(i

36、nt x,int y,int sizex,int sizey)/* x, y為左上角坐標(biāo)sizex,sizey為長(zhǎng)和寬*/int sizx=sizex-1;int sizy=sizey-1;setcolor(15);/*這里最好用白色*/line(x,y,x+sizx-1,y);line(x,y+1,x+sizx-2,y+1);line(x,y,x,y+sizy-1);line(x+1,y,x+1,y+sizy-2);setcolor(8);/*這里最好用深灰色*/line(x+1,y+sizy,x+sizx,y+sizy);line(x+2,y+sizy-1,x+sizx,y+sizy-1)

37、;line(x+sizx-1,y+1,x+sizx-1,y+sizy);line(x+sizx,y+2,x+sizx,y+sizy);setcolor(7);/*這里最好用灰色*/putpixel(x,y+sizy,3);putpixel(x+1,y+sizy-1,3);putpixel(x+sizx,y,3);putpixel(x+sizx-1,y+1,3);setfillstyle(1, 7);/*這里最好用灰色,設(shè)置填充模式*/bar(x+2,y+2,x+sizx-2,y+sizy-2);/*下面是一些畫(huà)圖程序*/*形參x,y笑臉的中心坐標(biāo),sizel臉的大小(半徑),k為要描述的臉型,

38、1:哭、2:平常、3:笑*/void Facedraw(int x,int y,int sizel,int k)Draw(x-sizel-3,y-sizel-3,2*(sizel+4),2*(sizel+4);/*畫(huà)一個(gè)按鈕*/setcolor(14);setfillstyle(1, 14);pieslice(x, y, 0, 360, sizel);/*畫(huà)一個(gè)黃色的圓面*/setfillstyle(1, 0);setcolor(0);if(k=1)/*失敗*/line(x-sizel*7/20,y-sizel*7/20,x-sizel*3/20,y-sizel*3/20);/*畫(huà)兩個(gè)差表示眼

39、睛*/line(x-sizel*7/20,y-sizel*3/20,x-sizel*3/20,y-sizel*7/20);line(x+sizel*3/20,y-sizel*7/20,x+sizel*7/20,y-sizel*3/20);line(x+sizel*3/20,y-sizel*3/20,x+sizel*7/20,y-sizel*7/20);arc(x,y+sizel,20,160, sizel/2);if(k=2)/*平常*/bar(x-sizel*7/20,y-sizel*7/20,x-sizel*3/20,y-sizel*3/20);bar(x+sizel*3/20,y-siz

40、el*7/20,x+sizel*7/20,y-sizel*3/20);arc(x,y,200,340, sizel*3/4);if(k=3)/*成功*/bar(x-sizel/2,y-sizel/2,x-sizel*3/20,y-sizel*3/20);bar(x+sizel*3/20,y-sizel/2,x+sizel/2,y-sizel*3/20);line(x-sizel*3/20,y-sizel/2,x+sizel*3/20,y-sizel/2);line(x-sizel/2,y-sizel*5/20,x-sizel,y);line(x+sizel/2,y-sizel*5/20,x+s

41、izel,y);arc(x,y,200,340, sizel*3/4); /*嘴巴*/*死亡后的處理程序*/*x,y要判斷的點(diǎn)的坐標(biāo),sizel為臉的大小*/void Dead(int sizel,int x,int y)int i,j;/*循環(huán)變量*/setcolor(4);for(i=0;i<x;i+)for(j=0;j<y;j+)if(panij=9)circle(i*size+pix+7,j*size+piy+7,4);/*用紅色的圓圈標(biāo)記有雷的方塊*/Facedraw(250,30,sizel,1);Eflags=1;/*下面的函數(shù)用于實(shí)現(xiàn)設(shè)置鼠標(biāo)的移動(dòng)范圍*/*xmax

42、,ymax為左上角的坐標(biāo)x,y矩陣的大小*/void Setmouse(int xmax,int ymax,int x,int y)int left,right,top,buttom;/*這四個(gè)變量用于確定移動(dòng)的左上角和右下角*/left=xmax;right=x;top=ymax;buttom=y;regs.x.ax=7;regs.x.cx=left;regs.x.dx=right;int86(0x33,& regs,& regs);regs.x.ax=8;regs.x.cx=top;regs.x.dx=buttom;int86(0x33,& regs,& r

43、egs);/*下面這個(gè)函數(shù)用于實(shí)現(xiàn)鼠標(biāo)的讀取*/*xp,yp,bup分別為鼠標(biāo)的位置和按鍵情況,t1,k是時(shí)間現(xiàn)實(shí)參數(shù),t1為開(kāi)始時(shí)間,k為開(kāi)始標(biāo)記*/int Msread(int *xp,int *yp,int *bup,struct time t1,int k)int x0=*xp,y0=*yp,bu0=*bup;int xnew,ynew,ch;int tt1=0;/*用于記錄時(shí)間差*/struct time t2;char ttt4="000"doif(kbhit() return getch();regs.x.ax=3;int86(0x33,& regs,

44、& regs);xnew=regs.x.cx;ynew=regs.x.dx;*bup=regs.x.bx;/*下面用于顯示時(shí)間*/if(k=1)/*如果已經(jīng)開(kāi)始就計(jì)算時(shí)間差*/gettime(&t2);tt1=(t2.ti_hour- t1.ti_hour)*3600 + (t2.ti_min- t1.ti_min)*60 + t2.ti_sec - t1.ti_sec;/*有待改進(jìn)*/if(tt1<=999 && tt!=tt1)/*當(dāng)時(shí)間差有改變時(shí),才顯示*/tt=tt1;ttt0=(tt-tt%100)/100+48;ttt1=(tt%100-tt%

45、10)/10 +48;ttt2=tt%10+48;setfillstyle(1, 0);bar(460-pix,25,490-pix,40);setcolor(4);outtextxy(465-pix,30,ttt);while(xnew=x0&&ynew=y0&&*bup=bu0);*xp=xnew;*yp=ynew;return -1;/*鍵盤(pán)無(wú)輸入時(shí)返回-1,其次返回鍵盤(pán)值*/void Draw1(int x,int y)/*這個(gè)函數(shù)用于在x,y的位置描繪開(kāi)后的情況*/setfillstyle(1, 7);bar(x*size+pix,y*size+piy

46、,x*size+size+pix-1,y*size+size+piy-1);/*在四個(gè)角上畫(huà)上點(diǎn)標(biāo)記*/*putpixel(x*size+pix,y*size+piy,8);putpixel(x*size+size+pix-1,y*size+size+piy-1,8);putpixel(x*size+pix,y*size+size+piy-1,8);putpixel(x*size+size+pix-1,y*size+piy,8);*/setcolor(8);setlinestyle(1, 0, 1);rectangle(x*size+pix,y*size+piy,x*size+size+pix

47、-1,y*size+size+piy-1);setlinestyle(0, 0, 1);if(panxy!=0)/*沒(méi)有雷的話不做顯示*/b0=panxy+48;if(panxy!=7)/*防止字的顏色和背景顏色相同*/setcolor(panxy);else setcolor(9);outtextxy (x*size+pix+3,y*size+piy+3,b);pan1xy=1;/*在pan1中標(biāo)記這一點(diǎn)的挖雷情況*/*自開(kāi)函數(shù)*/int Open(int x,int y)/*函數(shù)中引入pan2的目的是為了增加自開(kāi)的效率,但是還是有不足之處*/int i,j,k;int pan23016=0

48、;/*pan2,臨時(shí)紀(jì)錄盤(pán)面的自開(kāi)情況,0沒(méi)有自開(kāi)過(guò),1:已經(jīng)自開(kāi)過(guò)(30 這里有危險(xiǎn)的技術(shù)性問(wèn)題!)*/for(;)k=0;/*是一個(gè)標(biāo)記變量*/for(i=0;i<x;i+)for(j=0;j<y;j+)if (panij=0 && pan1ij=1 && pan2ij=0)/*如果滿足下面條件,沒(méi)有雷,已經(jīng)打開(kāi),沒(méi)有自開(kāi)過(guò)就繼續(xù)*/pan2ij=1;/*標(biāo)記自開(kāi)過(guò)*/k=k+1;/*開(kāi)周?chē)狞c(diǎn)*/if(i-1>=0 && j-1>=0 && pan1i-1j-1=0) Draw1(i-1,j-1);

49、/*左上方*/if(j-1>=0 && pan1ij-1=0) Draw1(i,j-1); /*上方*/if(i+1<x && j-1>=0 && pan1i+1j-1=0) Draw1(i+1,j-1); /*右上方*/if(i-1>=0 && pan1i-1j=0) Draw1(i-1,j); /*左方*/if(i+1<x && pan1i+1j=0) Draw1(i+1,j); /*右方*/if(i-1>=0 && j+1<y && pan1i-1j+1=0) Draw1(i-1,j+1); /*左下方*/if(j+1<y && pan1ij+1=0) Draw1(i,j+1); /*下方*/if(i+1<x && j+1<y && pan1i+1j+1=0) Draw1(i+1,j+1); /*右下方*/if(k=0) return 0;/*沒(méi)有新的自開(kāi)點(diǎn)時(shí)退出*/float Random()/*隨即數(shù)生成函數(shù),加入了時(shí)間變量目的在于加強(qiáng)它的隨機(jī)性*/float aa;int i,j;str

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論