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

操作方法: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");
    ;
}

【GXZ的原创】C++小游戏——五子棋的更多相关文章

  1. 原创跑酷小游戏《Cube Duck Run》 - - 方块鸭快跑

    自从unity5出来才开始关注unity,业余时间尝试做了个小游戏: <方块鸭快跑> (Cube Duck Run) 像素风,3d视角,色彩明快,有无尽和关卡两种模式. 应用连接: goo ...

  2. c++小游戏--五子棋

    大家好,我是芝麻狐! 这是我自制的小游戏,目前仅支持devc++. 如果你没有c++软件, 请打开网站GDB online Debugger | Compiler - Code, Compile, R ...

  3. c++小游戏——五子棋

    #include<iostream> #include<iomanip> #include<cstring> using namespace std; const ...

  4. 介绍一款Android小游戏--交互式人机对战五子棋

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6589025 学习Android系统开发之余,编 ...

  5. js小游戏:五子棋

    使用纯js的小游戏,五子棋 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...

  6. 小游戏——js+h5[canvas]+cs3制作【五子棋】小游戏

    五子棋小游戏学习—— 有一个问题是,棋盘线的颜色,在canvas中,明明设置了灰色,但在我的预览中还是黑色的,很重的颜色. 以下是复刻的源码: <!DOCTYPE html> <ht ...

  7. Java五子棋小游戏(控制台纯Ai算法)

    Java五子棋小游戏(控制台纯Ai算法) 继续之前的那个五子棋程序 修复了一些已知的小Bug 这里是之前的五子棋程序 原文链接 修复了一些算法缺陷 本次增加了AI算法 可以人机对战 也可以Ai对Ai看 ...

  8. 基于FPGA的飞机的小游戏

    基于FPGA的飞机的小游戏 实验原理 该实验主要分为4个模块,采用至上而下的设计方法进行设计.由50M的晶振电路提供时钟源,VGA显示控制模块.图形显示控制模块.移动模块的时钟为25M,由时钟分频电路 ...

  9. 12岁的少年教你用Python做小游戏

    首页 资讯 文章 频道 资源 小组 相亲 登录 注册       首页 最新文章 经典回顾 开发 设计 IT技术 职场 业界 极客 创业 访谈 在国外 - 导航条 - 首页 最新文章 经典回顾 开发 ...

随机推荐

  1. 加州大学伯克利分校Stat2.3x Inference 统计推断学习笔记: Section 5 Window to a Wider World

    Stat2.3x Inference(统计推断)课程由加州大学伯克利分校(University of California, Berkeley)于2014年在edX平台讲授. PDF笔记下载(Acad ...

  2. POJ 1804 Brainman(归并排序)

    传送门 Description Background Raymond Babbitt drives his brother Charlie mad. Recently Raymond counted ...

  3. HTML5学习总结-06 WebWorker

    一 WebWorkder 它允许开发人员编写能够长时间运行而不被用户所中断的后台程序,去执行事务或者逻辑,并同时保证页面对用户的响应.简而言之,就是允许JavaScript创建多个线程,但是子线程完全 ...

  4. mysql中max_allowed_packet参数的配置方法(避免大数据写入或者更新失败)

    修改方法 1.修改配置文件 可以编辑my.cnf来修改(windows下my.ini),在[mysqld]段或者mysql的server配置段进行修改. 代码如下: max_allowed_packe ...

  5. 机器学习笔记--KNN算法2-实战部分

    本文申明:本系列的所有实验数据都是来自[美]Peter Harrington 写的<Machine Learning in Action>这本书,侵删. 一案例导入:玛利亚小姐最近寂寞了, ...

  6. 机器学习笔记--KNN算法1

    前言 Hello ,everyone. 我是小花.大四毕业,留在学校有点事情,就在这里和大家吹吹我们的狐朋狗友算法---KNN算法,为什么叫狐朋狗友算法呢,在这里我先卖个关子,且听我慢慢道来. 一 K ...

  7. 利用WSCF进行契约先行的Web Services开发

    http://www.cnblogs.com/goody9807/archive/2007/06/05/772107.html 什么是契约先行(Contract-First)? 如果说一个新的软件开发 ...

  8. accept()

    在一个套接口接受一个连接.accept()是c语言中网络编程的重要的函数,windows系统在#include<winsock.h> ,而linux系统在#include <sys/ ...

  9. Windows Platform Predefined Macros

    https://msdn.microsoft.com/en-us/library/b0084kay.aspx

  10. js数字、字符串、数组之间的转化

    1.数组转字符串 var a, b; a = ,,,,); b = a.join("-"); 2.字符串转数组 var s = "abc,abcd,aaa"; ...