c

C语言练习:五子棋


简单的五子棋练习游戏,利用棋盘实现判断时为了防止边界不能判断,增大了棋盘,这样并不是较好的方法,有待优化。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119

#include<stdlib.h>
int (int a[13][17]);
int check_2(int a[13][17]);
void Print(int a[13][17]);
int main(void)
{
int m,n,i;
int p1,p2;
int Board[13][17];
for(m=0;m<13;m++) //这种操作是为了保证检验棋盘的时候不会超出数组
for(n=0;n<17;n++)
Board[m][n]=0;
m=1;
printf("| | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |n");
while(m<=9)
{
for(i=1;i<=10;i++)
printf("|---");
printf("|n");
printf("| %d |",m);
for(i=1;i<=9;i++)
printf(" |");
printf("n");
m=m+1;
}
printf("|---|---|---|---|---|---|---|---|---|---|n");
while((!(check_1(Board)))&&(!(check_2(Board))))
{
printf("Player_one please choose a placen");
scanf("%d,%d",&p1,&p2);
system("cls");
Board[p1-1][p2+4]=1;
Print(Board);
if(!((!(check_1(Board)))&&(!(check_2(Board)))))
goto final;
printf("Player_two please choose a placen");
scanf("%d,%d",&p1,&p2);
system("cls");
Board[p1-1][p2+4]=2;
Print(Board);
}
final:
if((check_1(Board)))
printf("Player_one win!n");
if((check_2(Board)))
printf("Player_two win!n");
return 0;
}
int (int a[13][17])
{
int sum=0;
int m,n;
for(m=0;m<13;m++)
{
for(n=0;n<17;n++)
{
if(a[m][n]==1)
{
if((a[m+1][n]==1)&&(a[m+2][n]==1)&&(a[m+3][n]==1)&&(a[m+4][n]==1))
sum=1;
if((a[m][n+1]==1)&&(a[m][n+2]==1)&&(a[m][n+3]==1)&&(a[m][n+4]==1))
sum=1;
if((a[m+1][n+1]==1)&&(a[m+2][n+2]==1)&&(a[m+3][n+3]==1)&&(a[m+4][n+4]==1))
sum=1;
if((a[m+1][n-1]==1)&&(a[m+2][n-2]==1)&&(a[m+3][n-3]==1)&&(a[m+4][n-4]==1))
sum=1;
}
}
}
return sum;
}
int check_2(int a[13][17])
{
int sum=0;
int m,n;
for(m=0;m<13;m++)
{
for(n=0;n<17;n++)
{
if(a[m][n]==2)
{
if((a[m+1][n]==2)&&(a[m+2][n]==2)&&(a[m+3][n]==2)&&(a[m+4][n]==2))
sum=1;
if((a[m][n+1]==2)&&(a[m][n+2]==2)&&(a[m][n+3]==2)&&(a[m][n+4]==2))
sum=1;
if((a[m+1][n+1]==2)&&(a[m+2][n+2]==2)&&(a[m+3][n+3]==2)&&(a[m+4][n+4]==2))
sum=1;
if((a[m+1][n-1]==2)&&(a[m+2][n-2]==2)&&(a[m+3][n-3]==2)&&(a[m+4][n-4]==2))
sum=1;
}
}
}
return sum;
}
void Print(int a[13][17])
{
int m=1,i;
printf("| | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |n");
while(m<=9)
{
for(i=1;i<=10;i++)
printf("|---");
printf("|n");
printf("| %d |",m);
for(i=1;i<=9;i++)
{
if(a[m-1][i+4]==1)
printf(" x |");
if(a[m-1][i+4]==2)
printf(" o |");
if(a[m-1][i+4]==0)
printf(" |");
}
printf("n");
m=m+1;
}
printf("|---|---|---|---|---|---|---|---|---|---|n");
}