#include <bits/stdc++.h>
#include <windows.h>
#define keydown(VK_NONAME) ((GetAsyncKeyState(VK_NONAME)&0x8000)?1:0)
using namespace std;
void win(int);
HWND h=GetForegroundWindow();
int t[25][25],x,y,k,wx[6],wy[6],px[3],n=1;
char a,b;
void clear()
{
HANDLE hStdin=GetStdHandle(STD_INPUT_HANDLE);
DWORD mode;
GetConsoleMode(hStdin,&mode);
mode&=~ENABLE_QUICK_EDIT_MODE;
SetConsoleMode(hStdin,mode);
}
void apush(int X)
{
for (int i=0;i<=24;i++){
for (int j=0;j<=24;j++){
if (i==0 && j==0){
printf(" ");
}
else if (j==0){
printf("%c",char(i+64));
}
else if (i==0){
printf("%c ",char(j+64));
}
else{
if (t[i][j]==0){
if (i==1 && j==1){
printf("┌");
}
if (i==1 && j==24){
printf("┐");
}
if (i==24 && j==1){
printf("└");
}
if (i==24 && j==24){
printf("┘");
}
if (i==1 && j!=1 && j!=24){
printf("┬");
}
if (j==1 && i!=1 && i!=24){
printf("├");
}
if (i==24 && j!=1 && j!=24){
printf("┴");
}
if (j==24 && i!=1 && i!=24){
printf("┤");
}
if (i!=1 && i!=24 && j!=1 && j!=24){
printf("┼");
}
}
else {
if (t[i][j]==1){
printf("○");
}
else {
printf("●");
}
}
}
}
if (i==1){
printf(" 玩家1抠了%d个棋子。",px[1]);
}
if (i==2){
printf(" 玩家2抠了%d个棋子。",px[2]);
}
if (i==4){
printf(" 如果一个玩家抠了20个棋子,");
}
if (i==5){
printf(" 那么他就赢了!");
}
if (i==7 && X!=0){
printf(" 玩家%d连成了五子,所以他可以",X);
}
if (i==8 && X!=0){
printf(" 抠一颗棋子。");
}
if (i!=24){
printf("\n");
}
}
}
void cr()
{
int g,m=1,x3,y3;
for (int j=1;j<=4;j++){
for (int i=0;i<=4;i++){
if (j==1){
x3=x;
y3=y+i;
}
if (j==2){
x3=x+i;
y3=y;
}
if (j==3){
x3=x+i;
y3=y+i;
}
if (j==4){
x3=x+i;
y3=y-i;
}
if (t[x3][y3]==(k%2!=0?1:2)){
g++;
wx[m]=x3;
wy[m]=y3;
m++;
}
else{
break;
}
}
for (int i=-1;i>=-4;i--){
if (j==1){
x3=x;
y3=y+i;
}
if (j==2){
x3=x+i;
y3=y;
}
if (j==3){
x3=x+i;
y3=y+i;
}
if (j==4){
x3=x+i;
y3=y-i;
}
if (t[x3][y3]==(k%2!=0?1:2)){
g++;
wx[m]=x3;
wy[m]=y3;
m++;
}
else{
break;
}
}
if (g>=5){
win(k%2!=0?1:2);
}
g=0;
m=1;
}
}
void win(int p)
{
int x1,y1,n1=1;
for (int i=1;i<=5;i++){
t[wx[i]][wy[i]]=0;
}
px[p]++;
system("cls");
apush(p);
for (int i=1;i<=n;i++){
POINT q;
while (1){
if(keydown(VK_LBUTTON)){
while (1){
if(!keydown(VK_LBUTTON)){
GetCursorPos(&q);
ScreenToClient(h,&q);
break;
}
Sleep(100);
}
break;
}
Sleep(100);
}
y1=(q.x-8)/15.57+1;
x1=q.y/15.57;
if (t[x1][y1]!=0 && t[x1][y1]!=p){
t[x1][y1]=p;
}
else{
n1++;
}
}
}
int main()
{
system("color 34");
while (1){
k++;
apush(0);
if (px[1]>=20){
printf("玩家1赢了!");
break;
}
if (px[2]>=20){
printf("玩家2赢了!");
break;
}
for (int i=1;i<=n;i++){
POINT p;
while (1){
if(keydown(VK_LBUTTON)){
while (1){
if(!keydown(VK_LBUTTON)){
GetCursorPos(&p);
ScreenToClient(h,&p);
break;
}
Sleep(100);
}
break;
}
Sleep(100);
}
y=(p.x-8)/15.57+1;
x=p.y/15.57;
if (t[x][y]==0 && x<=23 && y<=23 && x>=1 && y>=1){
t[x][y]=k%2!=0?1:2;
cr();
}
else{
n++;
}
}
system("cls");
x=0;
y=0;
n=1;
}
}