分享
 
 
 

我的五子棋源程序,还不够厉害,谁能继续完善

王朝vc·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

/* By ZhouDahua. 1999,3,30 */

/*TC2.0*/

#include <stdio.h>

#include <graphics.h>

#include <process.h>

#include <stdlib.h>

#include <dos.h>

#include <ctype.h>

#define DOWN 80

#define UP 72

#define F1 59

#define LEFT 75

#define RIGHT 77

#define Q 16

#define E 18

#define X 45

#define R 19

#define ESC 1

#define ENTER 28

int judge(int);

int getkey();

void decide();

void count(int,int,int);

void sd();

int tx,ty;

int a[16][16]={0}, b[16][16]={0}; /* 全局变量 */

void main()

{

int x,y,m,n,h=0,s=0,done; int hx=150,sy=80;

int ch;

void *buf_curse;

unsigned size;

int graphdriver=DETECT;

int graphmode;

registerbgidriver(EGAVGA_driver);

initgraph(&graphdriver,&graphmode," ");

begin:sd();

for(x=0;x<16;x++)

for(y=0;y<16;y++) a[x][y]=0;

setfillstyle(1,13);

bar(0,0,12,12);

size=imagesize(0,0,12,12);

buf_curse=malloc(size);

getimage(0,0,12,12,buf_curse); /* save imag 保存图象 */

putimage(0,0,buf_curse,XOR_PUT);

tx=1000,ty=1000;

cleardevice();

setcolor(WHITE);

h=0;s=0;hx=154;sy=84;

setfillstyle(1,CYAN);

bar(0,0,639,510);

setfillstyle(1,BLACK);

bar(157,87,483,413);

/* setfillstyle(1,DARKGRAY);

bar(157,87,483,413);

*/ setfillstyle(1,4);/*BROWN); */

bar(147,77,473,403);

setfillstyle(1,LIGHTGRAY);

bar(151,81,469,399);

for(x=160;x<=460;x+=20)

line(x,90,x,390);

for(y=90;y<=390;y+=20)

line(160,y,460,y); /* SETUP FACE */

putimage(154,84,buf_curse,XOR_PUT); /* xor option*/

setfillstyle(1,13);

bar(150,420,470,460); /* */

setfillstyle(1,BLACK);

bar(153,460,475,467);

bar(470,424,475,467);

setfillstyle(1,13);

setcolor(YELLOW);

outtextxy(160,430,"WZQ program By ZhouDahua 1999-5-1.");

outtextxy(160,448,"V1.3A");

setcolor(10);

outtextxy(500,100,"R to restar ");

outtextxy(500,120,"Esc to quit");

outtextxy(500,140,"Q or Enter to put");

outtextxy(500,160,"Enter to put down");

/* outtextxy(50,110,"Please:"); */

wait: do{ done=1;

ch=getkey();

switch(ch)

{ case 76 :

case DOWN:

{putimage(hx,sy,buf_curse,XOR_PUT);

if(s==15) s=0;

else s+=1;

sy=84+s*20;

putimage(hx,sy,buf_curse,XOR_PUT);

break;

}

case UP:

{putimage(hx,sy,buf_curse,XOR_PUT);

if(s==0) s=15;

else s-=1;

sy=84+s*20;

putimage(hx,sy,buf_curse,XOR_PUT);

break;

}

case LEFT:

{putimage(hx,sy,buf_curse,XOR_PUT);

if(h==0) h=15;

else h-=1;

hx=154+h*20;

putimage(hx,sy,buf_curse,XOR_PUT);

break;

}

case RIGHT:

{putimage(hx,sy,buf_curse,XOR_PUT);

if(h==15) h=0;

else h+=1;

hx=154+h*20;

putimage(hx,sy,buf_curse,XOR_PUT);

break;}

case R:

{putimage(hx,sy,buf_curse,XOR_PUT);

setcolor(WHITE); goto begin; }

case X:

case E:

case ESC: goto end;

case Q:

case ENTER: done=0;break;

}

} while(done);

if(a[h][s]!=0) { bar(150,420,470,460);setcolor(10);

outtextxy(160,430,"You do not put it here!");sd(); goto wait;}

a[h][s]=1;

for(x=6;x>0;x--)

{ setcolor(13);

circle(160+h*20,90+s*20,x);}

if(judge(1)) { bar(150,420,470,460);setcolor(YELLOW);

outtextxy(160,430,"Wokao You Win ! ");

outtextxy(160,445,"Press R to again"); sd();

aa: if(getch()!='r') {sd();goto aa;}

putimage(hx,sy,buf_curse,XOR_PUT); setcolor(WHITE);

goto begin; }

decide(a);

if(judge(2)) { bar(150,420,470,460);setcolor(YELLOW);

outtextxy(160,430,"Sorry, You Fail ");

outtextxy(160,445,"Press R to again "); sd();

bb: if(getch()!='r') {sd();goto bb;}

putimage(hx,sy,buf_curse,XOR_PUT); setcolor(WHITE);

goto begin; }

goto wait;

end:

closegraph(); free(buf_curse);

for(h=0;h<1;h++) {sd();delay(800);}

}

