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__
}