Submission
Status:
--------------------
Score: 0
User: KhunKK9722
Problemset: Othello
Language: cpp
Time: 0.002 second
Submitted On: 2025-03-14 16:35:34
#include <stdio.h>
char board[8][8] = {};
int x, y; // position input
int bw = 0;
int difx, dify;
int Bcount=0;
int Wcount=0;
int check(int i, int j, char checkbw, char oppbw, int difxi, int difyj, int loop)
{
loop++;
if (board[i][j] == checkbw)
{
// printf("detected board[%d][%d]; procced\n",i,j);
check(i + difxi, j + difyj, checkbw, oppbw, difxi, difyj, loop);
}
else if (loop > 1 && board[i][j] == oppbw)
{
// printf("END\n");
for (int k = 1; k <= loop; k++)
{
board[i - k * difxi][j - k * difyj] = oppbw;
// printf("replace board[%d][%d]\n",i + k * difxi, j + k * difyj);
}
}
else return 0;
return 0;
}
int main()
{
for (int i = 0; i < 8; i++)
for (int j = 0; j < 8; j++)
scanf("%c", &board[j][i]);
while (y != -1 && x != -1)
{
scanf("%d %d", &y, &x);
if (y == -1 && x == -1)
break;
if (bw % 2)
{
if (board[x][y] == '_')
board[x][y] = 'W';
else
break;
for (int i = -1; i < 2; i++)
{
for (int j = -1; j < 2; j++)
{
check(x+i, y+j, 'B', 'W', i, j, 0);
}
}
// printf("WHITE\n");
}
else
{
if (board[x][y] == '_')
board[x][y] = 'B';
else
break;
for (int i = -1; i < 2; i++)
{
for (int j = -1; j < 2; j++)
{
check(x+i, y+j, 'W', 'B', i, j, 0);
}
}
// printf("BLACK\n");
}
bw++;
// for (int i = 0; i < 8; i++)
// {
// for (int j = 0; j < 8; j++)
// printf("%c", board[j][i]);
// printf("\n");
// }
// printf("\n\n");
}
for (int i = 0; i < 8; i++)
{
for (int j = 0; j < 8; j++){
printf("%c", board[j][i]);
if(board[j][i]=='B') Bcount++;
if(board[j][i]=='W') Wcount++;
}
printf("\n");
}
if(Bcount>Wcount) printf("black wins");
else if (Bcount<Wcount) printf("white wins");
else printf("draw");
// BBW_BBBW___WWW__WBW_____WW_WB_WBW_WBW_WB_BB_W_WB_BBWW__W_B_B_B__
}