turbo c下的掃雷游戲源代碼.doc_第1頁(yè)
turbo c下的掃雷游戲源代碼.doc_第2頁(yè)
turbo c下的掃雷游戲源代碼.doc_第3頁(yè)
turbo c下的掃雷游戲源代碼.doc_第4頁(yè)
turbo c下的掃雷游戲源代碼.doc_第5頁(yè)
已閱讀5頁(yè),還剩10頁(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)介

#include#include#include#include#include#include#define ESC 283#define UP 18432#define DOWN 20480#define LEFT 19200#define RIGHT 19712#define ENTER 7181#define SPACE 14624#define WIDTH 15#define AO 0#define TU 1#define MINE -1int m_maxx,m_maxy;int m_row,m_col;int m_x0,m_y0;int *m_mine;int *m_flag;int m_num;int a8=-1,-1,-1,0,1,1,1,0;int b8=-1,0,1,1,1,0,-1,-1;int m_count;int m_countdown;int first;void init_system();void close_system();void draw_box(int,int,int,int,int,int);void draw_mine_region();void count_x0y0();void draw_title();void draw_smile(int);void draw_mine(int,int);void clean_mine();int shift_k_by_ij(int,int);void shift_ij_by_k(int,int *,int *);void shift_xy_by_ij(int i,int j,int *x,int *y);void set_mines();void disp_all_mines();void find_mine(int,int);void count_around_mines();int dig_mine1(int,int);void dig_mine2(int,int);void dig_mine3(int,int);void gameover();void disp_number(int,int);void all_number();void gamewin();void make_flag(int,int);void draw_redflag(int,int);void draw_questionmark(int,int);void disp_rest_mine();void disp_time(time_t);void judge_error_flag();void disp_all_redflags();void draw_cursor(int,int);main()init_system();set_mines();draw_mine_region();clean_mine();getch();close_system();void disp_time(time_t t)int x,y;char str4;if(t999)return;x=m_x0+m_col*(WIDTH+1)+1-40;y=m_y0-30;draw_box(x,y,x+30,y+20,AO,LIGHTGRAY);settextstyle(DEFAULT_FONT,HORIZ_DIR,1);sprintf(str,%3ld,t);setcolor(RED);outtextxy(x+3,y+6,str);void disp_rest_mine() int x,y; char str4; x=m_x0+10; y=m_y0-30; draw_box(x,y,x+30,y+20,AO,LIGHTGRAY); settextstyle(DEFAULT_FONT,HORIZ_DIR,1); sprintf(str,%3d,m_countdown); x=x+(WIDTH-textwidth(str)/2; y=y+3+(WIDTH-textheight(str)/2; setcolor(RED); outtextxy(x,y,str);void draw_questionmark(int i,int j)int x,y;char str=?;m_countdown+;disp_rest_mine();shift_xy_by_ij(i,j,&x,&y);draw_box(x,y,x+WIDTH,y+WIDTH,TU,LIGHTGRAY);setcolor(BLACK);settextstyle(DEFAULT_FONT,HORIZ_DIR,1);x=x+(WIDTH-textwidth(str)/2;y=y+(WIDTH-textheight(str)/2;outtextxy(x,y,str);void draw_redflag(int i,int j)int x,y;m_countdown-;disp_rest_mine();shift_xy_by_ij(i,j,&x,&y);draw_box(x,y,x+WIDTH,y+WIDTH,TU,LIGHTGRAY);setcolor(RED);line(x+WIDTH/4,y+WIDTH/4,x+3*WIDTH/4,y+WIDTH/2+1);line(x+WIDTH/4,y+WIDTH/2+1,x+3*WIDTH/4,y+WIDTH/2+1);setfillstyle(SOLID_FILL,RED);/*floodfill(x+WIDTH/2,y+WIDTH/2,RED); */setcolor(BLACK);line(x+WIDTH/4,y+WIDTH/4,x+WIDTH/4,y+3*WIDTH/4+1);setlinestyle(SOLID_LINE,0,3);line(x+WIDTH/4-2,y+3*WIDTH/4+1,x+WIDTH/4+2,y+3*WIDTH/4+1);setlinestyle(SOLID_LINE,0,1);void make_flag(int i,int j)int k,x,y;k=shift_k_by_ij(i,j);shift_xy_by_ij(i,j,&x,&y);if(m_flagk=0)draw_redflag(i,j);draw_cursor(i,j);m_flagk=-1;else if(m_flagk=-1)draw_questionmark(i,j);m_flagk=-2; draw_cursor(i,j);else if(m_flagk=-2)draw_box(x,y,x+WIDTH,y+WIDTH,TU,LIGHTGRAY);m_flagk=0; draw_cursor(i,j);void count_around_mines()int i,j,k,m,n,x,y;for(k=0;km_row*m_col;k+)shift_ij_by_k(k,&i,&j);for(m=0;m=1&x=1&y=m_col&m_minek!=MINE) n=shift_k_by_ij(x,y); if(m_minen=MINE)m_minek+; void gamewin()int x,y;char str=WIN ! ! !;setcolor(RED);settextstyle(DEFAULT_FONT,HORIZ_DIR,4);x=m_x0+(m_col*(WIDTH+1)-1-textwidth(str)/2;y=m_y0+(m_row*(WIDTH+1)-1-textheight(str)/2;outtextxy(x,y,str);void gameover()int x,y;char str=GAME OVER !;setcolor(RED);settextstyle(DEFAULT_FONT,HORIZ_DIR,4);x=m_x0+(m_col*(WIDTH+1)-1-textwidth(str)/2;y=m_y0+(m_row*(WIDTH+1)-1-textheight(str)/2;outtextxy(x,y,str);void dig_mine3(int i,int j)int k,x,y,m,c,d;k=shift_k_by_ij(i,j);if(m_minek8|m_flagk=-1)return;else if(m_minek0&m_minek9)disp_number(i,j);m_count+;m_minek+=20;return;else if(m_minek=0)shift_xy_by_ij(i,j,&x,&y);draw_box(x,y,x+WIDTH,y+WIDTH,AO,LIGHTGRAY);m_count+;m_minek+=20;for(m=0;m=1&c=1&d=m_col)dig_mine3(c,d);void all_number()int i,j;for(i=1;im_row;i+)for(j=1;jm_col;j+)disp_number(i,j);void disp_number(int i,int j)int k,x,y;char str2;k=shift_k_by_ij(i,j);if(m_minek=MINE)return;shift_xy_by_ij(i,j,&x,&y);draw_box(x,y,x+WIDTH,y+WIDTH,AO,LIGHTGRAY);if(m_minek=0)return;settextstyle(DEFAULT_FONT,HORIZ_DIR,1);sprintf(str,%d,m_minek);x=x+(WIDTH-textwidth(str)/2;y=y+(WIDTH-textheight(str)/2;switch(m_minek)case 1: setcolor(BLUE);break;case 2: setcolor(GREEN);break;case 3: setcolor(RED);break;case 4: setcolor(CYAN);break;case 5: setcolor(YELLOW);break;case 6: setcolor(BLACK);break;case 7: setcolor(BROWN);break;case 8: setcolor(MAGENTA);break;outtextxy(x,y,str);void dig_mine2(int i,int j)int k,x,y;k=shift_k_by_ij(i,j);if(m_flagk=-1)return;shift_xy_by_ij(i,j,&x,&y);draw_box(x,y,x+WIDTH,y+WIDTH,AO,LIGHTGRAY);disp_number(i,j);m_count+;m_minek+=20;void judge_error_flag()int k,m,i,j,x,y;m=m_row*m_col;for(k=0;k10)return 0;if(m_minek=MINE)dig_mine1(i,j);m_minek+=20;return 1;else if(m_minek0&m_minek9)dig_mine2(i,j);m_minek+=20; draw_cursor(i,j);else if(m_minek=0)dig_mine3(i,j); draw_cursor(i,j);else disp_all_mines();return 0;void disp_all_mines()int k,i,j,x,y;for(k=0;km_row*m_col;k+)shift_ij_by_k(k,&i,&j);if(m_minek=MINE)shift_xy_by_ij(i,j,&x,&y);draw_box(x,y,x+WIDTH,y+WIDTH,AO,LIGHTGRAY);draw_mine(i,j);void draw_mine(int i,int j)int x,y;shift_xy_by_ij(i,j,&x,&y);setcolor(BLACK);circle(x+WIDTH/2,y+WIDTH/2,WIDTH/4);setfillstyle(SOLID_FILL,BLACK);floodfill(x+WIDTH/2,y+WIDTH/2,BLACK);void set_mines()int i,k,mcount=0,mnum;mnum=m_col*m_row;for(i=0;imnum;i+)m_minei=0;m_flagi=0;randomize();while(mcountm_num)k=random(mnum);if(m_minek=0)m_minek=MINE;mcount+;count_around_mines();int shift_k_by_ij(int i,int j)return (i-1)*m_col+j-1;void shift_ij_by_k(int k,int *i,int *j)*i=k/m_col+1;*j=k%m_col+1;void shift_xy_by_ij(int i,int j,int *x,int *y)*x=m_x0+(j-1)*(WIDTH+1);*y=m_y0+(i-1)*(WIDTH+1);void disp_all_redflags()int k,m,i,j,x,y;m=m_row*m_col;for(k=0;km;k+)shift_ij_by_k(k,&i,&j);if(m_minek=MINE&m_flagk!=MINE)if(m_flagk=-2)shift_xy_by_ij(i,j,&x,&y);draw_box(x,y,x+WIDTH,y+WIDTH,TU,LIGHTGRAY);draw_redflag(i,j);void draw_cursor(int i,int j)static int x,y;setcolor(LIGHTGRAY);setlinestyle(SOLID_LINE,0,1);setwritemode(1);x=m_x0+(j-1)*(WIDTH+1);y=m_y0+(i-1)*(WIDTH+1);rectangle(x+4,y+4,x+WIDTH-4,y+WIDTH-4);setwritemode(0);void clean_mine()int key=0,a,mark=0,pi=0,pj=0;time_t mt,ntl=0;int i=1,j=1,k,x,y;draw_cursor(i,j);mt=time(NULL);while(key!=ESC)if(mt!=time(NULL)&mark!=0)mt=time(NULL); disp_time(+ntl);key=bioskey(1);if(key=0)continue;key=bioskey(0);pi=i;pj=j;switch(key)case UP: if(i=1) i=m_row;elsei=i-1;break;case DOWN:if(i=m_row) i=1;elsei=i+1;break;case LEFT:if(j=1) j=m_col;elsej=j-1;break;case RIGHT:if(j=m_col) j=1;elsej=j+1;break;case ENTER:mark=1;a=dig_mine(i,j);if(a=1)gameover();else if(m_count=m_row*m_col-m_num)a=1;draw_smile(1);disp_all_redflags();gamewin();break;case SPACE:k=shift_k_by_ij(i,j);if(m_minek10)make_flag(i,j);break;if(a=1)break;if(pi=i&pj=j&(key=ENTER|key=SPACE)continue;else if(pi!=i|pj!=j)draw_cursor(pi,pj);draw_cursor(i,j);void draw_smile(int type)int m=m_x0+m_col*(WIDTH+1)/2,n=m_y0-25;setcolor(YELLOW);circle(m,n,15);setfillstyle(SOLID_FILL,YELLOW);floodfill(m,n,YELLOW);setcolor(BLACK);arc(m-6,n,60,120,6);arc(m-6,n,60,120,5);arc(m+6,n,60,120,6);arc(m+6,n,60,120,5);setcolor(RED);if(type=0)setlinestyle(SOLID_LINE,0,3);line(m-6,n+9,m+6,n+9);setlinestyle(SOLID_LINE,0,1);if(type=1)arc(m,n,220,320,10);arc(m,n,220,320,9);void draw_title()int mwidth,mhight;mwidth=m_col*(WIDTH+1)+1;mhight=m_row*(WIDTH+1)+1;draw_box(m_x0-4,m_y0-50,m_x0+mwidth+2,m_y0+mhight+2,TU,LIGHTGRAY);draw_box(m_x0-2,m_y0-50,m_x0+mwidth+2,m_y0-2,TU,LIGHTGRAY);disp_rest_mine();disp_time(0);void draw_mine_region()int i,j,x,y;draw_title();y=m_y0;for(i=0;im_row;i+)x=m_x0;for(j=0;jm_col;j+)draw_box(x,y,x+WIDTH,y+WIDTH,TU,LIGHTGRAY);x+=WIDTH+1;y+=WIDTH+1;void count_x0y0()m_

溫馨提示

  • 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)論