【我与openGauss的故事系列】基于openGauss的五子棋AI项目

由Gauss松鼠会联合openGauss社区、鲲鹏社区、墨天轮共同举办的【我和openGauss的故事】第四届openGauss技术文章征集活动圆满落幕,现对优秀作品进行逐一分享,同时 【我和openGauss的故事】第五届openGauss技术文章征集活动 正在进行中,欢迎大家积极参与。

1、前言


openGauss是一款全面友好开放的企业级开源关系型数据库,采用木兰宽松许可证v2发行,提供面向多核架构的极致性能、全链路的业务、数据安全、基于AI的调优和高效运维的能力。本文就是采用openGauss设计的一个AI小demo。

2、方案意义


人工智能被广泛用于棋类对弈的主要原因是:

  • 棋类对弈自古以来就被认为是人类智力活动的象征,若人工智能成功达到、甚至高于人类水平,则就代表AI的发展潜力,从而吸引更多研究者关注并投身其中;

  • 棋类很适合作为新AI算法的标杆。棋类游戏规则简洁、输赢都在盘面,适合计算机求解。理论上只要在计算能力和算法上有新的突破,任何新的棋类游戏都有可能得到攻克。而在棋类游戏上的表现也可以直观体现出AI之间计算能力与算法的高低,是促进AI算法发展的有效途径。

就本五子棋智能对弈系统而言,其服务对象为同局域网下的多个终端,讲求联机互动、互相限制、互相博弈,打破了传统二人对弈五子棋规则中,“若无禁手,先手易胜;若为后手,十堵九输”的说法,是AI算法设计、网络通信、数据库等技术的综合应用。

3、架构设计


ebe06295-95ef-4f37-9bba-8ad3b739b2ec.png

其中对弈数据库采用openGauss数据库。

4、 数据表设计


棋盘数据表的表头如图所示:

0ad31d35-0bc4-4d6e-bb7b-5617e5d9ced6.png

为将二维棋盘状态存入数据库中,令棋盘按轴方向展开为一维序列,玩家数据表的表头如图所示:

e40ef93f-f6c7-4df1-8164-2c02b125655d.png

走子数据表的表头如图所示:

9accd6d0-092c-452a-9061-765bd215ed47.png

5、代码结构


如图所示,依据模块化程序设计的基本思想,将整个项目按照功能划分为若干个小程序模块,每个小程序模块完成一个确定的功能,自顶向下、逐步分解、分而治之,各模块相对独立、功能单一、结构清晰。同时,在这些模块之间建立必要的联系,通过模块的互相协作完成整个功能的程序设计。

da87931d-b083-44dd-b2ff-e5cae47f21b2.png

各模块具体设计如下:

  • main.py:启动文件。

  • config.py:变量管理文件。管理所有跨文件的全局变量。

  • settings.py:配置文件。开发环境配置、第三方扩展插件参数配置、数据库的链接路径及其他配置等。

  • apps:主体文件包。其初始化文件包括Flask类的实例创建以及工厂函数。该文件包下设三个子文件包,分别对应架构设计中的三张蓝图。

  • exts:扩展文件包。第三方扩展插件的例化,创建映射对象等。

项目采用高度模块化设计的优点有:

  • 控制了程序设计的复杂性;

  • 提高了代码的重用性;

  • 易于维护和功能扩充;

  • 有利于团队开发等。

6、项目演示


2680ca44-912e-4b21-83c3-59e7072eb238.gif


7、总结


基于openGauss开发AI应用相当方便,也使我进一步掌握了数据库的常用技术,提高工程开发能力和面对未知问题的临场解决能力,对设计、创新、分析水平都有很大的帮助。

本文分享自微信公众号 - openGauss(openGauss)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“ OSC源创计划 ”,欢迎正在阅读的你也加入,一起分享。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

openGauss社区

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值