1、五子棋!/ 程序“五子棋第三方版.exe”运行时,把以前下棋的棋谱保存在“棋谱.txt”文件中,/ 然后调用本程序。/ 本程序的作用是:首先读入以前的棋谱,然后调用函数“qxwz()”计算出计算机应该/ 下棋的位置,并保存在 c中,然后把应下棋的位置写入文件“当前棋子.txt”#include typedef struct char x; char y; QZ;QZ qzwz(); /取得应下棋位置,返回值为 QZ类型,其中的x,y两个成员代表应下棋位置 char qp1919; /用于保存棋盘上每个点的状态,0-空,1-黑棋,2-白棋 void main() FILE *fp; int tm
2、p1,tmp2,tmp3; QZ c; /* 读入当前棋谱 */ if(fp=fopen(“棋谱.txt“,“r“)=NULL) printf(“棋谱.TXT文件打开失败!n“); return; while(!feof(fp) tmp1=tmp2=tmp3=-1; fscanf(fp,“%d%d%d“, if(tmp3!=-1) qptmp1tmp2=tmp3; fclose(fp); c=qzwz(); if(fp=fopen(“当前棋子.txt“,“w“)=NULL) printf(“当前棋子.TXT文件打开失败!n“); return; fprintf(fp,“%d,%d,%d“,c.
3、x,c.y,2); /将应下棋位置传送到文件中 fclose(fp);QZ qzwz() (把这里面的程序补充完整就好了) 这个程序要求是:1。只适用于人先下,机器后下的情况。有了“五子棋第三方版.exe”来制作下棋界面,就只需要编写下棋算法,而不必考虑其它的问题了。2当运行“五子棋第三方版.exe”程序时,该程序接受人下棋位置,然后调用“wzq.exe”程序,由“wzq.exe”程序计算出机器的应对并写入到“当前棋子.txt”文件中(结束),机器的应对结果由“五子棋第三方版.exe”负责读入,并等待人下一步的应对。3要做的工作就是,完成“wzq.cpp” 中“qxwz()”函数的设计,使之能
4、返回一个比较好的下棋位置。在设计过程中,可以增加全局变量以保存你认为有必要保存的数据,可以增加其它文件,用来保存你认为下次调用还有必要使用的数据,可以增加其它函数以方便下棋位置的计算过程。总之,所给出的“wzq.cpp”程序只是一个框架,在不影响其功能的情况下,可以随意更改。回答人的补充 2009-09-30 22:34 这还有一个/*/*作品名称:超 级 五 子 棋*/*学校: 八 一 农 垦 大 学*/ /*专业:通 信 工 程*/ /*作者: Z.Y.B */*/*头函数及自定义函数*/#include#include#include#include#include#define PI
5、3.1415926void INIT();/*图形初始化子函数*/ void St();/*开始画面子函数*/void Ed();/*结束画面子函数*/void INITQP(int c1,int c2);/*画棋盘函数*/void HUAZI(int x,int y,int q);/*画棋子函数*/void message(int f,int f0);/*显示信息子函数*/void sd(int x,int y,int p);/*显示当前玩家*/void SJ();/*显示日期*/void wg();/*画棋盘网格*/void sounds(int f);/*响铃函数*/void XL(in
6、t f);/*笑脸*/char ZouQi();/*走棋函数*/int PY(int py2121);/*判赢函数*/int mx3;/*定义一个全程变量保存玩家得分和优先走棋标志*/*主函数*/void main()char c,c0; mx0=0,mx1=0,mx2=1;St();INIT();INITQP(mx0,mx1);c0=getch();while(c0=121)closegraph();INIT();INITQP(mx0,mx1);c=ZouQi();if(c=113)break;if(c=99)c0=121;else break; cleardevice();Ed(); cl
7、osegraph();printf(“nnnnnnnnnnn Please press any key to EXIT!“);getch();/*图形初始化*/void INIT()int gd=DETECT,gm;registerbgidriver(EGAVGA_driver);initgraph(cleardevice();/*开始画面*/void St()int x1,y1,x2,y2,r1,r2,r0=100;float x,h=PI/3;INIT();setbkcolor(0);setcolor(10);settextstyle(0,0,2);outtextxy(263,350,“W
8、ELCOM!“);for(r0=100;r0=0;r0-=20)for(x=0;x=0;j-)for(i=0;i21;i+) for(k=0;k5;k+)if(pyi+kj-i-k=1)p1+;if(pyi+kj-i-k=2)p2+;if(p1=5)message(1,1);t=1;if(p2=5)message(2,1);t=1;p1=0;p2=0;for(j=21;j41;j+)for(i=j-20;i21;i+) for(k=0;k5;k+)if(pyi+kj-i-k=1)p1+;if(pyi+kj-i-k=2)p2+;if(p1=5)message(1,1);t=1;if(p2=5)m
9、essage(2,1);t=1;p1=0;p2=0; return(t);/*返回优胜标志*/*响铃函数*/void sounds(int f)if(f=1)sound(2000);delay(1000000);sound(1500);delay(100000);sound(500);delay(10000);nosound();if(f=2)sound(500);delay(1000000);sound(750);delay(100000);sound(2000);delay(10000);nosound();/*笑脸*/void XL(int f)int c1,c2,i;if(f=1)c1
10、=4;c2=10;else c1=10;c2=4;dosetcolor(c1);setfillstyle(1,c1);circle(580,90,20);floodfill(580,90,c1);setcolor(c2);arc(570,90,60,120,10);arc(590,90,60,120,10);arc(580,90,240,340,10);arc(580,102,150,360,3);delay(1000000);setcolor(0);setfillstyle(1,0);circle(580,90,20);floodfill(580,90,0);arc(570,90,60,12
11、0,10);arc(590,90,60,120,10);arc(580,90,240,340,10);arc(580,102,150,360,3);while(!kbhit();/*显示日期*/void SJ()unsigned char *riqi=“000000000000000“;struct date d;int year,mon,day;getdate(sprintf(riqi,“%4d-%02d-%02d“,d.da_year,d.da_mon,d.da_day);setcolor(6);setlinestyle(0,0,1);setfillstyle(1,6);bar3d(530,400,610,435,4,1);floodfill(550,420,6);setcolor(15);settextstyle(3,0,8);outtextxy(530,415,riqi);