自制井字棋

· · 个人记录

#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
int n,n1,n2,n3,n4,n5,n6,n7,n8,n9,m[5][5];
void p()
{
    for(int i=1;i<=7;i++)
    cout<<'-';
    cout<<endl;

    for(int i=1;i<=3;i++)
    {
        cout<<'|';
        if(!m[1][i])cout<<' ';
        if(m[1][i]==1)cout<<'o';
        if(m[1][i]==2)cout<<'x';
    }
    cout<<'|'<<endl;

    for(int i=1;i<=7;i++)
    cout<<'-';
    cout<<endl;

    for(int i=1;i<=3;i++)
    {
        cout<<'|';
        if(!m[2][i])cout<<' ';
        if(m[2][i]==1)cout<<'o';
        if(m[2][i]==2)cout<<'x';
    }
    cout<<'|'<<endl;

    for(int i=1;i<=7;i++)
    cout<<'-';
    cout<<endl;

    for(int i=1;i<=3;i++)
    {
        cout<<'|';
        if(!m[3][i])cout<<' ';
        if(m[3][i]==1)cout<<'o';
        if(m[3][i]==2)cout<<'x';
    }
    cout<<'|'<<endl;

    for(int i=1;i<=7;i++)
    cout<<'-';
    cout<<endl;

}
void s()
{
    cout<<endl<<"              井字棋5.0";
    cout<<endl<<"--------------华丽的分割线--------------";
    Sleep(1000);
    system("cls");
     cout<<"高难度井字棋";
     cout<<endl;
     Sleep(1000);
     cout<<"制作人:";

     cout<<"梁彦伦";
     Sleep(500);
      system("cls");
      cout<<"先手后手?"<<endl<<"先手输1,后手输0";
    cin>>n;
    memset(m,0,sizeof(m));
    cout<<endl<<"输入x行y列";
    Sleep(500);
    cout<<"开始!"; 
    system("cls");

    system("mode con cols=15 lines=8");
    system("color ad");
    p();
    for(int i=0;i<=4;i++)
    for(int j=0;j<=4;j++)
    {
        if(i==0||i==4||j==0||j==4)
        m[i][j]=3;
    }
}
void weixian()
{
    n3=n4=0;
    if(m[1][2]==1&&m[1][3]==1&&m[1][1]==0
    ||m[2][2]==1&&m[3][3]==1&&m[1][1]==0
    ||m[2][1]==1&&m[3][1]==1&&m[1][1]==0)
    {
        n3=1;n4=1;return;
    }
    if(m[1][2]==1&&m[1][1]==1&&m[1][3]==0
    ||m[2][2]==1&&m[3][1]==1&&m[1][3]==0
    ||m[2][3]==1&&m[3][3]==1&&m[1][3]==0)
    {
        n3=1;n4=3;return;
    }
    if(m[3][2]==1&&m[3][3]==1&&m[3][1]==0
    ||m[2][2]==1&&m[1][3]==1&&m[3][1]==0
    ||m[2][1]==1&&m[1][1]==1&&m[3][1]==0)
    {
        n3=3;n4=1;return;
    }
    if(m[3][2]==1&&m[3][1]==1&&m[3][3]==0
    ||m[2][2]==1&&m[1][1]==1&&m[3][3]==0
    ||m[2][3]==1&&m[1][3]==1&&m[3][3]==0)
    {
        n3=3;n4=3;return;
    }
    if(m[1][3]==1&&m[1][1]==1&&m[1][2]==0
    ||m[2][2]==1&&m[3][2]==1&&m[1][2]==0)
    {
        n3=1;n4=2;return;
    }
    if(m[3][3]==1&&m[3][1]==1&&m[3][2]==0
    ||m[1][2]==1&&m[2][2]==1&&m[3][2]==0)
    {
        n3=3;n4=2;return;
    }
    if(m[2][3]==1&&m[2][2]==1&&m[2][1]==0
    ||m[1][1]==1&&m[3][1]==1&&m[2][1]==0)
    {
        n3=2;n4=1;return;
    }
    if(m[3][3]==1&&m[1][3]==1&&m[2][3]==0
    ||m[2][1]==1&&m[2][2]==1&&m[2][3]==0)
    {
        n3=2;n4=3;return;
    }
    if(m[2][1]==1&&m[2][3]==1&&m[2][2]==0
    ||m[3][2]==1&&m[1][2]==1&&m[2][2]==0
    ||m[1][1]==1&&m[3][3]==1&&m[2][2]==0
    ||m[3][1]==1&&m[1][3]==1&&m[2][2]==0)
    {
        n3=2;n4=2;return;
    }
}
int main()
{
    a2:;
    system("mode con cols=40 lines=10");
    system("color f0");
    s();
    for(int i=1;i<=9;i++)
    {
        if((n==1&&i%2)||(n==0&&i%2==0))
        {
            a1:;
            cin>>n1>>n2;
            if(n1>3||n2>3||n1<1||n2<1||m[n1][n2])
            {
                cout<<"不可以乱输!";
                goto a1;
            }
            m[n1][n2]=1;
            weixian();
            if(n3&&n4)
            {
                i++;
                m[n3][n4]=2;
            }
        }
        else
        {
            if(!m[2][2])
            {
                m[2][2]=2;
            }
            else
            {
                if(!m[1][3])
            {
                m[1][3]=2;
            }
            else
            {
                if(!m[3][1])
                {
                    m[3][1]=2;
                }
                else
                {
                    if(!m[1][1])
                    {
                        m[1][1]=2;
                    }
                        else
                        if(!m[3][3])
                        {
                            m[3][3]=2;
                         }else
            {
                                if(!m[1][2])
                                {
                                m[1][2]=2;
                                }
                else
                {
                if(!m[3][2])
                {
                    m[3][2]=2;
                }
                else
                    {
                    if(!m[2][1])
                    {
                        m[2][1]=2;
                    }
                        else
                        if(!m[2][3])
                        {
                            m[2][3]=2;
                        }
                    }   
                }   
            }
                        }
                    }   
                }   
            }   

        system("cls");
        p();
        Sleep(1000);
        n3=n4=0;
        if(m[1][2]==1&&m[1][3]==1&&m[1][1]==1
        ||m[2][2]==1&&m[3][3]==1&&m[1][1]==1
        ||m[2][1]==1&&m[3][1]==1&&m[1][1]==1)
        {
            n3=1;n4=1;
        }
        if(m[1][2]==1&&m[1][1]==1&&m[1][3]==1
        ||m[2][2]==1&&m[3][1]==1&&m[1][3]==1
        ||m[2][3]==1&&m[3][3]==1&&m[1][3]==1)
        {
            n3=1;n4=3;
        }
        if(m[3][2]==1&&m[3][3]==1&&m[3][1]==1
        ||m[2][2]==1&&m[1][3]==1&&m[3][1]==1
        ||m[2][1]==1&&m[1][1]==1&&m[3][1]==1)
        {
            n3=3;n4=1;
        }
        if(m[3][2]==1&&m[3][1]==1&&m[3][3]==1
        ||m[2][2]==1&&m[1][1]==1&&m[3][3]==1
        ||m[2][3]==1&&m[1][3]==1&&m[3][3]==1)
        {
            n3=3;n4=3;
        }
        if(m[1][3]==1&&m[1][1]==1&&m[1][2]==1
        ||m[2][2]==1&&m[3][2]==1&&m[1][2]==1)
        {
            n3=1;n4=2;
        }
        if(m[3][3]==1&&m[3][1]==1&&m[3][2]==1
        ||m[1][2]==1&&m[3][2]==1&&m[3][2]==1)
        {
            n3=3;n4=2;
        }
        if(m[2][3]==1&&m[2][1]==1&&m[2][1]==1
        ||m[1][2]==1&&m[3][2]==1&&m[2][1]==1)
        {
            n3=2;n4=1;
        }
        if(m[3][3]==1&&m[1][3]==1&&m[2][3]==1
        ||m[2][1]==1&&m[2][2]==1&&m[2][3]==1)
        {
            n3=2;n4=3;
        }
        if(m[2][1]==1&&m[2][3]==1&&m[2][2]==1
        ||m[3][2]==1&&m[1][2]==1&&m[2][2]==1
        ||m[1][1]==1&&m[3][3]==1&&m[2][2]==1
        ||m[3][1]==1&&m[1][3]==1&&m[2][2]==1)
            n3=2;n4=2;      
            if(n3&&n4)
            {
                Sleep(1000);
                system("cls");
                cout<<"你赢了!";
                Sleep(1000);
                system("cls");
                goto a2; 
            }
        n3=n4=0;
        if(m[1][2]==2&&m[1][3]==2&&m[1][1]==2
        ||m[2][2]==2&&m[3][3]==2&&m[1][1]==2
        ||m[2][1]==2&&m[3][1]==2&&m[1][1]==2)
        {
            n3=1;n4=1;
        }
        if(m[1][2]==2&&m[1][1]==2&&m[1][3]==2
        ||m[2][2]==2&&m[3][1]==2&&m[1][3]==2
        ||m[2][3]==2&&m[3][3]==2&&m[1][3]==2)
        {
            n3=1;n4=3;
        }
        if(m[3][2]==2&&m[3][3]==2&&m[3][1]==2
        ||m[2][2]==2&&m[1][3]==2&&m[3][1]==2
        ||m[2][1]==2&&m[1][1]==2&&m[3][1]==2)
        {
            n3=3;n4=1;
        }
        if(m[3][2]==2&&m[3][1]==2&&m[3][3]==2
        ||m[2][2]==2&&m[1][1]==2&&m[3][3]==2
        ||m[2][3]==2&&m[1][3]==2&&m[3][3]==2)
        {
            n3=3;n4=3;
        }
        if(m[1][3]==2&&m[1][1]==2&&m[1][2]==2
        ||m[2][2]==2&&m[3][2]==2&&m[1][2]==2)
        {
            n3=1;n4=2;
        }
        if(m[3][3]==2&&m[3][1]==2&&m[3][2]==2
        ||m[1][2]==2&&m[3][2]==2&&m[3][2]==2)
        {
            n3=3;n4=2;
        }
        if(m[2][3]==2&&m[2][1]==2&&m[2][1]==2
        ||m[1][2]==2&&m[3][2]==2&&m[2][1]==2)
        {
            n3=2;n4=1;
        }
        if(m[3][3]==2&&m[1][3]==2&&m[2][3]==2
        ||m[2][1]==2&&m[2][2]==2&&m[2][3]==2)
        {
            n3=2;n4=3;
        }
        if(m[2][1]==2&&m[2][3]==2&&m[2][2]==2
        ||m[3][2]==2&&m[1][2]==2&&m[2][2]==2
        ||m[1][1]==2&&m[3][3]==2&&m[2][2]==2
        ||m[3][1]==2&&m[1][3]==2&&m[2][2]==2)
            n3=2;n4=2;      
            if(n3&&n4)
            {
                Sleep(1000);
                system("cls");
                cout<<"你输了!";
                Sleep(1000);
                system("cls");
                goto a2; 
            }   
    }
    Sleep(1000);
    cout<<"平局,不错!";
    Sleep(1000);
    system("cls");
    goto a2; 
    return 0;
}