GoBang

使用Qt5.7.0完成的五子棋小软件,支持人人对战,人机对战,局域网联机对战

学习Qt后的一个练手项目,完成自己曾经在命令行下的五子棋的升华^_^

人机对战使用基于评分表的策略来完成电脑下子,算不上AI吧。。但是电脑的棋力还是很高的(至少我败多胜少)。这个评分表的来自onezeros的博客

评估当前棋局中,哪个位置的得分最高。五子棋要赢,必然要有五个棋子在一起成线,那么我们就可以计算棋盘中每一个五格相连的线,一下称之为五元组。一般情况(包括专业五子棋)下棋盘是15*15的。那么应该是572个五元组。同时,针对五元组中黑子和白子的数量(可以不考虑相对位置)的不同,给该五元组评不同的分。然后每一个位置的得分就是包含这个位置的所有五元组的得分之和。

评分表如下,是基于电脑黑棋,电脑白棋将评分表反过来即可

// tuple is empty
Blank,
// tuple contains a black chess
B,
// tuple contains two black chesses
BB,
// tuple contains three black chesses
BBB,
// tuple contains four black chesses
BBBB,
// tuple contains a white chess
W,
// tuple contains two white chesses
WW,
// tuple contains three white chesses
WWW,
// tuple contains four white chesses
WWWW,
// tuple does not exist
Virtual,
// tuple contains at least one black and at least one white
Polluted  tupleScoreTable[0] = 7;
tupleScoreTable[1] = 35;
tupleScoreTable[2] = 800;
tupleScoreTable[3] = 15000;
tupleScoreTable[4] = 800000;
tupleScoreTable[5] = 15;
tupleScoreTable[6] = 400;
tupleScoreTable[7] = 1800;
tupleScoreTable[8] = 100000;
tupleScoreTable[9] = 0;
tupleScoreTable[10] = 0;  

这种人机AI实现还是很简单的,但是这个电脑的棋力还是很强的。当然效果同极大极小值搜索中应用alpha-beta剪枝这种方法去实现五子棋AI还是稍差的。

同时在无禁手黑棋先行的情况下,这个评测表对于电脑白棋的棋力会稍弱一些

局域网联机对战使用的QUdp实现,当时的想法是允许观战,同时右下角形成一个聊天室,所以采用QUdp来实现,每当局域网中一个客户端进入对战页面就会发出广播,相当于加入聊天室

人人对战就没什么好说的了,每个人每局限定为5分钟时间

总的功能已经完成,但还有些小细节和流程没处理就给烂尾了。。。






有兴趣的可以查看下源码 https://github.com/BENULL/GoBang

Qt实现的局域网对战五子棋相关推荐

  1. Python五子棋小游戏源代码,支持人机对战和局域网对战两模式

    Python五子棋小游戏源代码,支持人机对战和局域网对战两模式,程序运行截图: 核心程序代码 WuZi.py ''' Function:五子棋小游戏-支持人机和局域网对战 Author:Charles ...

  2. QT5/C++项目:基于QT的跨平台网络对战象棋(三)(推荐★★★★)

    QT5/C++项目:基于QT的跨平台网络对战象棋(三)(推荐★★★★) 文章目录 QT5/C++项目:基于QT的跨平台网络对战象棋(三)(推荐★★★★) 本篇副标题: 本篇博客讲了什么or解决了什么问 ...

  3. 借助实时数据推送快速制作在线对战五子棋小游戏丨实战

    1 项目概述 游戏开发,尤其是微信小游戏开发,是最近几年比较热门的话题. 本次「云开发」公开课,将通过实战「在线对战五子棋」,一步步带领大家,在不借助后端的情况下,利用「小程序 ✖ 云开发」,独立完成 ...

  4. 基于Qt的P2P局域网聊天及文件传送软件设计

    基于Qt的P2P局域网聊天及文件传送软件设计 zouxy09@qq.com http://blog.csdn.net/zouxy09         这是我的<通信网络>的课程设计作业,之 ...

  5. Java局域网对战游戏、天气预报项目

    功能 1.天气预报 2.局域网对战 展示  java学习群669823128 部分源码 package game.weather;import java.util.HashMap;public cla ...

  6. 网络对战五子棋(来一起PK鸭)

    网络对战五子棋(来一起PK鸭) 一.本地调用和RPC调用的区别 首先了解一下RPC~ RPC主要是解决了两个问题: 解决了分布式系统中,服务之间的调用问题 尤其是在远程调用的时候,可以让调用者感受不到 ...

  7. 400行代码实现双人对战五子棋(适合新手入门)

    400行代码实现双人对战五子棋(适合新手入门) 跟上一篇博客一样,都是看了慕课网的视频之后写的学习记录,记录一下实现的思路,大部分内容比较简单,但也从中学到了很多东西. 按惯例首先看一下效果:(素材都 ...

  8. 使用UE4制作简单的局域网对战小游戏

    原帖地址:https://arcecho.github.io/2017/04/28/使用UE4制作简单的局域网对战小游戏/ 大多数文章都是只讲到大致的UE4网络的概念,并未涉及实际使用.事实上在使用的 ...

  9. android游戏开发实例-可局域网对战的飞行棋(一)

    >[前言] 别小看了一个飞行棋,它其实包含了非常多的内容.尤其是可支持局域网对战.甚至是进行复盘的飞行棋,它将包含的知识点内容更将会有: 资源的载入 对各android真机屏幕的适配 andro ...

最新文章

  1. 一篇文章能够看懂基础代码之CSS
  2. IBM Watson 的中国生意
  3. 关于C语言static定义函数类型的具体解释
  4. Linux驱动如何在不同版本上快速迭代升级
  5. 95-40-105-java.util.concurrent-线程-Executor
  6. 处理器管理与进程调度
  7. appium移动自动化测试-安装2
  8. idea oracle 工具,IntelliJ IDEA的数据库管理工具实在太方便了
  9. python3项目源代码下载_资源整理 | 36个惊人的Python开源项目,都在这了
  10. 2021-07-05C#/CAD二次开发创建圆弧(4)
  11. open3d使用总结
  12. 加拿大麦吉尔大学计算机科学学院,加拿大麦吉尔大学专业:加拿大麦吉尔大学的院校介绍以及专业设置...
  13. Baumer工业相机堡盟工业相机如何联合BGAPISDK和佳能EF变焦镜头实现相机的自动变焦(C#)
  14. 【原创】Mac电脑如何开启Aptx
  15. 人工智能相关论文 2022 accepted papers list
  16. 类似微信5.x朋友圈的弹出框点赞功能PopupWindow
  17. 微信小程序开发中的这些坑你遇到过吗?
  18. Mybatis中and和循环or混用 (or转换成in)
  19. 盲人程序员是怎样炼成的
  20. 对话机器人之Sparrow

热门文章

  1. Linux 运行jar包命令如下:
  2. 一个APP从启动到主页面显示经历了哪些过程?(App启动流程,从点击桌面开始)
  3. linux添加新用户;linux常见命令;linux自定义终端命令
  4. pycharm常见报错解决方法(1)
  5. 有趣又好玩的软件分享
  6. chrome和edge浏览器,实现视频不静音自动播放
  7. 如何正确给机械手表上发条?雷诺手表上发条
  8. php ltrim redis,LTRIM命令_视频讲解_用法示例-redis编程词典-php中文网
  9. 格蕾丝霍波计算机软件之母,计算机之母
  10. 每天一个IDA小技巧(六)交叉引用