C语言编写的五子棋源代码.txt

上传人:b****1 文档编号:230252 上传时间:2022-10-07 格式:TXT 页数:11 大小:13.40KB
下载 相关 举报
C语言编写的五子棋源代码.txt_第1页
第1页 / 共11页
C语言编写的五子棋源代码.txt_第2页
第2页 / 共11页
C语言编写的五子棋源代码.txt_第3页
第3页 / 共11页
C语言编写的五子棋源代码.txt_第4页
第4页 / 共11页
C语言编写的五子棋源代码.txt_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

C语言编写的五子棋源代码.txt

《C语言编写的五子棋源代码.txt》由会员分享,可在线阅读,更多相关《C语言编写的五子棋源代码.txt(11页珍藏版)》请在冰豆网上搜索。

C语言编写的五子棋源代码.txt

#include

#include

#include

#include//�����������ͷ�ļ�

#include//�ַ�����ĺ��������ͷ�ļ�

#include//stdlibͷ�ļ���standardlibrary��׼��ͷ�ļ�stdlibͷ�ļ��������C��C++���Ե���õ�ϵͳ������,�ļ�������C���Ա�׼�⺯���Ķ���.

#defineSPA0//��C��C++����Դ������������һ����ʶ������ʾһ���ַ�������Ϊ���ꡱ����define��Ϊ�궨�����

#defineMAN1

#defineCOM2

/*��λ����Ϊ0������µ�λ����Ϊ1�������µ�λ����Ϊ2*/

#defineORDEX15

intqipan[ORDEX][ORDEX];//�Լ������Ԥ����������Զ�ά������ʽ��������/*15*15������*/

typedefstruct//typedef����������C�ж���һ���ṹ������

{

intiFlag;

intiX,iY;

}ScmPiece;

intg_iPieceLen;

ScmPieceg_ScmGame1,g_ScmGame2;

voidstart();/*�������Ҫ���ƺ���*/

voiddraw();/*������*/

intVictory(ScmPiece*pScmPiece);/*�ж�ʤ��pqΪ�жϵ�����*/

voidAI(int*p,int*q);/*��������pq������������*/

intvalue(intp,intq);/*����յ�pq�ļ�ֵ*/

intqixing(intn,intp,intq);/*���ؿյ�pq��n�����ϵ�����nΪ1-8��������˳ʱ�뿪ʼ��*/

voidyiwei(intn,int*i,int*j);/*��n�����϶�����ij��λnΪ1-8��������˳ʱ�뿪ʼ��*/

