五子棋终结者app者

您的位置:
→ 五子棋终结者 v1.22 官方最新版
五子棋终结者 v1.22 官方最新版五子棋终结者1.22|
网友评分:8
软件大小:124KB
软件语言:中文
软件类型:国产软件
软件类别:免费软件 / 游戏工具
更新时间:
软件等级:
官方网站:
运行环境:WinAll, WinXP
软件厂商:
顶好评:50%
同类相关软件
1.8M/中文/5.018.6M/中文/10.04.7M/中文/10.04.7M/中文/10.0847KB/中文/10.0
五子棋终结者是一款强大的五子棋小程序,据说是计算机执黑必胜。该版本目前没有人打败过计算机,不信的朋友可以来试试。改程序严格地、完全地毯式地终结了自由规则下的五子棋。大家可以尽情挑战。软件特色程序只是简单的地毯式搜索完了业余和禁手规则五子棋的全部空间,建立了完整执黑必胜谱,并进行过地毯式的自动测试验证。对于机器执黑的自由对弈,机器必胜;对于给定棋子布局或者机器执白的对弈,程序的功能很极端,要么绝对求出棋局的解,要么草率胡乱下子,而没有使用好的算法估算最佳下子。如何考虑机器执白??程序目前只有一个1.02 demo版本(改了大小和帮助),只是用来演示执黑必胜的,还没考虑机器执白的智能由于只会求解而不会估算,如果机器执白时求到黑棋胜利机器怎么下子??如果机器执白的话,还没开始下机器就知道自己不管下在哪里都是输,这时候我该怎么让机器下子?既然已经执黑必胜了,执白的智能还有考虑的意义吗??
注意:五子棋终结者1.22版本发布以来尚无人能击败计算机执黑,最先击败计算机执黑者可以向作者领取¥奖金!!被击败前五子棋终结者不会进行版本号升级,网络上出现的五子棋终结者2.0和4.0等等都是假冒的。
猜你喜欢 五子棋游戏围棋游戏大全
五子棋游戏,相比于围棋来说,五子棋的玩法非常简单,只要一方达到五颗棋子一条线就能获得胜利,游戏进度也是十分之快。本集合中为你搜罗了超多手机五子棋小游戏,不论是在上班路上还是休闲时光都可以随时打开手机畅
围棋是一种在世界上都受到广泛流传的游戏,纵横各条直线将棋盘分成个交叉点,而棋手需要在这的交叉点中进行博弈,每一个落字都有着考究,对棋手的思维和运算能力有着极大的考究,绿色资源网在这里将最齐全的围棋游戏
其他版本下载
五子棋终结者 v1.22 官方最新版
软件无法下载或下载后无法使用,请点击报错,谢谢!
请描述您所遇到的错误,我们将尽快予以修正,谢谢!
*必填项,请输入内容
本类下载排行
8.51 8.42 1.23 2.14 9.15 8.16 3.47 10.08 .09 2.510 10.011 10.012 5.013 10.014 6.015
本类精品软件
1,018.9M/中文/5.4163.7M/中文/8.1109.8M/中文/4.6441.0M/中文/9.2184.1M/中文/8.0269KB/中文/10.0170.1M/中文/8.4
装机必备软件
本类集合软件博客分类:
五子棋终结者,这个电脑执黑必胜的程序,为了完成打败熊BOSS的夙愿,我决定将其中的一部分算法加入到我的五子棋AI中来。可以说其中的核心算法已经实现了(必胜树)。当然,由于时间的仓促,整体并不完善,还有些不足。但是程序是永远都写不完的,这是个普遍真理。不是吗?
首先,我们先看看原作者的想法“
五子棋终结者终结五子棋的计算引擎分为三层,
第一层是目标控制
第二层是策略规划
第三层是急速攻杀判断有无解
为什么要这样做这么多层次?因为五子棋是不可能通过简单的暴力搜索而被解决的
多个层次可以方便矛盾的转化,上层的策略由分散给底层去实现,底层的矛盾可由上层策略化解,而使得系统虽局部有缺陷而整体上合理,,
第三层只能终结部分有VC解的棋局而三个层次结合起来连续运算可以终结整个五子棋,
每一层次都有各自的目的和缺陷,而整体上却能实现当初的目标。
算法中引擎的三个层次要结合起来思考,才能明白这个分为三层的系统是如何终结五子棋的
目标控制层
受限于计算机能力,五子棋终结者是不可能一次搜索就被全面终结的,而是不断地从主要干支到次要枝叶到全面终结的一个目标渐进过程。此层引擎只是一个for循环,逐步放大终结目标的宽度,从5到10到30到50到225,当到225时,五子棋就被完全地终结了。
策略规划层
最佳优先与或求解树引擎。不要看到名字这么复杂,其实就是一个不断扩展发展M叉树。让最可能获胜的棋子获得CPU,棋子的优先度根据下层的结果动态计算调整,也称作反馈,直到分支在当前的目标宽度下被终结。
急速攻杀层
VCF和VCT,简称VC,也就是连续攻击取胜引擎。求解速度和求解严格精确至关重要。
如何在0.01S内进行深度为几十步的攻击?计算攻防时黑与白之间的无关性以及各自的相关性是关键。
无关性的考虑可以化解对方的随意反攻,
相关性的考虑可以使自己的进攻关联,保持节奏和组织性,不至盲目,
二者结合才能避免树产生爆炸,从而秒断棋局是否有连续攻击取胜解。
第三层引擎的这种相关和无关的考虑虽然可以秒断棋局,但却无法断所有的VC棋局解,因为不是全面的VC搜索
不过这没关系,第三层引擎只要能够准确地秒断绝大部分棋局的VC解即可
部分棋局无法求出解的缺陷却可由上层引擎对M叉树的扩展化解
总体上一致即可
三个引擎调试好后,执行终结命令,经过半个月的连续计算后,会生成一个完整的地毯必胜树,树的所有叶子都是可以VC求解的,如果程序设计上没有漏洞,那么是必胜的。
终结者程序很小,删除垃圾测试代码后的真正代码只有几千行,编译结果只有几十K(不包含资源文件),而且运行只需要几M的内存,必胜树只有八十万个节点,内置于程序中。
不知道你看完后是否有种一口鲜血喷在屏幕上的感觉,说句话刚看到上面这段我脑袋只闪过一个字,“这家伙在讲什么”。嗯,但是,看着看着就看懂了。
第一个层次,是目标控制层,话句话就是控制,相应的步数对应相应的算法的。
可能作者第一步只有1种算法,到了一定的步数他就会有另外几种算法。通俗点说,就是见什么人说什么话。
第二个层次,整个五子棋算法的核心,策略规划层。说白了就是一颗兄弟孩纸树,地毯式的必胜树。这棵树你们肯定见过,没错他就是二叉树。
电脑执黑子,玩家执白子。电脑下子后,玩家再下子,此时电脑会对根据整个棋盘的情况一一对电脑黑棋节点下的白棋节点进行遍历,当找到与之匹配的白棋节点,再将指针指向白棋的孩纸节点,取出节点中的数据并落子。
数据结构基础:
每一个棋局是一个节点,每个棋局有许多子棋局,节点的树型关系也就是棋局之间的树型关系。
从理论上来说,只要数据量足够大,玩家就会下不赢,后手无禁手的电脑。
第三层是急速攻杀判断有无解:
就是判断整个棋盘上是否有双三,三四,双四等必赢得情形,基本理论应该是权值法,不断的进攻最后玩家失败。
我猜想,作者先用第一层,判断玩家的进攻的相关性,再选择合适的算法来应对,如果玩家的进攻无关,则选用一种能迅速解决棋局的算法。如果是具有相关性的则选用第二层引擎,当达到一定步数时,玩家已经处于必输的局面,此时在调用第三个引擎。再次声明,这只是我的猜想。
还需完善的地方:1.必胜树还未建立好,不知道作者是怎样生成80万种情况。(感觉人工输入是不可能的,累死人了)
2.相关性和无关性的判断这个真的很麻烦。我就做了第一步下在四周的无关性检验。
3.三种情况的相互调用,在何种情况下相互调用,这又是一个值得思考的问题。
4.做完一种情况,因为棋盘是对称的,所以可以将树旋转,获得新的四种情况。
5.如何将机器学习与之结合,又是一个问题。
后记:五子棋做到现在,大体上是差不多了,感觉之后很长时间不会再碰这个东东了,下一次是否能将神经网络或者遗传算法加入到里面去,还是等我的功力再提升一点再说吧!
package GobangV1_4_0517;
import java.io.F
import java.io.FileInputS
import java.io.FileOutputS
import java.io.ObjectInputS
import java.io.ObjectOutputS
public class Tree {
private N// 根节点
public Tree() {
if (!readFile()) {
root = new Node(null, null, 7, 7, 1);// 第一步下在中心位置
System.out.println("读取文件失败");
this.initRoot();
* @param node
public void printTree(Node node) {
if (node != null) {
System.out.println(node.getX() + " " + node.getY());
printTree(node.getChild());
printTree(node.getBrother());
private Node tempN// 当前位置所在节点
public void deleteNode(){
tempNode.setChild(null);
public void addtoTree(int i, int j) {
if (tempNode.getChild() == null) {// 如果孩子节点为空
Node child = new Node(null, null, i, j, data.ARRAY[i][j]);
tempNode.setChild(child);
tempNode = tempNode.getChild();
tempNode = tempNode.getChild();
while (tempNode.getX() != i || tempNode.getY() != j) {
if (tempNode.getBrother() == null) {
Node brother = new Node(null, null, i, j, data.ARRAY[i][j]);
tempNode.setBrother(brother);
tempNode = tempNode.getBrother();
tempNode = tempNode.getBrother();
public boolean readFile() {
File file = new File("save.txt");
FileInputStream is = new FileInputStream(file);
ObjectInputStream ois = new ObjectInputStream(is);
root = (Node) ois.readObject();
ois.close();
is.close();
} catch (Exception e) {
// e.printStackTrace();
public void saveFile() throws Exception {
File file = new File("save.txt");
FileOutputStream os = new FileOutputStream(file);
ObjectOutputStream oos = new ObjectOutputStream(os);
oos.writeObject(root);
oos.close();
os.close();
public Node getRoot() {
public void setRoot(Node root) {
this.root =
public void initRoot() {
tempNode =
public Node getTempNode() {
return tempN
public void setTempNode(Node tempNode) {
this.tempNode = tempN
package GobangV1_4_0517;
public class Node implements java.io.Serializable {
private static final long serialVersionUID = 1L;
public Node() {
public Node(Node brother, Node child) {
this.brother =
this.child =
public Node(Node brother, Node child, int x, int y, int which) {
this.brother =
this.child =
this.which =
public Node getBrother() {
public void setBrother(Node brother) {
this.brother =
public Node getChild() {
public void setChild(Node child) {
this.child =
public int getX() {
public void setX(int x) {
public int getY() {
public void setY(int y) {
public int getWhich() {
public void setWhich(int which) {
this.which =
下棋与控制类
package GobangV1_4_0517;
import java.awt.event.ActionE
import java.awt.event.ActionL
import java.awt.event.MouseA
import java.awt.event.MouseE
public class chessListener extends MouseAdapter implements ActionListener {
private chessB
public chessListener(chessBoard cb) {
tree = new Tree();
fun = new fun(cb);
panduan = new judge();
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("保存到文件")) {// 保存到文件
tree.saveFile();
} catch (Exception e1) {
e1.printStackTrace();
if (e.getActionCommand().equals("录入棋盘")) {
tree.initRoot();
clearBoard();
data.ARRAY[7][7] = 1;
cb.repaint();
if (e.getActionCommand().equals("人机对战")) {
tree.initRoot();
clearBoard();
data.ARRAY[7][7] = 1;
cb.repaint();
cb.appendText("遍历为:");
printTree(tree.getRoot());
if(e.getActionCommand().equals("删除节点")){
tree.deleteNode();
System.out.println("hi");
public void printTree(Node node) {
if (node != null) {
cb.appendText(node.getX() + " " + node.getY());
printTree(node.getChild());
printTree(node.getBrother());
public void mousePressed(MouseEvent e) {
int a = e.getX();
int b = e.getY();
for (int i = 0; i & data.COL; i++) {
for (int j = 0; j & data.ROW; j++) {
if (a & (35 + i * data.SIZE) && a & (5 + i * data.SIZE)
&& b & (5 + j * data.SIZE) && b & (35 + j * data.SIZE)) {
if (data.ARRAY[i][j] == 0) {
if (mode == 1) {
data.ARRAY[i][j] = (getchessNO() % 2 == 1) ? 2 : 1;
panduan.judge1();
cb.repaint();
tree.addtoTree(i, j);
cb.appendText("tempNode所在位置为\n"
+ tree.getTempNode().getX() + " "
+ tree.getTempNode().getY() + " "
+ tree.getTempNode().getWhich());
if (mode == 2) {
data.ARRAY[i][j] = (getchessNO() % 2 == 1) ? 2 : 1;
panduan.judge1();
//第一次下棋判断无关项
if(getchessNO()==2&&((i&=4||i&=10)||(j&=4||j&=10)))
Node node = tree.getTempNode();
node = node.getChild();
// 假设棋谱一定有黑胜利的情况
node = node.getChild();
tree.setTempNode(node);
i = node.getX();
j = node.getY();
data.ARRAY[i][j] = (getchessNO() % 2 == 1) ? 2 : 1;
panduan.judge1();
cb.repaint();
cb.appendText("tempNode所在位置为\n" + tree.getTempNode().getX() + " "
+ tree.getTempNode().getY() + " "
+ tree.getTempNode().getWhich());
if (flag) {
putdown(i, j);
fun.putdown();
public void putdown(int i, int j) {
Node node = tree.getTempNode();
node = node.getChild();
if (node == null) {
fun.putdown();
while (node.getX() != i || node.getY() != j) {
if (node.getBrother() == null) {
fun.putdown();
node = node.getBrother();
// 假设棋谱一定有黑胜利的情况
node = node.getChild();
tree.setTempNode(node);
i = node.getX();
j = node.getY();
if (data.ARRAY[i][j]!=0) {
fun.putdown();
data.ARRAY[i][j] = (getchessNO() % 2 == 1) ? 2 : 1;
panduan.judge1();
cb.repaint();
cb.appendText("tempNode所在位置为\n" + tree.getTempNode().getX() + " "
+ tree.getTempNode().getY() + " "
+ tree.getTempNode().getWhich());
// 获得棋盘上的步数的个数,返回值为棋盘上棋子子的个数
public int getchessNO() {
int step = 0;
for (int i = 0; i & 15; i++)
for (int j = 0; j & 15; j++) {
if (data.ARRAY[i][j] != 0) {
step = step + 1;
public void clearBoard() {
for (int i = 0; i & data.COL; i++) {
for (int j = 0; j & data.ROW; j++) {
data.ARRAY[i][j] = 0;
浏览: 18129 次
有完整的SOURCE 可以參考嗎?
Life is so long and so painful, ...
谢谢支持 我也是随意写写的
楼主流程图画的不错
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'五子棋黑棋必胜软件|五子棋黑棋必胜-五子棋终结者下载 v1.22单机版_单机游戏下载
您的位置:
→ 五子棋黑棋必胜-五子棋终结者 v1.22单机版
游戏介绍五子棋黑棋必胜软件,这是一款名叫五子棋终结者的v1.22版本,在该版本中,黑棋必胜无敌手啊,您不妨试一试!五子棋黑棋必胜软件,那智力是相当的给力,因为五子棋对于电脑来说更利害一些,绝对的胜利。根据这个软件的下法,是手持黑棋子根据他的下法一定可以战胜对手。
同类专题推荐
五子棋游戏,这里为大家收集和提供五子棋软件,让大家可以在单机环境下玩五子棋游戏,提升五子棋技巧。
简体2.1M简体2.7M简体128KB
棋牌游戏,相信不少于玩家都很喜欢玩,简单快捷的游戏方式、锻炼思维的游戏内容都深深地吸引着各路玩家们,跑跑车游戏小编特意为玩家们整合了一个棋牌游戏大全下载,希望玩家们能够在这个棋牌游戏合集中找到自己所喜欢的棋牌游戏!
简体380.6M简体1.8M简体2.3M
下载地址Android版iPhone版Mac版iPad版主机版
五子棋黑棋必胜
喜欢“五子棋黑棋必胜-五子棋终结者”的人也喜欢:
五子棋黑棋必胜五子棋终结者 V1.23 绿色版 计算机执黑\作者悬赏92美圆解棋局 - 偶要下载站
偶要下载站 / 绿色软件下载联盟站!为大家提供一手绿色软件下载服务!
当前位置: &
> 五子棋终结者 V1.23 绿色版 计算机执黑\作者悬赏92美圆解棋局
五子棋终结者 V1.23 绿色版 计算机执黑\作者悬赏92美圆解棋局
终结者很强大哦,作者开出了92$美圆的奖金,计算机电脑执黑,作者悬赏解棋局,假如你能在“五子棋终结者”中战胜黑方电脑,那么你就可以领赏了,号称无人能胜!五子棋终结者V1.22版自发布以来尚无人能击败计算机执黑!
界面预览图:
五子棋游戏是一款比较好玩的五子棋游戏,特此发布《五子棋安卓版》,玩法一样,棋盘上黑白棋子相间,喜欢下五子棋的玩家不要...
这款五子棋游戏软件也是很不错的,和本软件是同类也有很多人下载,您可以试一下它!
821KB | 简体中文 | ★★☆☆☆
830KB | 简体中文 | ★★☆☆☆
597KB | 简体中文 | ★★☆☆☆
830KB | 简体中文 | ★★☆☆☆
五子棋终结者 V1.23 绿色版 计算机执黑\作者悬赏92美圆解棋局
想下载到手机上? 鼠标移动到左边二维码上扫一扫即可!
1. 如果发现下载地址不能下载,请多试几个下载地址!如安装时出现问题,请评论中留言!可以QQ联系告知我详细信息!
2. 为了保证您享受到最快的下载速度,推荐安装迅雷下载工具。如果下载后出现不能解压,请安装winrar等解压缩包软件!
3. 如果下载的压缩包文件需要解压密码,网址就是解压密码:
4. 本站不提供该下载软件的破解版,注册机,注册码,序列号,注册密钥,激活码,等相关信息下载以及咨询!
免费版/简体中文/★★☆☆☆
免费版/简体中文/★★☆☆☆
免费版/简体中文/★★☆☆☆
免费版/简体中文/★★☆☆☆
免费版/简体中文/★★☆☆☆
免费版/简体中文/★★☆☆☆
下载排行榜
人气下载榜
偶要下载站集绿色软件下载、手机软件与游戏、各种素材、字体下载于一身的联盟网站,致力打造一个纯绿色软件下载乐园。
本站为非营利性网站,中国绿色联盟提供的资源均来自网络收集整理,下载个人纯属学习交流之用,如有侵犯您的版权请与我联系,我们会马上改正请在下载24小时内删除!
Copyright (C)
偶要下载() All Rights Reserved. 鲁ICP备号 鲁公网安备74号}

我要回帖

更多关于 五子棋终结者app 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信