C语言控制台AI五子棋

程序源码:

cpp 复制代码
#include <windows.h>
#include <conio.h>
#include <stdio.h>
int W = 13, S, M = 0, *m, c = 1, r = 2, z, i, j, k, *p;
int *sum(int *v, int l) {
    return *v - v[l] ? v + l : sum(v + l, l);
}
void down(int v) {
    for (m[v] = r ^= 3, i = 2; j = i % 3 - 1 + i / 3 * W, i < 6; ++i) {
        p = sum(m + v, j), k = (p - sum(m + v, -j)) / j;
        *p || (p[S * r] += 1 << k), p -= k * j, *p || (p[S * r] += 1 << k);
        m[v + S] = m[v + S * 2] = 0, k > 5 && (r ^= 3, r += 4, i = 8);
    }
}
void ai() {
    for (j = k = 0, i = S; i < 3 * S || (k = rand() % k, k || ++k, 0);)
        j == m[i] && ++k, j < m[i] && (j = m[i], k = 1), ++i;
    for (i = S; k && i < 3 * S || (down(i % S), 0);)m[++i] == j && --k;
}
int main() {
    for (W += 2, S = W * W, m = calloc(i = S * 3, 4), srand((int)m); i--;)
        i % W && -~i % W && !(i % S < W || (i + W) % S < W) || (m[i] = -1);
    SetConsoleCursorInfo(GetStdHandle((DWORD)-11), &(CONSOLE_CURSOR_INFO){25});
    for (z = S / 2, system("cls"); r < 4 && c - 27; c = _getch() & 95) {
        c - 87 || m[z - W] + 1 && (z -= W), c - 68 || m[++z] + 1 || --z;
        c - 83 || m[z + W] + 1 && (z += W), c - 65 || m[--z] + 1 || ++z;
        if (!c)M - 2 ? !m[z] && (down(z), r < 4 && M && (ai(), 0)) : ai();
        SetConsoleCursorPosition(GetStdHandle((DWORD)-11), (COORD){0});
        for (i = W; i < S - W; ++i % W || _cprintf("%d\n", i / W - 1))
            SetConsoleTextAttribute(GetStdHandle((DWORD)-11),i - z ? 15 : 175),
                                    m[i] + 1 && printf(". \0○\0●" + m[i] * 3);
        for (i = 1, c - 81 || ++M; ++i < W;)_cprintf(" %c", 95 + i);
        M %= 3, _cprintf("\n%s|", "PvP\0PvE\0EvE" + M * 4);
        _cputs(r & 1 ? "White" : "Black"), r < 4 || _cputs(" win!");
    }
}

**操作方式:**按WASD移动光标,空格下子,Q键切换模式(PvP,PvE,EvE)

运行结果:

相关推荐
木觞清26 分钟前
Python 图像处理:生成美丽的书籍封面
开发语言·python
风_流沙30 分钟前
parquet文件数据格式介绍以及python pandas对parquet常见操作
开发语言·python·pandas
极客代码40 分钟前
深入理解C语言:编译原理
c语言·开发语言·性能优化·编译原理·代码优化
向宇it1 小时前
【从零开始入门unity游戏开发之——unity篇05】unity6基础入门——运行游戏按钮、Game游戏窗口和Project项目窗口介绍
开发语言·游戏·unity·c#·游戏引擎
征途黯然.1 小时前
大模型Agent之CrewAI框架开发指南
开发语言·python
大强的博客1 小时前
《Vue3实战教程》42:Vue3TypeScript 与组合式 API
开发语言·javascript·typescript
TANGLONG2221 小时前
【C++】穿越时光隧道,拾贝史海遗珍,轻启C++入门之钥,解锁程序之奥秘(首卷)
java·c语言·数据结构·c++·redis·python·算法
亲持红叶1 小时前
python schedule库
开发语言·python
尘浮生1 小时前
Java项目实战II基于小程序的驾校管理系统(开发文档+数据库+源码)
java·开发语言·数据库·spring boot·mysql·微信小程序·小程序
山山而川粤1 小时前
酒店管理系统|Java|SSM|VUE| 前后端分离
java·开发语言·后端·学习·mysql