/***********************************/

void decide(arr)

int arr[16][16];

{

int i,j,x,y,l,l1,l2,l3,l4;

int max_1,max_2,n=1,m=2;

int x_1=0,y_1=0; int x_2=0,y_2=0;

for(i=6;i>0;i--)

{setcolor(15);

circle(tx,ty,i);}

see: for(i=0;i<16;i++)

for(j=0;j<16;j++) b[i][j]=0;

for(i=0;i<16;i++)

for(j=0;j<16;j++)

if(arr[i][j]==0)

{ for(x=i,y=j,l1=0;arr[x][y+1]==n&&y<15;y++)l1+=2;

if(arr[x][y+1]==m) l1--;

for(x=i,y=j; arr[x][y-1]==n&&y>0;y--) l1+=2;

if(arr[x][y-1]==m) l1--;

count(l1,i,j);

for(x=i,y=j,l2=0;arr[x+1][y-1]==n&&x<15&&y>0;x++,y--) l2+=2;

if(arr[x+1][y-1]==m)l2--;

for(x=i,y=j; arr[x-1][y+1]==n&&x>0&&y<15;x--,y++) l2+=2;

if(arr[x-1][y+1]==m)l2--;

count(l2,i,j);

for(x=i,y=j,l3=0;arr[x+1][y+1]==n&&x<15&&y<15;x++,y++) l3+=2;

if(arr[x+1][y+1]==m)l3--;

for(x=i,y=j; arr[x-1][y-1]==n&&x>0&&y>0;x--,y--) l3+=2;

if(arr[x-1][y-1]==m)l3--;

count(l3,i,j);

for(x=i,y=j,l4=0;arr[x+1][y]==n&&x<15;x++) l4+=2;

if(arr[x+1][y]==m)l4--;

for(x=i,y=j; arr[x-1][y]==n&&x>0;x--) l4+=2;

if(arr[x-1][y]==m)l4--;

count(l4,i,j);

}

if(n==1)

{ max_1=b[0][0];

for(i=0;i<16;i++)

for(j=0;j<16;j++)

if(b[i][j]>=max_1)

{max_1=b[i][j];

x_1=i;

y_1=j;

}

n++; m--;

goto see;

}

if(n==2)

{ max_2=b[0][0];

for(i=0;i<16;i++)

for(j=0;j<16;j++)

if(b[i][j]>=max_2) {max_2=b[i][j]; x_2=i;y_2=j;} n++;m--; }

if(max_2>=90||(max_1<90&&max_2>=50)||max_2>=max_1)

{x_1=x_2; y_1=y_2;}

tx=160+x_1*20;ty=90+y_1*20;

for(i=6;i>0;i--)

{setcolor(15);if(i<3)setcolor(BLACK);

circle(tx,ty,i);}

arr[x_1][y_1]=2;

}

void count(int l,int i,int j)

{

switch(l)

{

case -1:

case 0: break;

case 1: b[i][j]+=2; break; /*2*/

case 2: b[i][j]+=4; break; /*4*/

case 3: b[i][j]+=7; break;

case 4: b[i][j]+=10; break;

case 5: b[i][j]+=13; break;

case 6: b[i][j]+=50; break;

case 7:

case 8: b[i][j]+=95; break;

case 9:

case 10:

case 11:

case 13:

case 14:

case 15:

case 16:

case 17:

case 18: b[i][j]+=150;

default: b[i][j]+=0; break;

}

}

int judge(int n)

{

int i,j,x,y,ju=0,l1,l2,l3,l4;

for(i=0;i<16;i++)

for(j=0;j<16;j++)

if(a[i][j]==n)

{for(x=i,y=j,l1=1;a[x][y+1]==n&&y<15;y++) l1++;

if(l1>=5) {ju=1;goto re;}

for(x=i,y=j,l2=1;a[x+1][y-1]==n&&x<15&&y>0;x++,y--) l2++;

if(l2>=5) {ju=1;goto re;}

for(x=i,y=j,l3=1;a[x+1][y+1]==n&&x<15&&y<15;x++,y++) l3++;

if(l3>=5) {ju=1;goto re;}

for(x=i,y=j,l4=1;a[x+1][y]==n&&x<15;x++) l4++;

if(l4>=5) {ju=1;goto re;}

}

re: if(i!=16&&j!=16) {setcolor(WHITE);circle(160+i*20,90+j*20,10);}

return(ju);

}

int getkey()

{union REGS rg;

rg.h.ah=0;

int86(0x16,&rg,&rg);

return rg.h.ah;

}

void sd()

{sound(720);delay(3500);nosound();}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有