用c语言编写一个可以用鼠标控制的五子棋程序
2024-07-16 11:17:20作者:饭克斯
#include
#include
#include
#include
#include
#include
#defineSHURU1
#defineFANGXIANG2
#defineWUXIAO0
#defineTUICHU3
/****************************************************/
staticintii=0,jj=0,wanjia=1;
/****************************************************/
voidhqp(inta[][20],inty);
intanjian(charan);
intpanduan(inta[][20]);
voidpingmu(void);
voidguangbiaoyd(charan);
voidjh(inta[][20]);
/****************************************************/
voidmain()
{
inta[20][20]={0},tuichu=0,ying;
charan;
hqp(a,0);
pingmu();
while(1)
{
ying=panduan(a);
if(ying!=0)
hqp(a,ying);
an=getch();
switch(anjian(an))
{
caseTUICHU:clrscr();
tuichu=1;
break;
caseFANGXIANG:guangbiaoyd(an);
break;
caseSHURU:switch(ying)
{
case1:hqp(a,1);tuichu=1;break;
case2:hqp(a,2);tuichu=1;break;
case0:jh(a);break;
}
break;
caseWUXIAO:break;
}
hqp(a,0);
pingmu();
if(tuichu==1)
break;
}
}
/****************************************************/
voidhqp(inta[][20],inty)
{
inti,j;
clrscr();
if(y!=0)
{
textcolor(RED);
printf(WANJIA%dSHENGLI!!!!!\n,y);
}
for(i=0;i<20;i++)
{
for(j=0;j<20;j++)
{
switch(a[i][j])
{
case1:textcolor(YELLOW);
putch('X');
break;
case2:textcolor(BLUE);
putch('0');
break;
case0:textcolor(GREEN);
if(j==0)
{
if(i==0)
{
putch(0xda);
break;
}
if(i==19)
{
putch(0xc0);
break;
}
putch(0xc3);
break;
}
if(j==19)
{
if(i==0)
{
putch(0xbf);
break;
}
if(i==19)
{
putch(0xd9);
break;
}
putch(0xb4);
break;
}
if(i==0&&j!=0&&j!=19)
{
putch(0xc2);
break;
}
if(i==19&&j!=0&&j!=19)
{
putch(0xc1);
break;
}
putch(0xc5);
break;
}
}
printf(\n);
}
}
/*****************************************************************/
intanjian(charan)
{
if(an==32||an==13)
return(SHURU);
else
if(an=='a'||an=='w'||an=='s'||an=='d'||
an=='j'||an=='i'||an=='k'||an=='l')
return(FANGXIANG);
else
if(an==27)
return(TUICHU);
else
return(WUXIAO);
}
/******************************************************************/
intpanduan(inta[][20])
{
inti,j;
for(i=0;i<20;i++)
{
for(j=0;j<15;j++)
{
if(a[i][j]==1&&a[i][j+1]==1&&a[i][j+2]==1&&a[i][j+3]==1&&a[i][j+4]==1)
return(1);
else
if(a[i][j]==2&&a[i][j+1]==2&&a[i][j+2]==2&&a[i][j+3]==2&&a[i][j+4]==2)
return(2);
}
}
for(i=0;i<15;i++)
{
for(j=0;j<20;j++)
{
if(a[i][j]==1&&a[i+1][j]==1&&a[i+2][j]==1&&a[i+3][j]==1&&a[i+4][j]==1)
return(1);
else
if(a[i][j]==2&&a[i+1][j]==2&&a[i+2][j]==2&&a[i+3][j]==2&&a[i+4][j]==2)
return(2);
}
}
for(i=0;i<15;i++)
{
for(j=0;j<15;j++)
{
if(a[i][j]==1&&a[i+1][j+1]==1&&a[i+2][j+2]==1&&a[i+3][j+3]==1&&a[i+4][j+4]==1)
return(1);
else
if(a[i][j]==2&&a[i+1][j+1]==2&&a[i+2][j+2]==2&&a[i+3][j+3]==2&&a[i+4][j+4]==2)
return(2);
}
}
for(i=4;i<20;i++)
{
for(j=4;j<20;j++)
{
if(a[i][j]==1&&a[i-1][j-1]==1&&a[i-2][j-2]==1&&a[i-3][j-3]==1&&a[i-4][j-4]==1)
return(1);
else
if(a[i][j]==2&&a[i-1][j-1]==2&&a[i-2][j-2]==2&&a[i-3][j-3]==2&&a[i-4][j-4]==2)
return(2);
}
}
return(0);
}
/**************************************************************************/
voidpingmu(void)
{
inti,j;
char*Msg[]=
{
WanJia1anjian:,
shang:w,
xia:s,
zuo:a,
you:d,
fangzi:space,
,
WanJia2anjian:,
shang:i,
xia:k,
zuo:j,
you:l,
fangzi:ENTER,
tuichu:,
ESC\n,
NULL,
};
i=0;
textcolor(RED);
while(Msg[i]!=NULL)
{
gotoxy(25,3+i);
cputs(Msg[i]);
i++;
}
gotoxy(25,20);
printf(\nqingwanjia%dchuru:,wanjia);
gotoxy(jj+1,ii+1);
}
/**********************************************************************/
voidguangbiaoyd(charan)
{
if(wanjia==1)
{
switch(an)
{
case'a':jj--;break;
case'd':jj++;break;
case'w':ii--;break;
case's':ii++;break;
}
}
else
{
switch(an)
{
case'j':jj--;break;
case'l':jj++;break;
case'i':ii--;break;
case'k':ii++;break;
}
}
if(ii<0)
ii++;
if(ii>19)
ii--;
if(jj<0)
jj++;
if(jj>19)
jj--;
gotoxy(ii+1,jj+1);
}
/***********************************************************************/
voidjh(inta[][20])
{
intk=0;
if(wanjia==1&&a[ii][jj]==0&&k==0)
{
a[ii][jj]=1;
wanjia=2;
k=1;
}
else
{
if(a[ii][jj]==0&&k==0)
{
a[ii][jj]=2;
wanjia=1;
}
}
}
/***********************************************************************/