前些时候考完试自己编的带有胜负判定的五子棋。

操作方法:WSAD或↑↓←→移动下棋位置,Space或Enter放置。

如果游戏出现bug,欢迎大家在评论区反馈。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <math.h>
#include <algorithm>
#include <conio.h>
#include <windows.h>
using namespace std;
#define fblack() SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE) , BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE)
#define fwhite() SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE) , FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE);
][] , mx =  , my =  , turn =  , nap;
char ch;
void go(int x , int y)
{
    COORD pos = {x , y};
    HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleCursorPosition(hOut , pos);
}
void pmap()
{
    puts("");
    puts("            ┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐");
    puts("            │  │  │  │  │  │  │  │  │  │  │  │  │  │  │");
    puts("            ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤");
    puts("            │  │  │  │  │  │  │  │  │  │  │  │  │  │  │");
    puts("            ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤");
    puts("            │  │  │  │  │  │  │  │  │  │  │  │  │  │  │");
    puts("            ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤");
    puts("            │  │  │  │  │  │  │  │  │  │  │  │  │  │  │");
    puts("            ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤");
    puts("            │  │  │  │  │  │  │  │  │  │  │  │  │  │  │");
    puts("            ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤");
    puts("            │  │  │  │  │  │  │  │  │  │  │  │  │  │  │");
    puts("            ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤");
    puts("            │  │  │  │  │  │  │↘│↙│  │  │  │  │  │  │");
    puts("            ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤");
    puts("            │  │  │  │  │  │  │↗│↖│  │  │  │  │  │  │");
    puts("            ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤");
    puts("            │  │  │  │  │  │  │  │  │  │  │  │  │  │  │");
    puts("            ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤");
    puts("            │  │  │  │  │  │  │  │  │  │  │  │  │  │  │");
    puts("            ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤");
    puts("            │  │  │  │  │  │  │  │  │  │  │  │  │  │  │");
    puts("            ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤");
    puts("            │  │  │  │  │  │  │  │  │  │  │  │  │  │  │");
    puts("            ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤");
    puts("            │  │  │  │  │  │  │  │  │  │  │  │  │  │  │");
    puts("            ├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤");
    puts("            │  │  │  │  │  │  │  │  │  │  │  │  │  │  │");
    puts("            └─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘\n");
}
void movemouse(int ax , int ay , int bx , int by)
{
    go( + ay *  -  , ax *  - );
    printf("  ");
    go( + ay *  -  , ax *  - );
    printf("  ");
    go( + ay *  -  , ax * );
    printf("  ");
    go( + ay *  -  , ax * );
    printf("  ");
    go( + by *  -  , bx *  - );
    printf("↘");
    go( + by *  -  , bx *  - );
    printf("↙");
    go( + by *  -  , bx * );
    printf("↗");
    go( + by *  -  , bx * );
    printf("↖");
    go( , );
}
void changechess(int x , int y , int p)
{
    go( + y *  -  , x *  - );
    )
    {
        fblack();
        printf("●");
    }
    else
    {
        fwhite();
        printf("●");
    }
    map[x][y] = p;
    fblack();
    go( , );
}
bool judge(int lx , int ly , int p)
{
    int x , y , n;
    x = lx;
    y = ly;
    n = ;
     && map[x][y] == p)
    {
        n ++ ;
        x -- ;
    }
    x = lx + ;
    y = ly;
     && map[x][y] == p)
    {
        n ++ ;
        x ++ ;
    }
    )
    {
        ;
    }
    x = lx;
    y = ly;
    n = ;
     && map[x][y] == p)
    {
        n ++ ;
        y -- ;
    }
    x = lx;
    y = ly + ;
     && map[x][y] == p)
    {
        n ++ ;
        y ++ ;
    }
    )
    {
        ;
    }
    x = lx;
    y = ly;
    n = ;
     && y >=  && map[x][y] == p)
    {
        n ++ ;
        x -- ;
        y -- ;
    }
    x = lx + ;
    y = ly + ;
     && y <=  && map[x][y] == p)
    {
        n ++ ;
        x ++ ;
        y ++ ;
    }
    )
    {
        ;
    }
    x = lx;
    y = ly;
    n = ;
     && y <=  && map[x][y] == p)
    {
        n ++ ;
        x -- ;
        y ++ ;
    }
    x = lx + ;
    y = ly - ;
     && y >=  && map[x][y] == p)
    {
        n ++ ;
        x ++ ;
        y -- ;
    }
    )
    {
        ;
    }
    ;
}
int main()
{
    system("color 70");
    system("mode con cols=80 lines=35");
    pmap();
    )
    {
        while(ch = getch())
        {
            )
            {
                ch = getch();
                 && my > )    //l
                {
                    movemouse(mx , my , mx , my - );
                    my -- ;
                }
                 && my < )    //r
                {
                    movemouse(mx , my , mx , my + );
                    my ++ ;
                }
                 && mx > )    //u
                {
                    movemouse(mx , my , mx -  , my);
                    mx -- ;
                }
                 && mx < )    //d
                {
                    movemouse(mx , my , mx +  , my);
                    mx ++ ;
                }
            }
            else if(ch == 'a')    //l
            {
                movemouse(mx , my , mx , my - );
                my -- ;
            }
            else if(ch == 'd')    //r
            {
                movemouse(mx , my , mx , my + );
                my ++ ;
            }
            else if(ch == 'w')    //u
            {
                movemouse(mx , my , mx -  , my);
                mx -- ;
            }
            else if(ch == 's')    //d
            {
                movemouse(mx , my , mx +  , my);
                mx ++ ;
            }
             || ch == )&& !map[mx][my])
            {
                changechess(mx , my , turn);
                nap ++ ;
                break;
            }
        }
        if(judge(mx , my , turn))
        {
            )
            {
                printf("                                    黑方胜!\n\n");
            }
            else
            {
                printf("                                    白方胜!\n\n");
            }
            break;
        }
        )
        {
            printf("                                     平局!\n\n");
            break;
        }
        turn =  - turn;
    }
    Sleep();
    printf("                              ");
    system("pause");
    ;
}
05-11 15:47
查看更多