C語言案例精編_第1頁
C語言案例精編_第2頁
C語言案例精編_第3頁
C語言案例精編_第4頁
已閱讀5頁,還剩154頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

案例ー貪吃蛇游戲案例二計算器案例三黑白棋游戲案例四迷宮問題案例五掃地雷游戲案例六速算24案例七數(shù)據(jù)結(jié)構(gòu)CAI系統(tǒng)案例八進(jìn)程調(diào)度案例九存儲管理分區(qū)分配算法案例卜通訊錄案例d"一學(xué)生成績管理案例トニ工資管理案例十三圖書借閱管理案例卜四教師工作量計算#defineN200#include<graphics.h>#include<stdlib.h>#include<dos.h>#defineLEFT0x4b00#defineRIGHT0x4d00#defineDOWN0x5000#defineUP0x4800#defineESC0x01lbinti,key;intscore=0;/?得分?/intgamespeed=50000;/?游戲速度自己調(diào)整?/structFood(intx;/?食物的橫坐標(biāo)ラinty;/米食物的縱坐標(biāo)ワintyes;/?判斷是否要出現(xiàn)食物的變量*/}food;/?食物的結(jié)構(gòu)體?/structSnake(intx[NJ;inty[N];intnode;/?蛇的節(jié)數(shù)?/intdirection;/?蛇移動方向*/intlife;/?蛇的生命?;钪凰劳?/}snake;voidInit(void);/?圖形驅(qū)動?/voidClose(void);/キ圖形結(jié)束*/voidDrawK(void);/?開始畫面?/voidGameOver(void);/*結(jié)束游戲*/voidGamePlay(void);/?玩游戲具體過程*/voidPrScore(void);/?輸出成績?//?主函數(shù)?/voidmain(void)(Init();/?圖形驅(qū)動?/DrawK();/?開始畫面?/GamePlay。;/?玩游戲具體過程*/Close。;/?圖形結(jié)束?/)/?圖形驅(qū)動?/voidInit(void)(intgd=DETECT,gm;initgraph(&gd,&gm,"c:\\tcH);cleardevice。;)/?開始畫面,左上角坐標(biāo)為(50,40),右下角坐標(biāo)為(610,460)的圍墻?/voidDrawK(void)(/*selbkcolor(LIGHTGREEN);*/setcolor(l1);setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*設(shè)置線型?/for(i=50;iv=600;i+=10)/?畫圍墻(rectangle。,4〇,i+10,49);/?上邊?/rectangle。,451,i+10,46〇);/?下邊?/)for(i=40;i<=450;i+=10)(rectangle。。,i,59,i+10);/?左邊?/rectangle(60l,i,610,i+1〇);/?右邊ッ))/?玩游戲具體過程*/voidGamePlay(void)(randomize();/*隨機數(shù)發(fā)生器?/food.yes=l;/*l表示需要出現(xiàn)新食物,。表示已經(jīng)存在食物?/snake.life=O;/?活著?/snake.direction=l;/?方向往右?/snake.x[0]=l00;snake.y[0]=l00;/?蛇頭?/snake.x[lJ=110;snake.y[1J=100;snake.node=2;/?節(jié)數(shù)?/PrScore。;/*輸出得分?/while⑴/*可以重復(fù)玩游戲,壓ESC鍵結(jié)束ッ(while(!kbhit())/?在沒有按鍵的情況下,蛇自己移動身體?/(if(food.yes==I)/*需要出現(xiàn)新食物?/(food.x=rand()%400+60;food.y=rand()%350+60;while(food.x%10!=〇)/?食物隨機出現(xiàn)后必須讓食物能夠在整格內(nèi),這樣オ可以讓蛇吃到*/food.x++;while(food,y%10!=0)food.y++;food.yes=0;/?畫面上有食物了?/}if(food.yes==0)/*畫面上有食物了就要顯示?/(setcolor(GREEN);rectangle(food.x,food.y,food.x+10,food.y-10);}for(i二snake.node-l;i>0;i-)/*蛇的每個環(huán)節(jié)往前移動,也就是貪吃蛇的關(guān)鍵算法本/(snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-l];)/*1,234表示右,左,上,下四個方向,通過這個判斷來移動蛇頭ラswitch(snake.direction)(casel:snake.x[0]+=10;break;snake.x[0J-=10;break;snake.y[0]-=10;break;snake.y[0]+=10;break;)for(i=3;i<snake.node;i++)/?從蛇的第四節(jié)開始判斷是否撞到自己了,因為蛇頭為兩節(jié),第三節(jié)不可能拐過來?/(if(snake.x[il=snake.x[O]&&snake.y[i]==snake.y[O])(GameOver。;/*顯示失敗ッsnake.life=l;break;))if(snake.x[0]<55llsnake.x[0]>595llsnake.y[0]<55llsnake.y⑼>455)/?蛇是否撞到墻壁?/(GameOver。;/*本次游戲結(jié)束?/snake.life=1;/?蛇死?/)if(snake.life==l)/?以上兩種判斷以后,如果蛇死就跳出內(nèi)循環(huán),重新開始?/break;if(snake.x[0]=food.x&&snake.y[0]==food.y)/?吃到食物以后?/(selcolor(〇);/?把畫面上的食物東西去掉*/rectangle(food.x,food.y,food.x+10,food.y-10);snake.x[snake.node]=-20;snake.y[snake.node]=-20;/?新的ー節(jié)先放在看不見的位置,下次循環(huán)就取前ー節(jié)的位置?/snake.node++;/?蛇的身體長ー節(jié)?/food.yes=1ン?畫面上需要出現(xiàn)新的食物?/score+=10;PrScore。;/?輸出新得分?/)setcolor(4);/?畫出蛇?/for(i=0;i<snake.node;i++)rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]-10);delay(gamespeed);setcolor(0);/?用黑色去除蛇的的最后ー節(jié)?/rectangle(snake.x[snake.node-1],snake.yfsnake.node-1],snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);}/*endwhile(!kbhit)*/if(snake.life==l)/?如果蛇死就跳出循環(huán)ワbreak;key二bioskey(〇);/?接收按鍵ラif(key==ESC)/?按ESC鍵退出?/break;elseif(key==UP&&snake.direction!=4)/?判斷是否往相反的方向移動?/snake.direction=3;elseif(key==RIGHT&&snake.direction!=2)snake.direction=1;elseif(key==LEFT&&snake.direction!=1)snake.direction=2;elseif(key==DOWN&&snake.direction!=3)snake.direction=4;}/*endwhile(l)*/)/?游戲結(jié)束?/voidGameOver(void)(cleardevice();PrScore();setcolor(RED);setlextstyle(0,0,4);outtextxy(200,200/GAMEOVER");getch();)/?輸出成績?/voidPrScore(void)(charstr[10];setfillstyle(SOLID_FILL,YELLOW);bar(50,15,220,35);setcolor(6);settextstyle(0,0,2);sprinlf(slr,"score:%d”,score);outtextxy(55,20,str);}/?圖形結(jié)束?/voidClose(void)(getch();closegraph();}#include<dos.h>/*DOS接口函數(shù)*/include<math.h>數(shù)學(xué)函數(shù)的定義?/#include<conio.h>/?屏幕操作函數(shù)?/#include<stdio.h>/*I/O函數(shù)?/#include<stdlib.h>/?庫函數(shù)?/#include<stdarg.h>/?變量長度參數(shù)表*/#include<graphics.h>/?圖形函數(shù)*/#include<string.h>//字符串函數(shù)?/#include<ctype.h>/?字符操作函數(shù)?/#defineUP0x48 /?光標(biāo)上移鍵?/#defineDOWN0x50/?光標(biāo)下移鍵ラ#defineLEFT0x4b/?光標(biāo)左移鍵ッ#defineRIGHT0x4d/?光標(biāo)右移鍵?/#defineENTEROxOd/?回車鍵ッvoid*rar; /?全局變量,保存光標(biāo)圖象*/structpalettetypepalette;/?使用調(diào)色板信息?/intGraphDriver;/?圖形設(shè)備驅(qū)動?/intGraphMode;/?圖形模式值?/intErrorCode; /?錯誤代碼ッintMaxColors; /?可用顏色的最大數(shù)值?/intMaxX,MaxY;/?屏幕的最大分辨率?/doubleAspectRatio;/?屏幕的像素比?/voiddrawboder(void);/?畫邊框函數(shù)?/voidinitialize(void);/?初始化函數(shù)?/voidcomputer(void);/?計算器計算函數(shù)?/voidchangetextstyle(intfont,intdirection,intcharsize);/?改變文本樣式函數(shù)?/voidmwindow(char*header);/?窗U函數(shù)?/intspecialkey(void); /?獲取特殊鍵函數(shù)"/intarrow(); /*設(shè)置箭頭光標(biāo)函數(shù)*//*主函數(shù)?/intmain()(initialize。;/*設(shè)置系統(tǒng)進(jìn)入圖形模式號computerO; /?運行計算器?/closegraph。;/*系統(tǒng)關(guān)閉圖形模式返回文本模式*/retum(O);/*結(jié)束程序?/)設(shè)置系統(tǒng)進(jìn)入圖形模式ッvoidinitialize(void)(intxasp,yasp;/?用于讀x和y方向縱橫比?/GraphDriver=DETECT;/*自動檢測顯示器?/initgraph(&GraphDriver,&GraphMode,,Ht);/?初始化圖形系統(tǒng)ッErrorCode=graphresult(); /?讀初始化結(jié)果?/if(ErrorCode!=grOk)/*如果初始化時出現(xiàn)錯誤ッ(printf("GraphicsSystemError:%s\n'\grapherrormsg(ErrorCode));/*顯示錯誤代碼?/exit(1);/?退出?/)getpalette(&palette); /?讀面板信息?/MaxColors=getmaxcolor()+1;/*讀取顏色的最大值?/MaxX=getmaxx();/*讀屏幕尺寸 ?/MaxY=getmaxy();/?讀屏幕尺寸?/getaspectratio(&xasp,&yasp);/?拷貝縱橫比到變量中*/AspectRatio=(double)xasp/(double)yasp;Z?計算縱橫比值?/}/?計算器函數(shù)*/voidcomputedvoid)(structviewporttypevp;/?定義視ロ類型變量?/intcolor,height,width;intx,y,xO,yO,i,j,v,m,n,act,nag=l;floatnum1=0,num2=0,result;/?操作數(shù)和計算結(jié)果變量?/charcnum[5],str2[20]={M,'},c,temp[20]={;charstr山メ1230.456+-789ツQci%ソ*定義字符串在按鈕圖形上顯示的符號刃mwindow("Calculator”);/?顯示主窗口刃color=7;ド設(shè)置灰顏色值*/getviewsettings(&vp); /*讀取當(dāng)前窗口的大小?/width=(vp.right+1)/10; /*設(shè)置按鈕寬度?/height=(vp.bottom-10)/10;/?設(shè)置按鈕高度キ/x=width/2; /*設(shè)置x的坐標(biāo)值?/y=height/2;/*設(shè)置y的坐標(biāo)值?/setfillstyle(SOLID_FILL,color+3);bar(x+width*2,y,x+7*widlh,y+height);/?畫一個二維矩形條顯示運算數(shù)和結(jié)果?/setcolor(color+3);/*設(shè)置淡綠顏色邊框線rectangle(x+width*2,y,x+7*width,y+height);/?畫一個矩形邊框線?/setcolor(RED);/*設(shè)置顏色為紅色樂/outtextxy(x+3*width,y+height/2J0.”);/?輸出字符串”〇.”*/x=2*width-width/2; /?設(shè)置x的坐標(biāo)值*/y=2*height+height/2;/*設(shè)置y的坐標(biāo)值?/for(j=0;j<4;++j)/?畫按鈕?/(for(i=0;i<5;++i)(setfillstyle(SOLID_FILL,color);setcolor(RED);bar(x,y,x+width,y+height);/?畫一個矩形條?/rectangle(x,y,x+width,y+height);sprintf(str2,'T%c",strl[j*5+i]);/*將字符保存到str2中?/outtextxy(x+(width/2),y+height/2,str2);x=x+width+(width/2);/*移動列坐標(biāo)*/}y+=(height/2)*3;/*移動行坐標(biāo)可x=2*width-width/2; 復(fù)位列坐標(biāo)x0=2*width;yO=3*height;x=xO;y=yO;gotoxy(x,y);/?移動光標(biāo)到x,y位置*/arrow。;/*顯示光標(biāo)?/putimage(x,y,rar,XOR_PUT);m=0;n=0;strcpy(str2,,Ht);/*設(shè)置str2為空串?/while((v=specialkey())!=45)/?當(dāng)壓下Alt+x鍵結(jié)束程序,否則執(zhí)行下面的循環(huán)?/(while((v=specialkey())!=ENTER)/?當(dāng)壓下鍵不是回車時?/(putimage(x,y,rar,XOR_PUT);/?顯示光標(biāo)圖象?/if(v==RIGHT) /?右移箭頭時新位置計算?/if(x>=x0+6*width)/?如果右移,移到尾,則移動到最左邊字符位置*/(x=xO;m=0;}else(x=x+width+width/2;m++;}/?否則,右移到下ー個字符位置率/if(v==LEFT)/*左移箭頭時新位置計算*/if(x<=xO)(x=x0+6*width;m=4;}/?如果移到頭,再左移,則移動到最右邊字符位置*/else(x=x-width-width/2;m-;レ?否則,左移到前ー個字符位置?/if(v==UP)/*上移箭頭時新位置計算*/if(yv=yO)(y=y0+4*height+height/2;n=3;}/?如果移到頭,再上移,則移動到最ド邊字符位置?/elsey=y-height-height/2;n-;}/?否則,移到上邊ー個字符位置*/if(v==DOWN)/?下移箭頭時新位置計算?/if(y>=7*height)(y=yO;n=0;}/?如果移到尾,再下移,則移動到最上邊字符位置*/else(y=y+height+height/2;n++;}/?否則,移到ド邊ー個字符位置?/putimage(x,y,rar,XOR_PUT);/?在新的位置顯示光標(biāo)箭頭?/)c=strl[n*5+m];/*將字符保存到變量c中?/if(isdigit(c)llc==1.')/?判斷是否是數(shù)字或小數(shù)點?/(if(flag==-l)/?如果標(biāo)志為-1,表明為負(fù)數(shù)?/(strcpy(str2,將負(fù)號連接到字符串中?/flag=l;}/?將標(biāo)志值恢復(fù)為ド/sprintf(temp,"%c”,c);/?將字符保存到字符串變量temp中?/strcat(str2,temp);/?將temp中的字符串連接到str2中?/setfillstyle(SOLID_F]LL,color+3);bar(2*width+width/2,height/2,15*width/2,3*height/2);outtextxy(5*width,height,str2);/?顯示字符串?/)if(c=='+')(numl=atof(str2);/?將第一個操作數(shù)轉(zhuǎn)換為浮點數(shù)?/strcpy(str2,"");/?將str2清空?/act=l;/?做計算加法標(biāo)志值?/setfillstyle(SOLID_FILL,color+3);bar(2*width+width/2,height/2,15*width/2,3*height/2);outtextxy(5*width,height,"〇.");/?顯示字符串?/)if(c=='-')if(strcmp(str2,"")==0)/*如果str2為空,說明是負(fù)號,而不是減號?/flag=-l;/?設(shè)置負(fù)數(shù)標(biāo)志?/else(numl=atof(str2);/?將第二個操作數(shù)轉(zhuǎn)換為浮點數(shù)?/strcpy(str2,"");/?將str2清空?/act=2;/?做計算減法標(biāo)志值?/setfillstyle(SOLID_FILL,color+3);bar(2*width+width/2,height/2,15*width/2,3*height/2);/?畫矩形?/outtextxy(5*width,heighL"〇.");/?顯示字符串?/)}if(c='*')(num1=atof(slr2);/?將第二個操作數(shù)轉(zhuǎn)換為浮點數(shù)?/strcpy(str2J");/*將str2清空?/act=3;/?做計算乘法標(biāo)志值?/setfillstyle(SOLID_FILL,color+3);bar(2*width+width/2,height/2,15*width/2,3*height/2);011ttextxy(5*width,heigh、"〇.");/?顯示字符串?/)if(c=71)Inum1二atof(str2);/?將第二個操作數(shù)轉(zhuǎn)換為浮點數(shù)*/strcpy(str2,"”);/*將str2清空?/act=4;/?做計算除法標(biāo)志值*/setfillstyle(SOLID_FILL,color+3);bar(2*width+width/2,height/2,15*width/2,3*height/2);outtextxy(5*width,heighビ。.");蘆顯示字符串?/}if(c==,At)(numl=atof(str2);/*將第二個操作數(shù)轉(zhuǎn)換為浮點數(shù)?/strcpy(str2ド);/?將str2清空?/act=5;/?做計算乘方標(biāo)志值?/setfillstyle(SOLID_FILL,color+3);/*設(shè)置用淡綠色實體填充*/bar(2*width+width/2,height/2,15*width/2,3*height/2);/?畫矩形?/outtextxy(5*width,height"〇.");/?顯示字符串?/)if(c=,%f)(numl二atof(str2);/?將第二個操作數(shù)轉(zhuǎn)換為浮點數(shù)?/strcpy(str2;,H);/*將str2清空?/act=6;/*做計算模運算乘方標(biāo)志值?/setfillslyle(SOLID_FILL,color+3);/*設(shè)置用淡綠色實體填充*/bar(2*width+width/2,height/2,15*width/2,3*height/2);/?畫矩形?/outtextxy(5*width,heighビ‘〇.");/?顯示字符串?/if(c==士)(num2=atof(str2);將第二個操作數(shù)轉(zhuǎn)換為浮點數(shù)*/switch(act)/?根據(jù)運算符號計算?/(casel:result=numl+num2;break;/?做力口法?/case2:resul仁numl-num2;break;/?做減法?/case3:resu1t二numl*num2;break;/?做乘法?/case4:resull=num】/num2;break;/?做除法?/caseS^esugpowSumlRiirr^tbreakJ叫iKx的y次方?/case6:result=fmod(numLnum2);break;)setfinstyle(SOLID_FILL,color+3);/*設(shè)置用淡綠色實體填充?/bar(2*width+width/2,height/2,15*width/2,3*height/2);/?覆蓋結(jié)果區(qū)?/sprintf(temp,”%f”,result);/*將結(jié)果保存到temp中*/011ttextxy(5*width,height,temp);/*顯示結(jié)果?/)if(c='c')(numl=O;/*將兩個操作數(shù)復(fù)位〇,符號標(biāo)志為1*/num2=0;flag=l;strcpy(str2,"”);/*將str2清空?/setfillstyle(SOLID_FILL,color+3);/*設(shè)置用淡綠色實體填充*/bar(2*width+width/2,height/2,15*width/2,3*height/2);/?覆蓋結(jié)果區(qū)*/〇1I加X1X丫(5*V¥1出ん11?181Iゼ0.,,);/?顯示字符串?/)if(c==(Q')exit(O);/?如果選擇了q回車,結(jié)束計算程序?/}putimage(x,y,rar,XOR_PUT);/*在退出之前消去光標(biāo)箭頭?/return;/?返回?/)/?窗口函數(shù)?/voidmwindow(char*header)(intheight;cleardevice(); /*清除圖形屏幕?/setcolor(MaxColors-1); /*設(shè)置當(dāng)前顏色為白色?/setviewport(20,20,MaxX/2,MaxY/2,1);產(chǎn)設(shè)置視口大小?/height=textheight(); /*讀取基本文本大小*/settextstyle(DEFAULT_FONT,HORIZ_DIR,1);/*設(shè)置文本樣式?/settextjustify(CENTER_TEXT,TOP_TEXTル*設(shè)置字符排列方式?/outtextxy(MaxX/4,2,header);/?輸出標(biāo)題?/setviewport(20,20+height+4,MaxX/2+4,MaxY/2+20,I);/?設(shè)置視U大小?/drawboder。;/?畫邊框?/)voiddrawboder(void)/?畫邊框?/(structviewportlypevp;/?定義視ロ類型變量?/setcolor(MaxColors-1); /*設(shè)置當(dāng)前顏色為白色?/setlinestyle(SOLID_LINE,0,NORM_WIDTHル?設(shè)置畫線方式?/getviewsettings(&vpル*將當(dāng)前視ロ信息裝入vp所指的結(jié)構(gòu)中?/rectangle(0,0,vp.right-vp.left,vp.bottom-vp.top);/*畫矩形邊框?/)/?設(shè)計鼠標(biāo)圖形函數(shù)?/intarrow()(intsize;intrawロ={4,4,4,8,6,8,14,16,16,16,8,6,8,4,4,4};/?定義多邊形坐標(biāo)?/setfillstyle(SOLID_FILL,2);/*設(shè)置填充模式?/fillpoly(8,raw); /?畫出一光標(biāo)箭頭*/size=imagesize(4,4,16,16);/*測試圖象大小?/rar=malloc(size);/?分配內(nèi)存區(qū)域?/getimage(4,4,l6,16,rar);/*存放光標(biāo)箭頭圖象?/putimage(4,4,rar,XOR一PUT);/?消去光標(biāo)箭頭圖象*/return0;)/*按鍵函數(shù):7intspecialkey(void)(intkey;while(bioskey(1)==0);/*等待鍵盤輸入?/key=bioskey(0); /?鍵盤輸入?/key=key&Oxff?key&0xff:key?8;//只取特殊鍵的掃描值,其余為〇?/return(key); /*返回鍵值?/)7*3,3.4源程序?/#include"graphics.h"/?圖形系統(tǒng)頭文件?/#defineLEFT0x4b00/?光標(biāo)左鍵值?/#defineRIGHT0x4d00/?光標(biāo)右鍵值*/#defineDOWN0x5000/?光標(biāo)下鍵值?/#defineUP0x4800/?光標(biāo)上鍵值?/#defineESC0x01lb/*ESC鍵值?/#defineENTEROx1cOd/?回車鍵值?/inta網(wǎng)網(wǎng)={〇},key,scorel,score2;/*具體分?jǐn)?shù)以及按鍵與存放棋子的變量?/charplayone[3],playtwo[3];/?兩個人的得分轉(zhuǎn)換成字符串輸出?/voidplaytoplay(void);/?人人對戰(zhàn)函數(shù)?/voidDrawQp(void);/?畫棋盤函數(shù)東/voidSetPlayColor(intx);/*設(shè)置棋子第一次的顏色?/voidMoveColor(intx,inty);/*恢復(fù)原來棋盤狀態(tài)ッintQpChange(intx,inty,intz);/?判斷棋盤的變化?/voidDoScore(void);/*處理分?jǐn)?shù)?/voidPrintScore(intn);/*輸出成績ワvoidplayWin(void);/*輸出勝利者信息?//******主函數(shù)**水******/voidmain(void){intgd=DETECT,gr;initgmph(&gd,&gr,"c:\\tc");/*初始化圖形系統(tǒng)?/DrawQp。;/?畫棋盤?/playtoplay。;/?人人對戰(zhàn)?/getch();closegraph。;/*關(guān)閉圖形系統(tǒng)ッ)voidDrawQp。/?畫棋盤?/(inti,j;scorel二score2=0;/東棋手ー開始得分都為〇?/setbkcolor(BLUE);for(i=100;i<=420;i+=40)(line(100,i,420,i);/?畫水平線ッline(i/00,i,420);/?畫垂直線ッ}setcolor(O);/?取消圓周圍的ー圈東西?/setfiHstyle(SOLID_FILL,15);/?白色實體填充模式?/fineUipse(5OO,2OO/5,15);/*在顯示得分的位置畫棋?/setfmsty】e(SOLID_FILL,8);/?黑色實體填充模式?/filleHipse(5OO,300,15,15);a[3][3]=a[4][4]=W?初始兩個黑棋?/a[3][4]=a[4][3]=2;/?初始兩個白棋?/setfillstyle(SOLID_FILL,WHITE);fillellipse(l20+3*40J20+3*40/515);fillellipse(l20+4*40/20+4*40』5,15);setfillstyle(SOLID_FILL,8);fillellipse(l20+3*40』20+4*40』5』5);fillellipsed20+4*40』20+3*40』5』5);scorel=score2=2;/?有棋后改變分?jǐn)?shù)?/DoScore。;/*輸出開始分?jǐn)?shù)?/voidplaytoplay。/?人人對戰(zhàn)?/(intx,y,t=l,i,j,cc=O;while(1)/?換棋手走棋?/(x=120,y=80;/*每次棋子ー開始出來的坐標(biāo),x為行坐標(biāo),y為列坐標(biāo)?/while。)/*具體ー個棋手走棋的過程*/(PrintScore⑴;/*輸出棋手I的成績?/PrintScore(2);/?輸出棋手2的成績?/SetPlayColor(t);/*t變量是用來判斷棋手所執(zhí)棋子的顏色?/fillellipse(x,y,15,15);key=bioskey(0);/?接收按鍵?/if(key==ESC)/?跳出游戲?/break;elseif(key==ENTER)/*如果按鍵確定就可以跳出循環(huán)?/tif(y!=80&&a[(x-l20)/40][(y-120)/40]!=1&&a[(x-l20)/40][(y-120)/40]!=2)/?如果落子位置沒有棋子?/(if(t%2=l)/?如果是棋手I移動?/a[(x-l20)/40][(y-120)/40]=1;else/?否則棋手2移動?/a[(x-l20)/40][(y-120)/40]=2;if(!QpChange(x,y,t))/?落子后判斷棋盤的變化?/{a[(x-120)/40][(y-120)/40]=〇;/?恢復(fù)空格狀態(tài)?/cc++;/?開始統(tǒng)計嘗試次數(shù)?/if(cc>=64-score1-score2)/*如果嘗試超過空格數(shù)則停步?/{MoveColor(x,y);fillellipse(x,y,15,15);break;)elsecontinue;/*如果按鍵無效*/IDoScore。;/?分?jǐn)?shù)的改變?/break;/?棋盤變化了,則輪對方走棋?/)else/?已經(jīng)有棋子就繼續(xù)按鍵?/continue;else/?四個方向按鍵的判斷?/if(key==LEFT&&x>120)/?左方向鍵?/(MoveColor(x,y);fillellipse(x,y,15,15);SetPlayColor(t);x-=40;fillellipse(x,y,15,15);}elseif(keyニニRIGHT&&xv400&&y>80)/?右方向鍵?/{MoveColor(x,y);fillellipse(x,y,15,15);SetPlayColor(t);x+=40;fillellipse(x,y,15,15);)elseif(key=UP&&y>120)/?上方向鍵ッ(MoveColor(x,y);fillellipse(x,y,15,15);SetPlayColor(t);y-=40;fillellipse(x,y,15,15);}elseif(keyニニDOWN&&yv400)/?下方向鍵ワ(MoveColor(x,y);fillellipse(x,y,15,15);SetPlayColor(t);y+=40;fillellipse(x,y,15,15);))if(keyニニESC)/?結(jié)束游戲?/break;if((scorel+score2)ニニ64llscorelニニ0llscore2ニニ〇)/*格子已經(jīng)占滿或一方棋子為〇判斷勝負(fù)?/playWin。;/?輸出最后結(jié)果?/break;}t=t%2+1;/?一方走后,改變棋子顏色即輪對方走?/cc=O;/?計數(shù)值恢復(fù)為〇?/}/*endwhile*/)voidSetPlayColor(intt)/?設(shè)置棋子顏色?/(if(t%2==l)86擊1風(fēng)丫儂50ロ0_尸!LL15);/?白色?/elsesetfinstyle(SOLID_FILL,8);/?灰色?/IvoidMoveColor(intx,inty)/?走了一步后恢変原來格子的狀態(tài)?/(if(y<100)/?如果是從起點出發(fā)就恢復(fù)藍(lán)色?/setfillstyle(SOLID_HLL,BLUE);else/?其他情況如果是1就恢復(fù)白色棋子,2恢復(fù)黑色棋子,或恢復(fù)藍(lán)色棋盤?/switch(a[(x-l20)/40][(y-120)/40])(setfillstyle(SOLID_FILL,15);break;/?白色?/setfiHstyle(SOLID一FlLL,8);break;/?黑色?/default:setfillstyle(SOLID_FILL,BLUE);/?藍(lán)色?/intQpChange(intx,inty,intt)/?判斷棋盤的變化?/(inti,j,k,kk,ii,jj,yes;yes=O;i=(x-120)/40;/?計算數(shù)組元素的行下標(biāo)?/j=(y-120)/40;/?計算數(shù)組元素的列下標(biāo)?/SelPlayColor⑴;/*設(shè)置棋子變化的顏色?//?開始往8個方向判斷變化?/if(j<6)/?往右邊?/(for(k=j+1;k<8;k++)if(a[i][k]=a[i皿呵i][k]=0)/?遇到自己的棋子或空格結(jié)束?/break;if(a[i][kl!=0&&k<8)for(kk-j+1;kkvk&&kv8;kk++)/*判斷オi邊?/(a[i[[kk]=a[i][jl;/?改變棋子顏色?/fillellipsed20+i*40,120+kk*40,15,15);)if(kk!=j+D/?條件成立則有棋子改變過顏色?/yes=l;if(j>l)/?判斷左邊?/(for(k=j-l;k>=O;k—)if(a[i][k]==a[i][j]ll!a[i][k])break;if(a[i][k]!=0&&k>=0)(for(kk=j-1;kk>k&&k>=O;kk-){a[i][kk]=a[i]|j];fillellipsed20+i*40,120+kk*40,15,15);)if(kk!=j-l)yes=1;))if(i<6)/?判斷下邊?/(for(k=i+l;k<8;k++)if(a[k][j]==a[i][j]ll!a[k][j])break;if(a[k][j]!=0&&k<8)(for(kk=i+l;kk<k&&k<8;kk++)(a[kk]U]=a[i]U];fillellipsed20+kk*40,120+j*40/5,15);)if(kk!=i+l)yes=1;)1if(i>l)/?判斷上邊?/for(k=i-1;k>=O;k—)if(a[k]U]=a[i]U]ll!a[k]U])break;if(a[k]|j]!=0&&k>=0)(for(kk=i-l;kk>k&&k>=O;kk—)(a[kk]U]=a[i]U];fillellipse(l20+kk*40,l20+j*40,15,15);)if(kk!=i-l)yes=1;if(i>l&&jv6)/?右上?/(for(k=i-l,kk=j+1;k>=0&&kk<8;k-,kk++)if(a[k][kk]==a[i][j]ll!a[k][kk])break;if(a[k][kk]&&k>=0&&kk<8)(for(ii=i-l,jj=j+1;ii>k&&k>=0;ii—,jj++)(a[ii]Qj]=a[i][j];fillellipse(l20+ii*40,l20+jj*40,15,15);)if(ii!=i-l)yes=l;)}if(i<6&&j>l)/?左下?/(for(k=i+1,kk=j-1;k<8&&kk>=0;k++,kk—)if(a[k][kk]==a[i]|j]ll!a[k][kk])break;if(a[kl[kk]!=0&&k<8&&kk>=0)(for(ii=i+1,jj=j-1;ii<k&&k<8;ii++,jj—)(a[ii]Qj]=a[i][j];fillellipse(l20+ii*40,120+jj*40,l5,15);if(ii!=i+l)yes=l;if(i>l&&j>l)/?左上?/(for(k=i-l,kk=j-l;k>=O&&kk>=O;k-,kk-)if(a[k][kk]==a[i][j]ll!a[k][kk])break;if(a[k][kk]!=0&&k>=0&&kk>=0)(for(ii=i-1,jj=j-1;ii>k&&k>=O;ii—,jj—)(a[ii]|jj]=a[i][j];fillellipse(l20+ii*40,l20+jj*40,15,15);}if(ii!=i-l)yes=l;if(i<6&&j<6)/?右下?/(for(k=i+1,kk=j+1;kkv8&&kkv8;k++,kk++)if(a[k][kk]==a[i][j]ll!a[k][kk])break;if(a[k][kk]!=0&&kk<8&&k<8)(for(ii=i+1,jj=j+l;ii<k&&k<8;ii++jj++){a[ii]Qj]=a[i][j];fillellipse(l20+ii*40,l20+jj*40J5,15);}if(ii!=i+l)yes=l;returnyes;/?返回是否改變過棋子顏色的標(biāo)記*/)voidDoScore。/?處理分?jǐn)?shù)?/(inti,j;score1=score2=0;/?重:新開始計分?jǐn)?shù)?/for(i=0;i<8;i++)forO=0;j<8;j++)if(a[i][j]==l)/?分別統(tǒng)計兩個人的分?jǐn)?shù)?/score1++;elseif(a[i]U]=2)score2++;}voidPrintScore(intplaynum)/?輸出成績?/(if(playnum==1)/*清除以前的成績可(setfillstyle(SOLID_FILL,BLUE);bar(550,100,640,400);Isetcolor(RED);settextstyle(〇。,4);/*設(shè)置文本輸出樣式?/if(playnum==1)グ判斷輸出哪個棋手的分,在不同的位置輸出?/(sprintf(playone,"%dM,score1);outtextxy(550,200,playone);)else(sprintf(playtwo,"%d'\score2);outtextxy(550,300,playtwo);)setcolor(O);)voidplayWin()/?輸出最后的勝利者結(jié)果*/(settextstyle(0,0,4);setcolor(12);if(score2>scorel)/?開始判斷最后的結(jié)果?/outtextxy(100,50/blackwin!1');elseif(score2<score1)outtextxy(100,50,"whitewin!");elseouttextxy(60,50,"youallwin!");}/*4.3.3源程序?/#include<graphics.h>#include<stdlib.h>#include<stdio.h>#include<conio.h>#include<dos.h>#defineN2〇/?迷宮的大小,可改變*/int01dm叩遞歸用的數(shù)組,用全局變量節(jié)約時間?/intyes=O;/*yes是判斷是否找到路的標(biāo)志,1找到,〇沒找到?/intway[100][21,wayn=0;/*way數(shù)組是顯示路線用的,wayn是統(tǒng)計走了幾個格子?/voidInit(void);/?圖形初始化*/voidClose(void);/?圖形關(guān)閉voidDrawPeople(int*xjnt*y,intn);/?畫人工探索物圖?/voidPeopleFind(int(*x)[N]);/*人工探索?/voidWayCopy(int(*x)[NJ,int(*y)[NJ);/?為了8個方向的遞歸,把舊迷宮圖拷貝給新數(shù)組?/intFindWay(inl(*x)[N],imi,inlj);/*自動探索函數(shù)?/voidMapRand(int(*x)[N]);/?隨機生成迷宮函數(shù)?/voidPrMap(int(*x)[N]);/?輸出迷宮圖函數(shù)?/voidResult(void);/?輸出結(jié)果處理*/voidFind(void);/?成功處理*/voidNotFind(void);/?失敗處理?/voidmain(void)/?主函數(shù)?/(intmap[N][N];/?迷宮數(shù)組?/charch;clrscr();printf(H\nPleaseselecthand(l)elseauto'n");/?選擇探索方式?/scanf(n%c'\&ch);Init();乃初始化?/MapRand(map);/?生成迷宮?/PrMap(imp);/*顯示迷宮圖ワif(ch=T)PeopleFind(map);/?人工探索?/elseFindWay(map,l,l);/*系統(tǒng)自動從下標(biāo)1,I的地方開始探索?/Result。;/?輸出結(jié)果?/Close。;)voidInit(void)/?圖形初始化*/(intgd=DETECT,gm;initgraph(&gd,&gm,uc:\\tcM);)voidDrawPeople(int*x,int*y,intn)/?畫人工控制圖ッ{/?如果將以下兩句注釋掉,則顯示人工走過的路徑,*/setfillstyle(SOLID_FILL,WHITE);/*設(shè)置白色實體填充樣式?/bar(100+(*y)*15-6,50+(*x)*15-6,100+(*y)*15+6,5O+(*x)*15+6);/*恢復(fù)原通路?/switch(n)/?判斷x,y的變化,8個方向的變化?/((*x)—;break;/?上?/(*x)—;(*y)++;break;/?右上?/(*y)++;break;/?右?/(*x)++;(*y)++;break;/?右下?/(*x)++;break;/*下?/(*x)++;(*y)-;break;/?左下?/(*y)—;break;/?左*/(*x)一;(*y)一;break;/?左上?/)setmisly】e(SOLID_FILL,RED);/?新位置顯示探索物?/bar(100+(*y)*15650+(*x)*15-6,100+(*y)*15+6,50+(*x)*15+6);)voidPeopleFind(int(求map)|N」)/?人工手動查找?/(intx,y;charc=0;/?接收按鍵的變量*/x=y=l;/*人工查找的初始位置?/setcolor(l1);line(500,200,550,200);oultextxy(570,197Jd)line(500,200,450,200);outtextxy(430,197;'an);line(500,200,500,150);outtextxy(497,130,,'wn);line(500,200,500,250);outtextxy(497,270,Mxu);line(500,200,450,150);outtextxy(445,l30Jq");line(500,200,550,150);outtextxy(550,130Je");line(500,200,450,250);outtextxy(445,270,,'zn);line(500,200,550,250);oullextxy(550,270Jc");/*以上是畫8個方向的控制介紹ッsetcolor(YELLOW);outtextxy(420,290,"Press'Enter1toend");/?壓回車鍵結(jié)束?/setfillstyle(SOLID_FILL,RED);bar(100+y*15-6,50+x*15-6/00+y*15+6,50+x*15+6);/*入口位置顯示*/while(c!=13)/?如果按下的不是回車鍵ワ{c二getch();/?接收字符后開始各個方向的探索?/if(c=lw'&&map[x-1][y]!=1)DrawPeople(&x,&y,1);/*_t*/elseif(c=='e'&&map[x-1][y+11!=1)DrawPeople(&x,&y,2);/?右上?/elseif(c==d'&&map[x][y+1]!=1)DrawPeople(&x,&y,3);/?右?/elseif(c=='c1&&map[x+l][y+1]!=1)DrawPeople(&x,&y,4);/?右下?/elseif(c==,x'&&map[x+l][y]!=l)DrawPeople(&x,&y,5);/?下?/elseif(c=='zT&&map[x+1][y-1]!=1)DrawPeople(&x,&y,6);/?左下?/elseif(c=='a'&&map[x][y-l]!=1)DrawPeople(&x,&y,7);/?左?/elseif(c==,q,&&map[x-1][y-1]!=1)DrawPeople(&x,&y,8);/?左上?/)setfillstyle(SOLID_FILL,WHITE);/?消去紅色探索物,恢復(fù)原迷宮圖ラbar(l(X)+y*l5-6,50+x*15-6,100+y*15+6,50+x*15+6);if(x==N-2&&y=N-2)/?人工控制找成功的話?/yes=I;/*如果成功標(biāo)志為1*/)voidWayCopy(int(*oldmap)[Nl,int(*map)[N])/*拷貝迷宮數(shù)組?/(inti,j;for(i=0;i<N;i++)for(j=0;j<N;j++)oldmap[i][j]=map[i][j];)intFindWay(int(*map)[N],inti,intj)/?遞歸找路?/(if(i==N-2&&j=;N-2)/?走到出口?/(yes=l;/?標(biāo)志為1,表示成功?/return;)走過的地方變?yōu)?*/WayCopy(oldmap,map);/?拷貝迷宮圖*/if(oldmap[i+l]|j+l]==0&&!yes)/?判斷右下方是否可走*/(FindWay(oldmap,i+if(yes)/*如果到達(dá)出口了,再把值賦給顯示路線的way數(shù)組,也正是這個原因,所以具體路線是從最后開始保存*/way[wayn][O]=i;way[wayn++][1]=j;return;)IWayCopy(oldmap,map);if(oldmap[i+l][j]==0&&!yes)/?判斷ド方是否可以走,如果標(biāo)志yes已經(jīng)是1也不用找下去了?/{FindWay(oldmap,i+1j);if(yes)(way[wayn][O]=i;way[wayn++][l]=j;return;))WayCopy(oldmap,map);if(ok!map[i][j+l]==0&&!yes)/?判斷右方是否可以走*/{FindWay(oldmap,i,j+1);if(yes)(way[wayn][O]=i;way[wayn++J[l]=j;return;}}WayCopy(oldmap,map);if(oldmap[i?l皿==0&&!yes)/?判斷上方是否可以走?/(FindWay(oldmap,i-1,j);if(yes)(way[wayn][O]=i;way[wayn++][1]=j;return;})WayCopy(oldmap,map);if(oldmap[i-l][j+l]==0&&!yes)/?判斷右上方是否可以走*/FindWay(oidmap,i-1,j+1);if(yes)(way[wayn][O]=i;way[wayn++][l]=j;return;}}WayCopy(oldmap,map);if(o1dmap[i+1心11=ニ。&&桃§)/?判斷左下方是否可以走?/FindWay(oldmap,i+if(yes)(way[wayn][O]=i;way[wayn++][l]=j;return;))WayCopy(oldmap,map);if(oldmap[i][j?l]==0&&!yes)/?判斷左方是否可以走*/{FindWay(oldmap,ij-l);if(yes)(way[wayn][O]=i;way[wayn++][lJ=j;return;}}WayCopy(oldmap,map);if(oldmap[i?l][j-l]==0&&!yes)/?判斷左上方是否可以走*/(FindWay(oldmap,i-1J-1);if(yes)(way[wayn][O]=i;way[wayn++][1]=j;return;})return;voidMapRand(int(*map)[N])/?開始的隨機迷宮圖?/?nti,j;cleardevice。;/?淸屏?/randomize。;/?隨機數(shù)發(fā)生器?/for(i=0;i<N;i++)(for(j=0;j<N;j++)(if(i=Olli==N-lllj==0llj=N-l)/?最外面一圈為墻壁?/map[i]|j]=l;elseif(i==1&&j==1lli==N-2&&j==N-2)/?出發(fā)點與終點表示為可走的?/map[i][j]=O;elsemap[i][j]=random(2);/?其它的隨機生成〇或1*/voidPrMap(int(*map)[N])/?輸出迷宮圖?/(inti,j;for(i=0;i<N;i++)for(j=0;j<N;j++)if(map[i]|j]==O)(setfillstyle(SOLID一FILL.WHITE);/?白色為可走的路?/bar(l00+j*l5-6,50+i*15-6,100+j*15+6,50+i*15+6);)else(selfillstyle(SOLID-FILL,BLUE);/?藍(lán)色為墻壁?/bar(l00+j*15-6,50+i*15-6,100+j*l5+6,50+i*15+6);)}voidFind(void)/?找到通路?/(inti;setfillstyle(SOLID一FILL,RED);/?紅色輸出走的具體路線?/wayn—;for(i=wayn;i>=0;i—)bar(l00+way[i][l]*l5-6,50+way[i][0]*15-6,100+way[i][l]*l5+6,50+way[i][0]*15+6);sleep(1);/?控制顯示時間?/bar(l00+(N-2)*15-6,50+(N-2)*15-6,100+(N?2)*15+6,50+(N-2)*15+6);/?在目標(biāo)點標(biāo)紅色?/setco!or(GREEN);settextstyle(0,0,2);/*設(shè)置字體大小*/outtextxy(130,400,"Findaway!*');)voidNotFind(void)/?沒找到通路?/(setcolor(GREEN);settextstyle(0,0,2);/*設(shè)置字體大小?/outtextxy(130,400,"Notfindaway!");)voidResult(void)/*結(jié)果處理*/(if(yes)/?如果找到?/Find();else/?沒找到路?/NotFindO;getch();)voidClose(void)/?圖形關(guān)閉?/(closegraph();}/*5.3.4源程序?/#include<graphics.h>#include<stdlib.h>#include<dos.h>#defineLEFTPRESSOxffOl#defineLEFTCLICKOxfflO#defineLEFTDRAG0xffl9#defineMOUSEMOVEOxffO8struct(intnum;/?格子當(dāng)前處于什么狀態(tài),1有雷,〇已經(jīng)顯示過數(shù)字或者空白格子?/introundnum;/?統(tǒng)計格子周圍有多少雷?/intflag;/?右鍵按下顯示紅旗的標(biāo)志,〇沒有紅旗標(biāo)志』有紅旗標(biāo)志?/}Mine[10][10];intgameAGAIN=0;/*是否重來的變量?/intgamePLAY=0;/*是否是第一次玩游戲的標(biāo)志?/intmineNUM;/?統(tǒng)計處理過的格子數(shù)?/charrandmineNUM[3];/?顯示數(shù)字的字符串?/intKeystate;intMouseExist;intMouseButton;iniMouseX;intMouseY;voidInit(void);/?圖形驅(qū)動?/voidMouseOn(void);/*鼠標(biāo)光標(biāo)顯示ッvoidMouseOff(void);/*鼠標(biāo)光標(biāo)隱藏?/voidMouseSetXY(intjnt);/*設(shè)置當(dāng)前位置?/intLeftPress(void);/*左鍵按ド*/intRightPress(void);/?鼠標(biāo)右鍵按下?/voidMouseGetXY(void);/?得到當(dāng)前位置*/voidControl(void);/?游戲開始,重新,關(guān)閉?/voidGameBegain(void)ソ?游戲開始畫面?/voidDrawSmile(void);/?畫笑臉?/voidDrawRedflag(int,int);/?顯示紅旗?/voidDrawEmpty(int,int,int,int);/?兩種空格子的顯示?/voidGameOver(void);/*游戲結(jié)束?/voidGameWin(void);/?顯示勝利?/intMineStatistics(int,int);/*統(tǒng)計每個格子周圍的雷數(shù)?/intShowWhite(intjnt);/?顯示無雷區(qū)的空白部分?/voidGamePlay(void);/?游戲過程?/voidClose(void);/?圖形關(guān)閉ッvoidmain(void)(Init();Control();Close();)voidInit(void)/?圖形開始?/(intgd=DETECT,gm;initgraph(&gd,&gm,uc:\\tcM);)voidClose(void)/?圖形關(guān)閉?/(closegraph();)voidMouseOn(void)/?鼠標(biāo)光標(biāo)顯示*/(_AX=0x01;geninterrupt(0x33);)voidMouseOff(void)/?鼠標(biāo)光標(biāo)隱藏*/_AX=0x02;geninterrupt(0x33);)voidMouseSetXY(intx,inty)/?設(shè)置當(dāng)前位置?/(_CX=x;_DX=y;_AX=0x04;geninterrupt(0x33);)intLeflPrcss(void)/?鼠標(biāo)左鍵按下?/(_AX=0x03;geninternjpt(0x33);relum(_BX&l);)intRightPress(void)/?鼠標(biāo)右鍵按下?/(_AX=0x03;geninterrupt(0x33);retum(_BX&2);)voidMouseGetXY(void)/?得到當(dāng)前位置?/{_AX=0x03;geninterrupt(0x33);MouseX=_CX;MouseY=_DX;}voidControlvoid)/?游戲開始,重新,關(guān)閉ッ(intgameFLAG=l;/*游戲失敗后判斷是否重新開始的標(biāo)志?/while(l)(if(gameFLAG)/?游戲失敗后沒判斷出重新開始或者退出游戲的話就繼續(xù)判斷*/(GamcBegain。;/*游戲初始畫面?/GamePlayO;/*具體游戲*/if(gameAGAIN==l)/*游戲中重新開始?/(gameAGAIN=O;continue;MouseOn();gameFLAG=O;if(LeftPress())/?判斷是否重新開始?/(MouseGetXYO;if(MouseX>280&&MouseX<300&&MouseY>65&&MouseY<85)(gameFLAG=1;continue;}Iif(kbhit())/?判斷是否按鍵退出?/break;}MouseOffO;}voidDrawSmile(void)/?畫笑臉?/(setfillstyle(SOLID_FILL,YELLOW);fillellipse(290,75,10,10);setcolor(YELLOW);setfillstyle(SOLID_FILL,BLACK)プ眼睛?/fillellipse(285,75,2,2);fillellipse(295,75,2,2);setcolor(BLACK);/?嘴巴?/bar(287,80,293,81);)voidDrawRedflag(inti,intj)/?顯示紅旗?/(setcolor(7);setfillstyle(SOLID_FILL,RED);bar(198+j*20,95+i*20,198+j*20+5,95+i*20+5);setcolor(BLACK);line(l98+j*20,95+i*20,198+j*20,95+i*20+10);)voidDrawEmpty(inti,intj,intmode,intcolor)/?兩種空格子的顯示?/(setcolor(color);setfillstyle(SOLID_FILL,color);if(mode==0)/?沒有單擊過的大格子?/bar(200+j*20-8,l00+i*20-8,200+j*20+8,100+i*20+8);elseif(mode==l)/?單擊過后顯示空白的小格子?/bar(200+j*20-7,100+i*20-7,200+j*20+7,100+i*20+7);voidGameBegain(void)/?游戲開始畫面?/(inti,j;cleardevice();if(gamePLAY!=1)(MouseSetXY(290,70);/?鼠標(biāo)ー開始的位置,并作為它的初始坐標(biāo)?/MouseX=290;MouseY=70;)gamePLAY=1;/*下次按重新開始的話鼠標(biāo)不重新初始化*/mineNUM=0;setfillstyle(SOLID_FILLJ);bar(190,60,390,290);for(i=0;i<!〇;i++)/?畫格子?/for(j=0;j<10;j++)DrawEmpty(i,j,0,8);setcolor(7);DrawSmile();/?畫臉?/randomize();for(i=0;i<10;i++)/*100個格子隨機賦值有沒有地雷*/for(j=0;j<10;j++)(Mine[i][j].num=random(8);/*如果隨機數(shù)的結(jié)果是1表示這個格子有地雷?/if(Mine[i][j].num==l)mineNUM++;/*現(xiàn)有雷數(shù)加1*/elseMine[i]|jJ.num=2;Mine[i皿.flag=O;/?表示沒紅旗標(biāo)志?/}sprintf(randniineNUM,"%d”,mineNUM);/*顯示這次總共有多少雷數(shù)?/setcolor(1);settextstyle(0,0,2);outtextxy(210,70,randmineNUM);mineNUM=100?mineNUM;/*變量取空白格數(shù)量?/MouseOnQ;)voidGameOver(void)/?游戲結(jié)束畫面?/(inti,j;setcolor(O);for(i=0;i<10;i++)for(j=0;j<10;j++)if(Mine[i皿,num==l)/*顯示所有的地雷?/DrawEmpiy(i,j,〇,RED);setfiHstyle(SOLID_FILL,BLACK);fillellipse(200+j*20,100+i*20,7,7);))voidGameWin(void)/?顯示勝利?/(setcolor(l1);settextstyle(〇,0,2);outtextxy(230,30,nYOUWIN!");)intMineStatistics(inti,intj)/?統(tǒng)計每個格子周圍的雷數(shù)?/(intnNUM=0;if(i==O&&j==O)/?左上角格子的統(tǒng)計ッ(if(Mine[0][l].num==l)nNUM++;if(Mine[l][0],num==l)nNUM++;if(Mine[l][l].num==l)nNUM++;)elseif(i==0&&j=9)/*右上角格子的統(tǒng)計號(if(Mine[0][8],num==1)nNUM++;if(Mine[1][9].num==1)nNUM++;if(Mine[1J[8].num==1)nNUM++;)elseif(i==9&&j=0)/?左下角格子的統(tǒng)計ワ(if(Mine[8][0].num==1)nNUM++;if(Mine[9][l].num=1)nNUM++;if(Mine[8][1J.num==l)nNUM++;elseif(i=9&&j==9)/*右下角格子的統(tǒng)計ラ(if(Mine[9][8].num==l)nNUM++;if(Mine[8][9].num==l)nNUM++;if(Mine[8][8].num==l)nNUM++;}else 左邊第一列格子的統(tǒng)計ッ{if(Mine[i][j4-l].num==l)nNUM++;if(Mine[i+l][j].num==l)nNUM++;if(Mine[i-l][j].num==l)nNUM++;if(Mine[i-1][j+1].num==1)nNUM++;if(Mine[i+l][j+l].num==l)nNUM++;)elseif(j==9)/?右邊第?列格子的統(tǒng)計?/(if(Mine[i]|j-l].num==1)nNUM++;if(Mine[i+1][j].num==1)nNUM++;if(Mine[i-1][j].num==1)nNUM++;if(Mine[i-l][j-l].num=l)nNUM++;if(Mine[i+l][j-lJ.num==l)nNUM++;)elseif(i==O)/*第一行

溫馨提示

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

評論

0/150

提交評論