zoukankan      html  css  js  c++  java
  • 五子棋算法详解——解决方案之二

    1.         关键词

    棋位:棋盘的任意一个能放置棋子的位置。

    空棋位:没有放置棋子的棋位。

    成五:同一色的五子连成一线,胜利。

    活四:同一色的四子连成一线,且四子的两端是空棋位。

    双三:出现两次下面这种情况:同一色的三子连成一线,一端为空棋位或同一色的子,另一端为空棋位。

    我们关心的是当在一空棋位上放上一棋子是否构成“成五”、“活四”、“双三”。

    下面三个图分别是成五、活四、双三:

                       
             

                       
                       
                       
                       
                       
                       
                       
                       
                       
           

       
                       
                       
                       
                       
                       
                       
                       
                       
                       
           

     
             

           
           

             
                       
                       
                       
                       
                       
                       


    2.         基本思想

    电脑下子前对当前棋盘格局进行评分,当前棋盘格局的分数等于“当前棋盘中空棋位分数的最大值”。

    当前棋盘中空棋位分数等于“在该空棋位放上棋子后所构成棋子排列局面的分数,分数取值的大小顺序分别是成五、活四、双三和不构成以上三种情况的最佳走法”

    3.         常量和空棋位分值的计算

    a)        各分数常量

    static var winningMove = 9999999;//成五

    static var openFour = 8888888;//活四

    static var twoThrees = 7777777;//双三

    static var lineN:Array = new Array(0, 20, 17, 15.4, 14, 10);//相隔012345个棋位的分数

    b)        空棋位分值的计算

    成五、活四、双三的情况已在上面说过了,这里主要解释不构成这三种情况的分数计算方法。

    现在要计算某空棋位的分数,A1A2A3A4分别代表横向、纵向、正斜向、反斜向上对它产生的分数;

    在横向上与该空棋位相隔12345个棋位的棋位上存在同一色的子或也是空棋位则分别A1+=lineN[1]A1+=lineN[2]A1+=lineN[3]A1+=lineN[4]A1+=lineN[5]

    同理在其纵向、正斜向、反斜向上一样计算;

    最后该空棋位的分数是A1A2A3A4中两个最大数的和。

    4.         静态结构

     

    该算法已在五子棋实现,另奉上源码,感谢网络上的资源。

  • 相关阅读:
    第四届图灵赛A题谷神的赌博游戏
    poj1562DFS
    数组-03. 冒泡法排序(20)
    数组-02. 打印杨辉三角(20)
    数组-01. 字符转换(15)
    循环-28. 求给定序列前N项和之六(15)
    循环-27. 求给定序列前N项和之五(15)
    循环-26. 求给定序列前N项和之四(15)
    循环-25. 求给定序列前N项和之三(15)
    循环-24. 求给定序列前N项和之二(15)
  • 原文地址:https://www.cnblogs.com/pains/p/1103692.html
Copyright © 2011-2022 走看看