voidInitGame(){

inti;

g_iPieceLen=ORDEX*ORDEX;

g_ScmGame1.iX=0;

g_ScmGame1.iY=0;

g_ScmGame1.iFlag=COM;

g_ScmGame2.iX=7;

g_ScmGame2.iY=7;

g_ScmGame2.iFlag=MAN;

for(i=0;i

*((int*)qipan+i)=SPA;

}

voidmain()

{

chark;

do{

InitGame();

start();

printf("��Ҫ����һ����?

����y��n��");getchar();scanf("%c",&k);

while(k!

='y'&&k!

='n'){printf("�������,����������\n");scanf("%c",&k);}

system("cls");

}while(k=='y');

printf("ллʹ��!

\n");

}

voidMakePiece(ScmPiece*pScmPiece,intiGameFlag){

if(iGameFlag)

{

printf("�����ӣ�");

while(scanf("%d%d",&pScmPiece->iX,&pScmPiece->iY))

{

if((pScmPiece->iX<0||pScmPiece->iX>ORDEX-1)||(pScmPiece->iY<0||pScmPiece->iY>ORDEX-1))

printf("�������!

���������룺");

elseif(qipan[pScmPiece->iX][pScmPiece->iY])

printf("���������!

���������룺");

elsebreak;

}

}

qipan[pScmPiece->iX][pScmPiece->iY]=pScmPiece->iFlag;

--g_iPieceLen;

system("cls");

draw();

if(iGameFlag==0)

printf("��������%d%d\n",pScmPiece->iX,pScmPiece->iY);

}

voidstart()

{

intchoice;

//ScmPieceScmGameTemp1,ScmGameTemp2;/*a1b1���������������c1d1���������������*/

printf("\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");

printf("\t�U�U\n");

printf("\t�U��ӭʹ���������ս����ף����������ս�޼����U\n");

printf("\t�U�U\n");

printf("\t�U._______________________.�U\n");

printf("\t�U|_____________________|�U\n");

printf("\t�U|II|�U\n");

printf("\t�U|II|�U\n");

printf("\t�U|I������I|�U\n");

printf("\t�U|II|�U\n");

printf("\t�U|I___________________I|�U\n");

printf("\t�U!

_______________________!

�U\n");

printf("\t�U._[__________]_.�U\n");

printf("\t�U.___|_______________|___.�U\n");

printf("\t�U|:

:

:

____|�U\n");

printf("\t�U|~~~~[CD-ROM]|�U\n");

printf("\t�U!

_____________________!

�U\n");

printf("\t�U�U\n");

printf("\t�U�U\n");

printf("\t�U����Ϫ�������ף������������������U\n");

printf("\t�U��������׷��������������ɽ�ȡ��U\n");

printf("\t�U������Ͽ��ˮ����������������ᰡ��U\n");

printf("\t�U�������������ǣ�б�������������U\n");

printf("\t�U��ʮ������������ֱָ����б���ǡ��U\n");

printf("\t�U�U\n");

printf("\t�U�U\n");

printf("\t�U1.�˻���ս2.���˶�ս�U\n");

printf("\t�U�U\n");

printf("\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");

printf("\t\t\t������1��2��");

while(scanf("%d",&choice),choice!

=1&&choice!

=2)

printf("����������������룺");

system("cls");

if(choice==1)

{/*�˻�ģʽ*/

printf("\t\t\t��ӭʹ���������˻���ս��\n\t\t�������������꣨��136���м��Կո�ָ��\n\n\n");

draw();

printf("�����밴1�������밴2��");

while(scanf("%d",&choice),choice!

=1&&choice!

=2)

printf("����������������룺");

if(choice==2)

MakePiece(&g_ScmGame2,0);

choice=1;

}

else

{

printf("��ӭʹ�����������˶�ս����������������(��136)������������1515�� \n\n\n");

draw();

}

while(g_iPieceLen)

{

MakePiece(&g_ScmGame1,1);

if(Victory(&g_ScmGame1))

{

printf("��������Ķ��Ǹ���!

!

!

\n");

return;

}/*���Ӯ*/

if(choice==1)

{

AI(&g_ScmGame2.iY,&g_ScmGame2.iX);

MakePiece(&g_ScmGame2,0);

if(Victory(&g_ScmGame2))

{/*����Ӯ*/

intiChoice;

printf("Ҫ������������y��n��");

STARTFLAGE:

setbuf(stdin,NULL);

scanf("%c",&iChoice);

switch((char)iChoice){

case'y':

case'Y':

g_iPieceLen+=2;

qipan[g_ScmGame2.iX][g_ScmGame2.iY]=SPA;

qipan[g_ScmGame1.iX][g_ScmGame1.iY]=SPA;

system("cls");draw();

break;

case'n':

case'N':

printf("�²������Ժ��������벻Ҫ����!

!

!

\n");

return;

default:

printf("����������������룺");

gotoSTARTFLAGE;

}

}

}

else

{

MakePiece(&g_ScmGame2,1);

if(Victory(&g_ScmGame2))

{

printf("��������Ķ��Ǹ���!

!

!

\n");

return;

}

}

}

printf("�;�\n");

}

voiddraw()/*������*/

{

inti,j;

charp[15][15][4];

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

for(i=0;i<15;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],"��\0");

}

printf("01234567891011121314\n");

printf("����������������������������������\n");

for(i=0,j=0;i<14;i++,j++){

printf("%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);

printf("�����੤�੤�੤�੤�੤�੤�੤�੤�੤�੤�੤�੤�੤�੤��\n");

}

printf("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]);

printf("�����ة��ة��ة��ة��ة��ة��ة��ة��ة��ة��ة��ة��ة��ة���\n");

printf("01234567891011121314\n");

}

staticintDirectionValue(int*piX,int*piY,intiDirection){

switch(iDirection){

case0:

--*piX;

break;

case4:

++*piX;

break;

case1:

--*piY;

break;

case5:

++*piY;

break;

case2:

--*piX;--*piY;

break;

case6:

++*piX;++*piY;

break;

case3:

--*piX;++*piY;

break;

case7:

++*piX;--*piY;

break;

}

if((*piX>=0&&*piX<=ORDEX-1)&&(*piY>=0&&*piY<=ORDEX-1))

return1;

elsereturn0;

}

staticintSubVictory(ScmPiece*pScmPiece,intiDirection){

intiX=pScmPiece->iX;

intiY=pScmPiece->iY;

intiPieceCount=1;

while(DirectionValue(&iX,&iY,iDirection)&&qipan[iX][iY]==pScmPiece->iFlag)

++iPieceCount;

iX=pScmPiece->iX;

iY=pScmPiece->iY;

while(DirectionValue(&iX,&iY,iDirection+4)&&qipan[iX][iY]==pScmPiece->iFlag)

++iPieceCount;

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Ϊ�µ�����*/

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

for(i=0;i<15;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;k1/=10;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;continue;};/*������and����*/

if(K1==-2){if(K2<0){k+=0;continue;}elsek+=a[X2][Y2][Z2]/2;continue;};/*�߽������and����*/

if(K1==-3){if(K2<0){k+=0;continue;}elsek+=a[X2][Y2][Z2]/3;continue;};/*�߽�ճ�����and����*/

if(((K1>-1&&K1<4)&&((K2>-1&&K2<4)||(K2>9&&K2<14)))||((K1>99&&K1<104)&&((K2>99&&K2<104)||(K2>109&&K2<114)))){

/*�����������Ի�Ի��Ի�Գ������͸�ֵ*/

if(Z1+Z2>=2){k+=a[X2][Y2][3];continue;}

else{k+=a[X2][Y2][Z1+Z2+1];continue;}

}

if(((K1>9&&K1<14)&&(K2>9&&K2<14))||((K1>109&&K1<114)&&(K2>109&&K2<114))){

/*���强���Գ�Գ������͸�ֵ*/

if(Z1+Z2>=2){k+=10000;continue;}

else{k+=0;continue;}

}

if(((K1>-1&&K1<4)&&((K2>99&&K2<104)||(K2>109&&K2<114)))||((K1>9&&K1<14)&&((K2>99&&K2<104)||(K2>109&&K2<114)))){

/*����Ի�����Գ�����Ի�����Գ������͸�ֵ*/

if(Z1==3||Z2==3){k+=10000;continue;}

else{k+=a[X2][Y2][Z2]+a[X1][Y1][Z1]/4;continue;}

}

else{k+=a[X1][Y1][Z1]+a[X2][Y2][Z2];continue;}/*�������͵ĸ�ֵ*/

}

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,&p,&q);

if(p<0||p>14||q<0||q>14){k=m+9;returnk;}

while(qipan[q][p]==COM){m++;yiwei(n,&p,&q);if(p<0||p>14||q<0||q>14){k=m+9;returnk;}}

if(qipan[q][p]==SPA)k=m-1;/*����������*/

elsek=m+9;/*����������*/

}break;

caseMAN:

{

m++;yiwei(n,&p,&q);

if(p<0||p>14||q<0||q>14){k=m+109;returnk;}

while(qipan[q][p]==MAN){m++;yiwei(n,&p,&q);if(p<0||p>14||q<0||q>14){k=m+109;returnk;}}

if(qipan[q][p]==SPA)k=m+99;/*�Է�������*/

elsek=m+109;/*�Է�������*/

}break;

caseSPA:

{

yiwei(n,&p,&q);

if(p<0||p>14||q<0||q>14){k=-3;returnk;}/*�߽�ճ�����*/

switch(qipan[q][p]){

caseCOM:

{

m++;yiwei(n,&p,&q);

if(p<0||p>14||q<0||q>14){k=m+29;returnk;}

while(qipan[q][p]==COM){m++;yiwei(n,&p,&q);if(p<0||p>14||q<0||q>14){k=m+29;returnk;}}

if(qipan[q][p]==SPA)k=m+19;/*�����ջ�����*/

elsek=m+29;/*�����ճ�����*/

}break;

caseMAN:

{

m++;yiwei(n,&p,&q);

if(p<0||p>14||q<0||q>14){k=m+129;returnk;}

while(qipan[q][p]==MAN){m++;yiwei(n,&p,&q);if(p<0||p>14||q<0||q>14){k=m+129;returnk;}}

if(qipan[q][p]==SPA)k=m+119;/*�Է��ջ�����*/

elsek=m+129;/*�Է��ճ�����*/

}break;

caseSPA:

k=-1;break;/*������*/

}

}break;

}

returnk;

}

voidyiwei(intn,int*i,int*j)/*��n�����϶�����ij��λnΪ1-8��������˳ʱ�뿪ʼ��*/

{

switch(n){

case1:

*i+=1;break;

case2:

*i+=1;*j+=1;break;

case3:

*j+=1;break;

case4:

*i-=1;*j+=1;break;

case5:

*i-=1;break;

case6:

*i-=1;*j-=1;break;

case7:

*j-=1;break;

case8:

*i+=1;*j-=1;break;

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1