首页 文章
  • 45 votes
     answers
     views

    实施国际象棋引擎有多难? [关闭]

    我想知道实施 chess engine 会有多难 . 是否已经有开源实现? 看起来你需要一个给定的板星座的评分函数,以及探索几个可能的未来板块星座的快速方法 . 探索所有可能的未来动作当然是不可能的,因此人们可以贪婪地遵循最有希望的动作,或者使用像simulated annealing这样的近似技术来概率地跟踪可能的动作 . 你是否认为这属于研究生项目的范围 - 假设有一个学生可以使用的开源实现,...
  • 107 votes
     answers
     views

    国际象棋是否有完美的算法?

    我最近与一位非编码人员就国际象棋电脑的可能性进行了讨论 . 我不太懂理论,但想想我已经足够了解 . 我认为不可能存在确定性的图灵机,它总是在国际象棋中获胜或陷入僵局 . 我认为,即使您搜索播放器1/2移动的所有组合的整个空间,计算机在每个步骤决定的单个移动都基于启发式 . 基于启发式,它不一定能击败对手可以做的所有动作 . 相反,我的朋友认为,如果计算机永远不会做出“错误”的举动,那么计算机将永远...
  • 83 votes
     answers
     views

    国际象棋游戏的面向对象设计[关闭]

    我试图了解如何以面向对象的方式进行设计和思考,并希望从社区获得有关此主题的一些反馈 . 以下是我希望以OO方式设计的国际象棋游戏的示例 . 这是一个非常广泛的设计,我在这个阶段的重点只是确定谁负责什么消息以及对象如何相互交互来模拟游戏 . 请指出是否有不良设计元素(高耦合,内聚力差等)以及如何改进它们 . 国际象棋游戏有以下几个类 董事会 Player 片 广场 ChessGa...
  • 3 votes
     answers
     views

    0x88棋盘表示

    我正在尝试使用wxPython中的GUI创建一个2人国际象棋程序,该程序能够验证移动并遵循每个国际象棋规则 . 现在,我正处于设计的开始阶段,并想出我应该使用哪种电路板表示技术 . 我最近想到了明显的二维数组,但后来我读到了0x88 board representation,据说在查找方面更快,并且逻辑上检查方块是否在棋盘内 . 但是,如果我制作一个没有人工智能的程序,就没有必要检查是否有人移动了...
  • 0 votes
     answers
     views

    在国际象棋比赛中的Mouselistener

    我正在创建一个国际象棋游戏,现在我已经用我的所有棋子填充了我的图形棋盘,现在我需要使用Mouselistner移动棋子 . 在实现图形版本之前,我创建了一个2D控制台版本,它接受了“玩家移动”,所以我确实拥有所有这些方法,但我现在需要使用Mouselistener,我读了一下方法,但是,我需要实现每个 class 都有mouselistener? 我有1个抽象的Piece类以及7个子类(包括Dum...
  • 2 votes
     answers
     views

    国际象棋游戏设计和单身人士模式

    我目前正在创建一个由以下类组成的国际象棋游戏: ChessPiece - 适用于所有各种棋子,由MovementBehaviour实例变量组成 MovementBehaviour - 由PawnMovementBehaviour,KingMovementBehaviour等类实现的接口,用于定义每个类型的移动方式 ChessBoard - 由具有addPiece()/ re...
  • 0 votes
     answers
     views

    优化C中的国际象棋游戏

    我正在用C制作一个简单的国际象棋游戏,我想知道我可以对它做出的优化 . 目前,我有一个结构游戏,具有游戏的当前状态(主菜单,暂停菜单,播放等),转弯,作为布尔值的3个整数,指向板的指针和指向所选部分的指针: typedef struct game{ ChessBoard *board; ChessPiece *selectedPiece; ChessColor turn;...
  • 3 votes
     answers
     views

    国际象棋计算机中的静止搜索

    我正在开发一台国际象棋电脑,但我的静止搜索遇到了问题 . 以国际象棋的位置为例: 如果我们搜索深度为1,那么最好的举动将是 exf5 . 但是,计算机还会搜索 exd5 然后进入静止搜索 . 它会尝试 Qxc6 然后 dxc6 ,这比第一步更有利于 exf5 的位置 . 第二个玩家当然不会玩 Qxc6 但是我不知道如何让静止搜索只看"good captures" . 这里有...
  • 1 votes
     answers
     views

    OOPS国际象棋游戏:玩家移动一件作品时的设计逻辑

    如果想用OOPS原理设计国际象棋游戏 . 我无法想象移动一块后的用例应该如何处理 . 正如我们现在当一个玩家将他的作品从一个地方移动到另一个地方时 . 很少有人认为会发生 . 像pawn可以在最后一行到达新的棋子将在船上而不是那个棋子或者可以检查对手或者这个检查也可以检查配偶 . 那么应该如何处理这些案件?这些逻辑应该在哪个类上?链责任设计模式在这里更适合吗?
  • 10 votes
     answers
     views

    未来的棋子流动性

    我目前正在用C#开发一个国际象棋引擎,我在开发代码时遇到了一些障碍,以确定任何给定棋子在1,2和3步中的未来移动性 . 基本的想法是奖励具有增加移动性奖励的碎片并惩罚行动不便的碎片 . 棋盘表示为64个正方形的阵列,从0(a8)到63(h1)开始,例如, Piece[] _chessboard = new Piece[64]; 我以这个棋盘位置为例: Black Rooks on squares ...
  • 6 votes
     answers
     views

    在国际象棋游戏中实施“检查”

    这个问题相当大,很难在不查看我的代码的情况下解决,如果它's exceedingly so, then the scope is probably too large and I' ll删除了这个问题 . 基本上我有一个工作国际象棋游戏与国际象棋的所有规则 except Check (因此也没有Checkmate,僵局等)实施 . 我通过分配我的ChessBoard两个布尔值的方块来实现Che...
  • 6 votes
     answers
     views

    C - Chess Bishop MoveCode错误?

    所以我正在制作国际象棋游戏,但是我不能让主教乐队正确地移动 . 这是我的棋盘: string board[8][8] = { {"_" , "_", "_" , "_" ,"_", "_" , "_" , "_"}, {"_&q...
  • 0 votes
     answers
     views

    简单的控制台象棋游戏

    我目前正在开发一款小型C控制台游戏 . 我遇到的第一个问题是棋盘显示不良(字符串8x8数组) . 但首先,让我简短地介绍一下 . 我的想法是将每一个国际象棋形象视为一个单独的对象 - 因此白色和黑色棋子都有自己的实例 - 对于pawn它是16个实例(白色和黑色同样为8个),4个等等,等等 . 然后我创建了另一个名为ChessBoard的类,它存储诸如被杀数字,特定玩家结果等信息,并且用于监督其他类...
  • -1 votes
     answers
     views

    国际象棋使用ML和/或DL [暂停]

    我的目标是创建一个使用ML来下棋的程序 . 我仍然是ML的菜鸟,但是根据我对ML的理解,理论上我应该只能编写国际象棋的规则,然后通过对自己玩2个实例,它应该能够自己变得更好并成为一个更好的球员 . 我已经在python中编写了一个程序,可以用来在两个玩家之间下棋,所以我有规则和所有 . 在这个程序中,我还有一个函数可以创建当前棋盘给出的所有可能的移动 . 从我在神经网络上找到的所有教程中,他们使用...
  • 12 votes
     answers
     views

    国际象棋的统计方法?

    阅读Google solves the translation problem如何让我思考 . 是否有可能通过分析数百万个游戏并确定基于(完全?)统计数据的最佳可能移动来构建强大的国际象棋引擎?有几个这样的国际象棋数据库(this是一个拥有450万个游戏的数据库),并且可以使用诸如所涉及的玩家的评级,游戏的年龄等因素来对相同(或镜像或反射)位置的移动进行加权 . 国际象棋理论改进的因素)等 . 为...
  • -1 votes
     answers
     views

    国际象棋产生可能的动作王安全[关闭]

    目前愚弄试图拼凑国际象棋,但我似乎无法找到一种简单的方法来重用已经存在的代码,我必须解决它 . 问题在于检查可能的移动是否安全 . 我的想法是通过每个相反的部分,并检查他们是否可以移动到国王可以移动到的其中一个方格 . 但这并不奏效 . 尝试了几种方法来教导Pawn或King关于彼此,但没有成功 . 得到了所有其他的工作,但那两个一起工作不! Board正在使用扩展jButton的8x8 Squa...
  • 0 votes
     answers
     views

    重新构建'this'变通方法

    我正在尝试创建一个简单的国际象棋程序,我在实现典当促销时遇到了一个小问题 . 我有一个抽象类和6个类(King,Queen,Rook,Knight,Bishop和Pawn)扩展它 . 因此当一个棋子到达棋盘的另一端时,我希望他改变让我们说皇后 . 最简单的方法是做这样的事情: Public class Pawn extends Piece { ... @Override public vo...
  • 3 votes
     answers
     views

    国际象棋棋盘游戏逻辑的永久套接字(Android)

    我刚刚学习了Android和Java编程(内部非常棒),我想问一些关于android编程和Socket Server的问题 . 我得到了一个创建 simple chess application (excluding the AI), the position of pawn will be retrieved from TCP socket 的作业: 服务器:xinuc.org 港口:7387 ...
  • 0 votes
     answers
     views

    国际象棋游戏机,将白色与黑色区分开来

    我在c编写一个国际象棋控制台游戏作为我们的编程类中的任务 . 我已经制作了打印功能和用于移动功能正常的部件的输入 . 现在是时候制作检查移动是否有效的函数 . 我已经有一个问题,试图区分黑色碎片和白色碎片 . 第一步只能通过白色完成,因为白色始终开始 . 所以我制作了所有部分的结构: struct chesspiece { string pieceName; char pieceC...
  • 2 votes
     answers
     views

    RFID国际象棋:一个阅读器很多天线

    我想读一个装有RFID令牌的棋子的游戏场 . 为了成本和简单,我想使用一个阅读器和许多触角 . 我打算购买以下产品: ArduinoMega;大到足以让我编程和调试而不优化空间或速度 标准8x8棋盘;尺寸可以通过线圈直径确定(见下文) 标准16 pc国际象棋 16给定频率的RFID令牌;每个都有一个不同的"value"或序列号,当胶合到棋子的底部时,将唯一地识别...

热门问题