Qt实现的局域网对战五子棋
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实现的局域网对战五子棋相关推荐
- Python五子棋小游戏源代码,支持人机对战和局域网对战两模式
Python五子棋小游戏源代码,支持人机对战和局域网对战两模式,程序运行截图: 核心程序代码 WuZi.py ''' Function:五子棋小游戏-支持人机和局域网对战 Author:Charles ...
- QT5/C++项目:基于QT的跨平台网络对战象棋(三)(推荐★★★★)
QT5/C++项目:基于QT的跨平台网络对战象棋(三)(推荐★★★★) 文章目录 QT5/C++项目:基于QT的跨平台网络对战象棋(三)(推荐★★★★) 本篇副标题: 本篇博客讲了什么or解决了什么问 ...
- 借助实时数据推送快速制作在线对战五子棋小游戏丨实战
1 项目概述 游戏开发,尤其是微信小游戏开发,是最近几年比较热门的话题. 本次「云开发」公开课,将通过实战「在线对战五子棋」,一步步带领大家,在不借助后端的情况下,利用「小程序 ✖ 云开发」,独立完成 ...
- 基于Qt的P2P局域网聊天及文件传送软件设计
基于Qt的P2P局域网聊天及文件传送软件设计 zouxy09@qq.com http://blog.csdn.net/zouxy09 这是我的<通信网络>的课程设计作业,之 ...
- Java局域网对战游戏、天气预报项目
功能 1.天气预报 2.局域网对战 展示 java学习群669823128 部分源码 package game.weather;import java.util.HashMap;public cla ...
- 网络对战五子棋(来一起PK鸭)
网络对战五子棋(来一起PK鸭) 一.本地调用和RPC调用的区别 首先了解一下RPC~ RPC主要是解决了两个问题: 解决了分布式系统中,服务之间的调用问题 尤其是在远程调用的时候,可以让调用者感受不到 ...
- 400行代码实现双人对战五子棋(适合新手入门)
400行代码实现双人对战五子棋(适合新手入门) 跟上一篇博客一样,都是看了慕课网的视频之后写的学习记录,记录一下实现的思路,大部分内容比较简单,但也从中学到了很多东西. 按惯例首先看一下效果:(素材都 ...
- 使用UE4制作简单的局域网对战小游戏
原帖地址:https://arcecho.github.io/2017/04/28/使用UE4制作简单的局域网对战小游戏/ 大多数文章都是只讲到大致的UE4网络的概念,并未涉及实际使用.事实上在使用的 ...
- android游戏开发实例-可局域网对战的飞行棋(一)
>[前言] 别小看了一个飞行棋,它其实包含了非常多的内容.尤其是可支持局域网对战.甚至是进行复盘的飞行棋,它将包含的知识点内容更将会有: 资源的载入 对各android真机屏幕的适配 andro ...
最新文章
- 一篇文章能够看懂基础代码之CSS
- IBM Watson 的中国生意
- 关于C语言static定义函数类型的具体解释
- Linux驱动如何在不同版本上快速迭代升级
- 95-40-105-java.util.concurrent-线程-Executor
- 处理器管理与进程调度
- appium移动自动化测试-安装2
- idea oracle 工具,IntelliJ IDEA的数据库管理工具实在太方便了
- python3项目源代码下载_资源整理 | 36个惊人的Python开源项目,都在这了
- 2021-07-05C#/CAD二次开发创建圆弧(4)
- open3d使用总结
- 加拿大麦吉尔大学计算机科学学院,加拿大麦吉尔大学专业:加拿大麦吉尔大学的院校介绍以及专业设置...
- Baumer工业相机堡盟工业相机如何联合BGAPISDK和佳能EF变焦镜头实现相机的自动变焦(C#)
- 【原创】Mac电脑如何开启Aptx
- 人工智能相关论文 2022 accepted papers list
- 类似微信5.x朋友圈的弹出框点赞功能PopupWindow
- 微信小程序开发中的这些坑你遇到过吗?
- Mybatis中and和循环or混用 (or转换成in)
- 盲人程序员是怎样炼成的
- 对话机器人之Sparrow