close

#include<stdio.h>
#include<cstdlib>

void print_form(char **pf, char *sb);
int sb_check(char sb[3][3]);
char computer_think(char sb[3][3]);
char input_pos();

void main(void)
{
    char p;
    char computer_turn = 'X';
    char turn = 'O';
    int k=0;

    char *playform[] = 
    {
        " ? | ? | ? ",
        "---+---+---",
        " ? | ? | ? ",
        "---|---|---",
        " ? | ? | ? " };

    char sb[3][3] = { '1','2','3','4','5','6','7','8','9' };

    

    do {
        
        print_form(playform, (char*)sb);
        
        turn = (turn == 'O') ? 'X':'O';
        if (turn == computer_turn)
            p = computer_think(sb);
        else
            p = input_pos();
        
        ((char*)sb)[(p - '0') - 1] = turn;
        k++;

        
    } while (!sb_check(sb) && k<9 );
    
    print_form(playform, (char*)sb);

    if (k == 9)
        printf("two player pie!");
    else
        printf("[%c] player win!", turn);

    getchar();
    
    
}

void print_form(char ** pf, char * sb)
{
    int k=0;
    
    for (int i = 0; i < 5; i++)
    {
        for (int j = 0; pf[i][j]; j++)
        {
            if (pf[i][j] == '?')
                putchar(sb[k++]);
            else
                putchar(pf[i][j]);
        }
        putchar('\n');
    }
    
}

int sb_check(char sb[3][3])
{
    for (int i = 0; i < 3; i++)
    {
        if (sb[i][0] == sb[i][1] && sb[i][1] == sb[i][2])
            return 1;
    }

    for (int i = 0; i < 3; i++)
    {
        if (sb[0][i] == sb[1][i] && sb[1][i] == sb[2][i])
            return 1;
    }

        if (sb[0][0] == sb[1][1] && sb[1][1] == sb[2][2])
            return 1;
        else if (sb[0][2] == sb[1][1] && sb[1][1] == sb[2][0])
            return 1;
        else
            return 0;
    
}

char computer_think(char sb[3][3])
{
    char p;
    int r;
    printf("computer turn\n");
    for (int i = 0; i < 3; i++)
    {
    
        if (sb[i][0] == sb[i][1] && (sb[i][2] != 'O' && sb[i][2] != 'X')) 
        {
            p = sb[i][2];
            break;
        }
        else if (sb[i][1] == sb[i][2] && (sb[i][0] != 'O' && sb[i][0] != 'X')) 
        {
            p = sb[i][0];
            break;
        }
        else if (sb[i][0] == sb[i][2] && (sb[i][1] != 'O' && sb[i][1] != 'X')) 
        {
            p = sb[i][1];
            break;
        }

        else if (sb[0][i] == sb[1][i] && (sb[2][i] != 'O' && sb[2][i] != 'X')) 
        {
            p = sb[2][i]; break;
        }
        else if (sb[1][i] == sb[2][i] && (sb[0][i] != 'O' && sb[0][i] != 'X')) 
        {
            p = sb[0][i]; break;
        }
        else if (sb[0][i] == sb[2][i] && (sb[1][i] != 'O' && sb[1][i] != 'X'))
        {
            p = sb[1][i]; break;
        }
    
        else if (sb[0][0] == sb[1][1] && (sb[2][2] != 'O' && sb[2][2] != 'X')) 
        {
            p = sb[2][2]; break;
        }
        else if (sb[1][1] == sb[2][2] && (sb[0][0] != 'O' && sb[0][0] != 'X')) 
        {
            p = sb[0][0]; break;
        }
        else if (sb[0][0] == sb[2][2] && (sb[1][1] != 'O' && sb[1][1] != 'X')) 
        {
            p = sb[1][1]; break;
        }
        else if (sb[0][2] == sb[1][1] && (sb[2][0] != 'O' && sb[2][0] != 'X'))
        {
            p = sb[2][0]; break;
        }
        else if (sb[1][1] == sb[2][0] && (sb[0][2] != 'O' && sb[0][2] != 'X')) 
        {
            p = sb[0][2]; break;
        }
        else if (sb[0][2] == sb[2][0] && (sb[1][1] != 'O' && sb[1][1] != 'X'))
        {
            p = sb[1][1]; break;
        }
        else
        {
            r = rand() % 9 + 1;
            while (((char *)sb)[r - 1] == 'O' || ((char *)sb)[r - 1] == 'X')
            {
                r = rand() % 9 + 1;
            }
            p = ((char *)sb)[r - 1];
        
        }
    }
    return p;
}
char input_pos()
{
    char p;
    printf("your turn\n");
    p = getchar();
    getchar();
    return p;
}

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 異想人 的頭像
    異想人

    隨意茶部落

    異想人 發表在 痞客邦 留言(0) 人氣()