#include<bits/stdc++.h>
using namespace std;
char chess_board[9][9];
int y,z;
int stop(int x)
{
int i,j,k,l;
int a;
for(i = 0;i < 10 - x;i ++)
{
for(j = 0;j < 9;j ++)
{
if(chess_board[i][j] != -1)
{
a = chess_board[i][j];
for(k = 0;k < x;k ++)
{
if(chess_board[i][j+k] == a) continue;
else break;
}
if(k >= x)
{
y = i;
z = j + k;
return 2;
}
j = j + k;
}
}
}
for(j = 0;j < 10 - x;j ++)
{
for(i = 0;i < 9;i ++)
{
if(chess_board[i][j] != -1)
{
a = chess_board[i][j];
for(k = 0;k < x;k ++)
{
if(chess_board[i+k][j] == a) continue;
else break;
}
if(k >= x)
{
y = i + k;
z = j;
return 3;
}
i = i + k;
}
}
}
return 0;
}
int main()
{
int i,j;
for(i = 0;i < 9;i ++)
for(j = 0;j < 9;j ++) chess_board[i][j] = -1;
while(1)
{
scanf("%d,%d",&j,&i);
chess_board[i][j] = 0;
if(stop(5) == 2 || stop(5) == 3)
{
if(chess_board[y][z] == 0) cout << "玩家胜利" << endl;
if(chess_board[y][z] == 1) cout << "电脑胜利" << endl;
break;
}
for(i = 0;i < 9;i ++)
{
for(j = 0;j < 9;j ++)
{
if(chess_board[i][j] == -1) break;
else continue;
}
}
if(i == 9 && j == 9)
{
cout << "平局" << endl;
break;
}
if(i > 8 || j > 8)
{
for(i = 0;i < 9;i ++)
{
for(j = 0;j < 9;j ++) cout << chess_board[i][j];
cout << endl;
}
continue;
}
if(stop(3) == 2)
{
chess_board[y+1][z] = 1;
cout << z << ',' << y + 1 << endl;
}
else if(stop(3) == 3)
{
chess_board[y][z+1] = 1;
cout << z + 1 << ',' << y << endl;
}
else
{
int a[4];
if(chess_board[4][4] == -1)
{
chess_board[4][4] = 1;
cout << "4,4" << endl;
}
else
{
while(1)
{
i = rand() % 9;
j = rand() % 9;
if(chess_board[i][j] == -1)
{
cout << i << ',' << j << endl;
break;
}
}
}
}
}
return 0;
}
一个五子棋的代码,编译通过了,但每次运行的时候都只输出几个a,什么原因啊……
using namespace std;
char chess_board[9][9];
int y,z;
int stop(int x)
{
int i,j,k,l;
int a;
for(i = 0;i < 10 - x;i ++)
{
for(j = 0;j < 9;j ++)
{
if(chess_board[i][j] != -1)
{
a = chess_board[i][j];
for(k = 0;k < x;k ++)
{
if(chess_board[i][j+k] == a) continue;
else break;
}
if(k >= x)
{
y = i;
z = j + k;
return 2;
}
j = j + k;
}
}
}
for(j = 0;j < 10 - x;j ++)
{
for(i = 0;i < 9;i ++)
{
if(chess_board[i][j] != -1)
{
a = chess_board[i][j];
for(k = 0;k < x;k ++)
{
if(chess_board[i+k][j] == a) continue;
else break;
}
if(k >= x)
{
y = i + k;
z = j;
return 3;
}
i = i + k;
}
}
}
return 0;
}
int main()
{
int i,j;
for(i = 0;i < 9;i ++)
for(j = 0;j < 9;j ++) chess_board[i][j] = -1;
while(1)
{
scanf("%d,%d",&j,&i);
chess_board[i][j] = 0;
if(stop(5) == 2 || stop(5) == 3)
{
if(chess_board[y][z] == 0) cout << "玩家胜利" << endl;
if(chess_board[y][z] == 1) cout << "电脑胜利" << endl;
break;
}
for(i = 0;i < 9;i ++)
{
for(j = 0;j < 9;j ++)
{
if(chess_board[i][j] == -1) break;
else continue;
}
}
if(i == 9 && j == 9)
{
cout << "平局" << endl;
break;
}
if(i > 8 || j > 8)
{
for(i = 0;i < 9;i ++)
{
for(j = 0;j < 9;j ++) cout << chess_board[i][j];
cout << endl;
}
continue;
}
if(stop(3) == 2)
{
chess_board[y+1][z] = 1;
cout << z << ',' << y + 1 << endl;
}
else if(stop(3) == 3)
{
chess_board[y][z+1] = 1;
cout << z + 1 << ',' << y << endl;
}
else
{
int a[4];
if(chess_board[4][4] == -1)
{
chess_board[4][4] = 1;
cout << "4,4" << endl;
}
else
{
while(1)
{
i = rand() % 9;
j = rand() % 9;
if(chess_board[i][j] == -1)
{
cout << i << ',' << j << endl;
break;
}
}
}
}
}
return 0;
}
一个五子棋的代码,编译通过了,但每次运行的时候都只输出几个a,什么原因啊……