#include<stdio.h>
#include<windows.h>
#include <conio.h>
int huihe,X=0,Y=0;
int a[10][10]={{0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0}};
void gotoxy(int x,int y)
{
COORD xy; //坐标
HANDLE hstdout; //容纳句柄的变量
hstdout=GetStdHandle(STD_OUTPUT_HANDLE);//获取标准设备句柄存放到hstdout
xy.X=x;
xy.Y=y;//坐标通过函数的参数来输入
SetConsoleCursorPosition(hstdout,xy);//是API中定位光标位置的函数
}
int cun(int x,int y)
{
if(huihe==0) a[x][2*y-1]=1;//黑
else if(huihe==1) a[x][2*y-1]=2;//白
return 0;
}
int qu(int x,int y)
{
return a[x][2*y-1];
}
int main()
{
int c,d,e,f,g,h=0,i=0,j;//h为黑,i为白
printf("+-+-+-+-+-+-+-+-+-+ 请输入上下左右来移动光标,按回车键来下棋\n");
printf("+-+-+-+-+-+-+-+-+-+ 注意:请勿使光标超出边框,那会使程序结束\n");
printf("+-+-+-+-+-+-+-+-+-+\n");
printf("+-+-+-+-+-+-+-+-+-+\n");
printf("+-+-+-+-+-+-+-+-+-+\n");
printf("+-+-+-+-+-+-+-+-+-+\n");
printf("+-+-+-+-+-+-+-+-+-+\n");
printf("+-+-+-+-+-+-+-+-+-+\n");
printf("+-+-+-+-+-+-+-+-+-+\n");
printf("+-+-+-+-+-+-+-+-+-+\n");
gotoxy(0,0);
for(d=0;X<=10&&Y<=19;d++)
{
huihe=d%2;
c = getch();
if(huihe==1) {gotoxy(0,11);printf("黑棋回合\n");}
if(huihe==0) {gotoxy(0,11);printf("白棋回合\n");}
if(c==0) c=getch(); // getch在遇到方向键时会返回0 再使用getch便会返回扫描码 重点!!!!!!!!!
if( c == 72 ) //上
X=X-1;
if ( c == 80)//下
X=X+1;
if ( c == 75)//左
Y=Y-2;
if ( c == 77)//右
Y=Y+2;
if(c == 113) //按q退出
break;
gotoxy(Y,X);
if(c==*\r*)
{if(huihe==0)
printf("◇");
if(huihe==1)
printf("◆");
cun(X,Y);}
for(f=0;f<=10;f++)
{
for(e=0;e<=10;e++)
{
g=qu(e,f);
if(g==1) h=h+1;
else if(g==2) i=i+1;
else if(g==0) {h=0;i=0;}
if(h>=5) {gotoxy(0,11);printf("黑棋赢了!!\n");}
else if(i>=5) {gotoxy(0,11);printf("白棋赢了!!\n");}
}
}
for(e=10;e>=0;e--)
{
for(f=0;f<=10;f++)
{
g=qu(e,f);
if(g==1) h=h+1;
else if(g==2) i=i+1;
else if(g==0) {h=0;i=0;}
if(h>=5) {gotoxy(0,11);printf("黑棋赢了!!\n");}
else if(i>=5) {gotoxy(0,11);printf("白棋赢了!!\n");}
}
}
for(j=0;j<=10;j++)
{
e=j;
for(f=0;e<=10||f<=10;e++,f++)
{
g=qu(e,f);
if(g==1) h=h+1;
else if(g==2) i=i+1;
else if(g==0) {h=0;i=0;}
if(h>=5) {gotoxy(0,11);printf("黑棋赢了!!\n");}
else if(i>=5) {gotoxy(0,11);printf("白棋赢了!!\n");}
}
}
for(j=0;j<=10;j++)
{
f=j;
for(e=0;e<=10||f<=10;e++,f++)
{
g=qu(e,f);
if(g==1) h=h+1;
else if(g==2) i=i+1;
else if(g==0) {h=0;i=0;}
if(h>=5) {gotoxy(0,11);printf("黑棋赢了!!\n");}
else if(i>=5) {gotoxy(0,11);printf("白棋赢了!!\n");}
}
}
for(j=10;j>=0;j--)
{
f=j;
for(e=0;e<=10||f>=0;e++,f--)
{
g=qu(e,f);
if(g==1) h=h+1;
else if(g==2) i=i+1;
else if(g==0) {h=0;i=0;}
if(h>=5) {gotoxy(0,11);printf("黑棋赢了!!\n");}
else if(i>=5) {gotoxy(0,11);printf("白棋赢了!!\n");}
}
}
for(j=0;j<=10;j++)
{
e=j;
for(f=10;f>=0||e>=0;e--,f--)
{
g=qu(e,f);
if(g==1) h=h+1;
else if(g==2) i=i+1;
else if(g==0) {h=0;i=0;}
if(h>=5) {gotoxy(0,11);printf("黑棋赢了!!\n");}
else if(i>=5) {gotoxy(0,11);printf("白棋赢了!!\n");}
}
}
}
return 0;
}