C语言编写的五子棋源代码.txt资料文档下载
《C语言编写的五子棋源代码.txt资料文档下载》由会员分享,可在线阅读,更多相关《C语言编写的五子棋源代码.txt资料文档下载(11页珍藏版)》请在冰豆网上搜索。
g_ScmGame2.iFlag=MAN;
for(i=0;
i<
ORDEX*ORDEX;
++i)
*((int*)qipan+i)=SPA;
}
voidmain()
chark;
do{
InitGame();
start();
printf("
��Ҫ����һ����?
����y��n��"
);
getchar();
scanf("
%c"
&
k);
while(k!
='
y'
&
k!
n'
){printf("
�������,����������\n"
}
system("
cls"
}while(k=='
printf("
ллʹ��!
\n"
voidMakePiece(ScmPiece*pScmPiece,intiGameFlag){
if(iGameFlag)
{
�����ӣ�"
while(scanf("
%d%d"
&
pScmPiece->
iX,&
iY))
{
if((pScmPiece->
iX<
0||pScmPiece->
iX>
ORDEX-1)||(pScmPiece->
iY<
iY>
ORDEX-1))
printf("
�������!
���������룺"
elseif(qipan[pScmPiece->
iX][pScmPiece->
iY])
���������!
elsebreak;
}
}
qipan[pScmPiece->
iY]=pScmPiece->
iFlag;
--g_iPieceLen;
system("
draw();
if(iGameFlag==0)
��������%d%d\n"
pScmPiece->
iX,pScmPiece->
iY);
voidstart()
intchoice;
//ScmPieceScmGameTemp1,ScmGameTemp2;
/*a1b1���������������c1d1���������������*/
\t�X�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�[\n"
\t�U�U\n"
\t�U��ӭʹ���������ս����ף����������ս�����U\n"
printf("
\t�U._______________________.�U\n"
\t�U|_____________________|�U\n"
\t�U|II|�U\n"
\t�U|I������I|�U\n"
printf("
\t�U|I___________________I|�U\n"
\t�U!
_______________________!
�U\n"
\t�U._[__________]_.�U\n"
\t�U.___|_______________|___.�U\n"
\t�U|:
:
____|�U\n"
\t�U|~~~~[CD-ROM]|�U\n"
\t�U!
_____________________!
�U\n"
\t�U����Ϫ�������ף������������������U\n"
\t�U����������������������ɽ�ȡ��U\n"
\t�U������Ͽ��ˮ����������������ᰡ��U\n"
\t�U�������������ǣ�б�������������U\n"
\t�U��ʮ������������ֱָ����б���ǡ��U\n"
\t�U1.�˻���ս2.���˶�ս�U\n"
\t�^�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�T�a\n"
\t\t\t������1��2��"
while(scanf("
%d"
choice),choice!
=1&
choice!
=2)
printf("
����������������룺"
);
if(choice==1)
{/*�˻�ģʽ*/
\t\t\t��ӭʹ���������˻���ս��\n\t\t�������������꣨��136���м��Կո�ָ��\n\n\n"
draw();
�����밴1�������밴2��"
printf("
if(choice==2)
MakePiece(&
g_ScmGame2,0);
choice=1;
else
��ӭʹ�����������˶�ս����������������(��136)������������1515�� \n\n\n"
while(g_iPieceLen)
MakePiece(&
g_ScmGame1,1);
if(Victory(&
g_ScmGame1))
printf("
��������Ķ��Ǹ���!
!
return;
}/*���Ӯ*/
if(choice==1)
AI(&
g_ScmGame2.iY,&
g_ScmGame2.iX);
if(Victory(&
g_ScmGame2))
{/*����Ӯ*/
intiChoice;
printf("
Ҫ������������y��n��"
STARTFLAGE:
setbuf(stdin,NULL);
scanf("
iChoice);
switch((char)iChoice){
case'
Y'
g_iPieceLen+=2;
qipan[g_ScmGame2.iX][g_ScmGame2.iY]=SPA;
qipan[g_ScmGame1.iX][g_ScmGame1.iY]=SPA;
system("
draw();
break;
N'
printf("
�²
������Ժ��������벻Ҫ����!
return;
default:
printf("
gotoSTARTFLAGE;
}
}
else
g_ScmGame2,1);
{
return;
�;�\n"
voiddraw()/*������*/
inti,j;
charp[15][15][4];
for(j=0;
j<
15;
j++)
for(i=0;
i<
i++){
if(qipan[j][i]==SPA)strcpy(p[j][i],"
\0"
if(qipan[j][i]==MAN)strcpy(p[j][i],"
��\0"
if(qipan[j][i]==COM)strcpy(p[j][i],"
01234567891011121314\n"
����������������������������������\n"
for(i=0,j=0;
14;
i++,j++){
%2d��%s��%s��%s��%s��%s��%s��%s��%s��%s��%s��%s��%s��%s��%s��%s��%d\n"
j,p[i][0],p[i][1],p[i][2],p[i][3],p[i][4],p[i][5],p[i][6],p[i][7],p[i][8],p[i][9],p[i][10],p[i][11],p[i][12],p[i][13],p[i][14],j);
��������������������\n"
14��%s��%s��%s��%s��%s��%s��%s��%s��%s��%s��%s��%s��%s��%s��%s��0\n"
p[14][0],p[14][1],p[14][2],p[14][3],p[14][4],p[14][5],p[14][6],p[14][7],p[14][8],p[14][9],p[14][10],p[14][11],p[14][12],p[14][13],p[14][14]);
�����ة��ة��ة��ة��ة��ة��ة��ة��ة��ة��ة��ة��ة��ة���\n"
staticintDirectionValue(int*piX,int*piY,intiDirection){
switch(iDirection){
case0:
--*piX;
break;
case4:
++*piX;
case1:
--*piY;
case5:
++*piY;
case2:
--*piY;
case6:
++*piY;
case3:
case7:
if((*piX>
=0&
*piX<
=ORDEX-1)&
(*piY>
*piY<
=ORDEX-1))
return1;
elsereturn0;
staticintSubVictory(ScmPiece*pScmPiece,intiDirection){
intiX=pScmPiece->
iX;
intiY=pScmPiece->
iY;
intiPieceCount=1;
while(DirectionValue(&
iY,iDirection)&
qipan[iX][iY]==pScmPiece->
iFlag)
++iPieceCount;
iX=pScmPiece->
iY=pScmPiece->
iY,iDirection+4)&
returniPieceCount;
intVictory(ScmPiece*pScmPiece)/*�ж�ʤ��pqΪ�жϵ����꣬ʤ������1�����
�0*/
intiDirection=0;
while(iDirection<
4)
if(SubVictory(pScmPiece,iDirection++)>
=5)
return1;
return0;
voidAI(int*p,int*q)/*��������*p*q������������*/
inti,j,k,max=0,I,J;
/*IJΪ�µ
�����*/
i++)
if(qipan[j][i]==SPA){/*�������̣������յ�������ֵ��ȡ����ֵ�����ӡ�*/
k=value(i,j);
if(k>
=max){I=i;
J=j;
max=k;
*p=I;
*q=J;
intvalue(intp,intq)/*����յ�pq�ļ�ֵ��k����*/
intn=1,k=0,k1,k2,K1,K2,X1,Y1,Z1,X2,Y2,Z2,temp;
inta[2][4][4]={40,400,3000,10000,6,10,600,10000,20,120,200,0,6,10,500,0,30,300,2500,5000,2,8,300,8000,26,160,0,0,4,20,300,0};
/*����a�д��漺���ͶԷ���32�����͵�ֵ����0�Է�1��0��1�ջ�2�ճ�3����0-3��0��ʾ1���ӣ�3��ʾ4���ӣ�*/
while(n!
=5){
k1=qixing(n,p,q);
n+=4;
/*k1,k2Ϊ2������������ͱ��*/
k2=qixing(n,p,q);
n-=3;
if(k1>
k2){temp=k1;
k1=k2;
k2=temp;
}/*ʹ���С��Ϊk1,���Ϊk2*/
K1=k1;
K2=k2;
/*K1K2����k1k2�ı��*/
Z1=k1%10;
Z2=k2%10;
k1/=10;
k2/=10;
Y1=k1%10;
Y2=k2%10;
X1=k1%10;
X2=k2%10;
/*XYZ�ֱ��ʾ����0�Է�1��0��1�ջ�2�ճ�3����0-3��0��ʾ1���ӣ�3��ʾ4���ӣ�*/
if(K1==-1){if(K2<
0){k+=0;
continue;
}elsek+=a[X2][Y2][Z2]+5;
};
/*������and����*/
if(K1==-2){if(K2<
}elsek+=a[X2][Y2][Z2]/2;
};
/*�߽������and����*/
if(K1==-3){if(K2<
}elsek+=a[X2][Y2][Z2]/3;
/*�߽�ճ�����and����*/
if(((K1>
-1&
K1<
4)&
((K2>
K2<
4)||(K2>
9&
14)))||((K1>
99&
104)&
104)||(K2>
109&
114)))){
/*�����������Ի�Ի��Ի�Գ�������ֵ*/
if(Z1+Z2>
=2){k+=a[X2][Y2][3];
else{k+=a[X2][Y2][Z1+Z2+1];
14)&
(K2>
14))||((K1>
114)&
114))){
/*���强���Գ�Գ�������ֵ*/
=2){k+=10000;
else{k+=0;
114)))||((K1>
/*����Ի�����Գ�����Ի�����Գ�������ֵ*/
if(Z1==3||Z2==3){k+=10000;
else{k+=a[X2][Y2][Z2]+a[X1][Y1][Z1]/4;
}
else{k+=a[X1][Y1][Z1]+a[X2][Y2][Z2];
}/*�������͵ĸ�ֵ*/
returnk;
intqixing(intn,intp,intq)/*���ؿյ�pq��n�����ϵ����ͺ�nΪ1-8��������˳ʱ�뿪ʼ��*/
intk,m=0;
/*���ͺ�ע��:
����000-003����010-013�Ի�100-103�Գ�110-113���ջ�020-023���ճ�030-033�Կջ�120-123�Կճ�130-133��-1�߽��-2�߽�ճ�-3*/
yiwei(n,&
p,&
q);
if(p<
0||p>
14||q<
0||q>
14)k=-2;
/*�߽������*/
switch(qipan[q][p]){
caseCOM:
m++;
yiwei(n,&
if(p<
14){k=m+9;
returnk;
while(qipan[q][p]==COM){m++;
if(p<
}}
if(qipan[q][p]==SPA)k=m-1;
/*����������*/
elsek=m+9;
/*����������*/
}break;
caseMAN:
14){k=m+109;
while(qipan[q][p]==MAN){m++;
if(qipan[q][p]==SPA)k=m+99;
/*�Է�������*/
elsek=m+109;
/*�Է�������*/
caseSPA:
yiwei(n,&
14){k=-3;
}/*�߽�ճ�����*/
switch(qipan[q][p]){
caseCOM:
m++;
if(p<
14){k=m+29;
while(qipan[q][p]==COM){m++;
if(qipan[q][p]==SPA)k=m+19;
/*�����ջ�����*/
elsek=m+29;
/*�����ճ�����*/
}break;
caseMAN:
14){k=m+129;
while(qipan[q][p]==MAN){m++;
}}
if(qipan[q][p]==SPA)k=m+119;
/*�Է��ջ�����*/
elsek=m+129;
/*�Է��ճ�����*/
caseSPA:
k=-1;
break;
/*������*/
}
}break;
voidyiwei(intn,int*i,int*j)/*��n�����϶�����ij��λnΪ1-8��������˳ʱ�뿪ʼ��*/
switch(n){
*i+=1;
*j+=1;
*i-=1;
*j-=1;
case8: