C语言十大经典实例编程 下载本文

} if(kk!=j-1) yes=1; } }

if(i<6)判断下边 {

for(k=i+1;k<8;k++) if(a[k][j]==a[i][j]||!a[k][j]) break;

if(a[k][j]!=0&&k<8) { for(kk=i+1;kk

if(i>1)判断上边 {

for(k=i-1;k>=0;k--) if(a[k][j]==a[i][j]||!a[k][j]) break;

if(a[k][j]!=0&&k>=0) { for(kk=i-1;kk>k&&k>=0;kk--) { a[kk][j]=a[i][j]; fillellipse(120+kk40,120+j40,15,15); } if(kk!=i-1) yes=1; } }

if(i>1&&j<6)右上 {

for(k=i-1,kk=j+1;k>=0&&kk<8;k--,kk++) if(a[k][kk]==a[i][j]||!a[k][kk]) break;

if(a[k][kk]&&k>=0&&kk<8) {

for(ii=i-1,jj=j+1;ii>k&&k>=0;ii--,jj++) { a[ii][jj]=a[i][j]; fillellipse(120+ii40,120+jj40,15,15); }

if(ii!=i-1) yes=1; } }

if(i<6&&j>1)左下 {

for(k=i+1,kk=j-1;k<8&&kk>=0;k++,kk--) if(a[k][kk]==a[i][j]||!a[k][kk]) break;

if(a[k][kk]!=0&&k<8&&kk>=0) { for(ii=i+1,jj=j-1;ii

if(ii!=i+1) yes=1; } }

if(i>1&&j>1)左上 {

for(k=i-1,kk=j-1;k>=0&&kk>=0;k--,kk--) if(a[k][kk]==a[i][j]||!a[k][kk]) break;

if(a[k][kk]!=0&&k>=0&&kk>=0) { for(ii=i-1,jj=j-1;ii>k&&k>=0;ii--,jj--) { a[ii][jj]=a[i][j]; fillellipse(120+ii40,120+jj40,15,15); }

if(ii!=i-1) yes=1; } }

if(i<6&&j<6) 右下 {

for(k=i+1,kk=j+1;kk<8&&kk<8;k++,kk++)

if(a[k][kk]==a[i][j]||!a[k][kk]) break;

if(a[k][kk]!=0&&kk<8&&k<8) { for(ii=i+1,jj=j+1;ii

if(ii!=i+1) yes=1; } }

return yes;返回是否改变过棋子颜色的标记 }

void DoScore()处理分数 {

int i,j;

score1=score2=0;重新开始计分数 for(i=0;i<8;i++) for(j=0;j<8;j++) if(a[i][j]==1)分别统计两个人的分数 score1++; else if(a[i][j]==2) score2++; }

void PrintScore(int playnum)输出成绩 {

if(playnum==1)清除以前的成绩 {

setfillstyle(SOLID_FILL,BLUE); bar(550,100,640,400); }

setcolor(RED);

settextstyle(0,0,4);设置文本输出样式

if(playnum==1)判断输出哪个棋手的分,在不同的位置输出 {

sprintf(playone,\ outtextxy(550,200,playone); } else {

sprintf(playtwo,\

outtextxy(550,300,playtwo); }

setcolor(0); }

void playWin()输出最后的胜利者结果 {

settextstyle(0,0,4); setcolor(12);

if(score2>score1)开始判断最后的结果 outtextxy(100,50,\ else

if(score2

案例四 迷宫问题 4.3.3源程序

#include #include #include #include #include

#define N 20迷宫的大小,可改变

int oldmap[N][N];递归用的数组,用全局变量节约时间 int yes=0;yes是判断是否找到路的标志,1找到,0没找到

int way[100][2],wayn=0;way数组是显示路线用的,wayn是统计走了几个格子 void Init(void);图形初始化 void Close(void);图形关闭

void DrawPeople(int x,int y,int n);画人工探索物图 void PeopleFind(int (x)[N]);人工探索

void WayCopy(int (x)[N],int (y)[N]);为了8个方向的递归,把旧迷宫图拷贝给新数组

int FindWay(int (x)[N],int i,int j);自动探索函数 void MapRand(int (x)[N]);随机生成迷宫函数 void PrMap(int (x)[N]);输出迷宫图函数 void Result(void);输出结果处理 void Find(void);成功处理 void NotFind(void);失败处理 void main(void)主函数 {

int map[N][N]; 迷宫数组 char ch;