#include <stdio.h>
#include <string.h>
int checkwin(char (*p)[10]){
int i, j;
for(i = 0; i < 10; i++){
for(j = 0; j < 10; j++){
//printf("%c", *(*(p+i)+j));
if(p[i][j]=='@'){
//横向判断
if (j < 6 && p[i][j+1]=='@' && p[i][j+2]=='@' && p[i][j+3]=='@' && p[i][j+4]=='@') {
printf("@ win!");
}
//纵向判断
if (i < 6 && p[i+1][j]=='@' && p[i+2][j]=='@' && p[i+3][j]=='@' && p[i+4][j]=='@') {
printf("@ win!");
}
//左斜向判断
if (i < 6 && j > 3 && p[i+1][j-1]=='@' && p[i+2][j-2]=='@' && p[i+3][j-3]=='@' && p[i+4][j-4]=='@') {
printf("@ win!");
}
//左斜向判断
if (i < 6 && j < 6 && p[i+1][j+1]=='@' && p[i+2][j+2]=='@' && p[i+3][j+3]=='@' && p[i+4][j+4]=='@') {
printf("@ win!");
}
} else if (p[i][j]=='#') {
//横向判断
if (j < 6 && p[i][j+1]=='#' && p[i][j+2]=='#' && p[i][j+3]=='#' && p[i][j+4]=='#') {
printf("# win!");
}
//纵向判断
if (i < 6 && p[i+1][j]=='#' && p[i+2][j]=='#' && p[i+3][j]=='#' && p[i+4][j]=='#') {
printf("# win!");
}
//左斜向判断
if (i < 6 && j > 3 && p[i+1][j-1]=='#' && p[i+2][j-2]=='#' && p[i+3][j-3]=='#' && p[i+4][j-4]=='#') {
printf("# win!");
}
//左斜向判断
if (i < 6 && j < 6 && p[i+1][j+1]=='#' && p[i+2][j+2]=='#' && p[i+3][j+3]=='#' && p[i+4][j+4]=='#') {
printf("# win!");
}
}
}
}
return 0;
}
int main(void)
{
char chessbd[10][10];
int x, y;
int i, j;
int b, tipflag;
char tips[60];
for(i = 0; i < 10; i++){
for(j = 0; j < 10; j++){
chessbd[i][j] = '*';
}
}
checkwin(chessbd);
b = 1;
tipflag = 0;
while(1){
system("clear");
for (i = 0; i < 10; i++){
for (j = 0; j < 10; j++){
printf("%c", chessbd[i][j]);
}
printf("\n");
}
checkwin(chessbd);
if(tipflag){
printf("%s", tips);
}
scanf("%d%d", &x, &y);
if (x > 10 || y > 10 || x < 0 || y < 0) {
tipflag = 1;
strcpy(tips, "out of bounds! please enter again!\n");
} else if(chessbd[x-1][y-1] != '*') {
tipflag = 1;
strcpy(tips, "exist! please enter again!\n");
} else {
tipflag = 0;
if (b){
chessbd[x-1][y-1] = '@';
} else {
chessbd[x-1][y-1] = '#';
}
b = !b;
// system("clear");
}
}
return 0;
}