_龙舞_ 0o缘如风o0
下雨之时天空并不知晓
关注数: 52 粉丝数: 482 发帖数: 14,774 关注贴吧数: 93
【新人】误打误撞写的五子棋不知道为什么运行特别卡 初学C语言,还不太懂,求dalao解答! #include<stdio.h> int qipan[19][19]; int main() { int white=1; int black=1; int i, j; int x, y; int color = 0; for (i = 0; i < 19; i++) for (j = 0; j < 19; j++) qipan[i][j] = 2; while (1) { if (color == 1) printf("白棋请落子:\n"); if (color == 0) printf("黑棋请落子:\n"); scanf_s("%d %d", &x, &y); if (qipan[x - 1][y - 1] != 2) { printf("该位置已有落子或落子位置超出棋盘范围!请重新输入:\n"); continue; } color = (color + 1) % 2; qipan[x - 1][y - 1] = color; for (i = 1; i <= 19; i++) { if (i == 1) { if (qipan[i - 1][0] == 1)//j=1 printf("●"); if (qipan[i - 1][0] == 0)//j=1 printf("○"); if (qipan[i - 1][0] == 2)//j=1 printf("┌"); for (j = 2; j <= 18; j++) { if (qipan[i - 1][j - 1] == 1)//j=1 printf("●"); if (qipan[i - 1][j - 1] == 0)//j=1 printf("○"); if (qipan[i - 1][j - 1] == 2)//j=1 printf("┬"); } if (qipan[i - 1][18] == 1)//j=1 printf("●"); if (qipan[i - 1][18] == 0)//j=1 printf("○"); if (qipan[i - 1][18] == 2)//j=1 printf("┐"); printf("\n"); } if (i <= 18 && i >= 2) { if (qipan[i - 1][0] == 1)//j=1 printf("●"); if (qipan[i - 1][0] == 0)//j=1 printf("○"); if (qipan[i - 1][0] == 2)//j=1 printf("├"); for (j = 2; j <= 18; j++) { if (qipan[i - 1][j - 1] == 1)//j=1 printf("●"); if (qipan[i - 1][j - 1] == 0)//j=1 printf("○"); if (qipan[i - 1][j - 1] == 2)//j=1 printf("┼"); } if (qipan[i - 1][18] == 1)//j=1 printf("●"); if (qipan[i - 1][18] == 0)//j=1 printf("○"); if (qipan[i - 1][18] == 2)//j=1 printf("┤"); printf("\n"); } if (i == 19) { if (qipan[i - 1][0] == 1)//j=1 printf("●"); if (qipan[i - 1][0] == 0)//j=1 printf("○"); if (qipan[i - 1][0] == 2)//j=1 printf("└"); for (j = 2; j <= 18; j++) { if (qipan[i - 1][j - 1] == 1)//j=1 printf("●"); if (qipan[i - 1][j - 1] == 0)//j=1 printf("○"); if (qipan[i - 1][j - 1] == 2)//j=1 printf("┴"); } if (qipan[i - 1][18] == 1)//j=1 printf("●"); if (qipan[i - 1][18] == 0)//j=1 printf("○"); if (qipan[i - 1][18] == 2)//j=1 printf("┘"); printf("\n"); } } if (color == 1) { for (i = x - 2; i >= -1; i--)//统计同行左侧连续同样棋子个数。 if (qipan[i][y - 1] == 1) black++; else break; for (i = x; i < 19; i++)//统计同行右侧连续同样棋子个数。 if (qipan[i][y - 1] == 1) black++; else break; } if (black >= 5) break; black = 1; if (color == 1) { for (i = y; i < 19; i++)//统计同上侧连续同样棋子个数。 if (qipan[x - 1][i] == 1) black++; else break; for (i = y - 2; i >= -1; i--)//统计同行下侧连续同样棋子个数。 if (qipan[x - 1][i] == 1) black++; else break; } if (black >= 5) break; black = 1; if (color == 0) { for (i = x - 2; i >= -1; i--)//统计同行左侧连续同样棋子个数。 if (qipan[i][y - 1] == 0) white++; else break; for (i = x; i < 19; i++)//统计同行右侧连续同样棋子个数。 if (qipan[i][y - 1] == 0) white++; else break; } if (white >= 5) break; white = 1; if (color == 0) { for (i = y; i < 19; i++)//统计同上侧连续同样棋子个数。 if (qipan[x - 1][i] == 0) white++; else break; for (i = y - 2; i >= -1; i--)//统计同行下侧连续同样棋子个数。 if (qipan[x - 1][i] == 0) white++; else break; } if (white >= 5) break; white = 1; if (color == 1) { for (i = x - 2; i >= -1; i--) for (j = y; j <19; j++) { if (qipan[i][j] == 1) black++; else break; } for (i = x; i < 19; i++) for (j = y - 2; j >= -1; j++) if (qipan[i][j] == 1) black++; else break; } if (black >= 5) break; black = 1; if (color == 1) { for (i = x; i < 19; i++) for (j = y; j < 19; j++) { if (qipan[i][j] == 1) black++; else break; } for(i = x - 2; i >= -1;i--) for (j = y - 2; j >= -1; j--) { if (qipan[i][j] == 1) black++; else break; } if (black >= 5) break; black = 1; } if (color == 1) { for (i = x; i < 19; i++) for (j = y - 2; j >= -1; j--) { if (qipan[i][j] == 1) black++; else break; } for (i = x - 2; x >= -1; x++) for (j = y; j < 19; j++) { if (qipan[i][j] == 1) black++; else break; } } if (black >= 5) break; black = 1; if (color == 0) { for (i = x - 2; i >= -1; i--) for (j = y; j <19; j++) { if (qipan[i][j] == 0) white++; else break; } for (i = x; i < 19; i++) for (j = y - 2; j >= -1; j++) if (qipan[i][j] == 0) white++; else break; } if (white >= 5) break; white = 1; if (color == 0) { for (i = x; i < 19; i++) for (j = y; j < 19; j++) { if (qipan[i][j] == 0) white++; else break; } for (i = x - 2; i >= -1; i--) for (j = y - 2; j >= -1; j--) { if (qipan[i][j] == 0) white++; else break; } if (white >= 5) break; white = 1; } if (color == 0) { for (i = x; i < 19; i++) for (j = y - 2; j >= -1; j--) { if (qipan[i][j] == 0) white++; else break; } for (i = x - 2; x >= -1; x++) for (j = y; j < 19; j++) { if (qipan[i][j] == 0) white++; else break; } } if (white >= 5) break; white = 1; } if (white == 5) printf("白棋获胜!!!\n"); if (black == 5) printf("黑棋获胜!!!\n"); }
首页 1 2 3 下一页