德州扑克AI WEB版

继续之前的德州扑克话题,上次的DOS界面确实没法看,我女朋友说这是什么鬼。哈哈,估计只有自己能玩了

这两天重构了一下界面,基于web服务器和浏览器来交互。

服务器和客户端之间用websocket通信,这种全双工长连接更方便服务器及时的将整个游戏数据向客户端推送。

这篇随笔主要记录一下做前端界面的时候遇到的一些坑,至于德州扑克游戏的具体逻辑以及AI的逻辑可以查看我前两篇随笔

 

说道web服务器,go语言对这方面封装的非常好,用起来太爽了。而使用websocket,我们需要用到google提供的一个websocket包。

下载地址:http://code.google.com/p/go.net/websocket

如果访问不了的话,可以从这个地址下载:https://github.com/SongLiangChen/websocket(我自己下好,打包在github上)

 

整个重构非常简单,架设一个web服务器,客户端和服务器之间建立websocket连接,服务器首先将初始化的游戏数据打包成XML推送给客户端,客户端通过JavaScript解析之后将数据展示。之后服务器根据游戏逻辑来等待客户端输入数据,例如下注之类。然后进行下一步计算,并且重新将数据推送给客户端展现。

 

过程中主要遇到的坑就是JavaScript解析XML的时候,由于各个浏览器之间的不同而导致很多兼容性的问题。

比如chrome不允许跨域访问,同时它又没有实现像IE类似的loadXml()或者load()函数。所以只能通过http请求向服务器索要数据。

            function loadXMLStr(xmlFile){
                try{
                xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
                }catch(e){
                    xmlDoc=document.implementation.createDocument("","",null);
                }
                try{
                    xmlDoc.async=false;
                    xmlDoc.loadXML(xmlFile);
                }catch(e){
                    var xmlhttp = new window.XMLHttpRequest(); 
                    xmlhttp.overrideMimeType("text/xml; charset=utf-8");
                    xmlhttp.open("GET","xml",false);  
                    xmlhttp.send();
                    xmlDoc = xmlhttp.responseXML;
                }
                
                return xmlDoc;
            };

代码中红色标注的那句话,它的作用是标注请求的数据是一种xml文本资源,并且可以通知服务器浏览器使用的编码方式。如果没有的话,你将会发现responseText能够正确返回数据,但是responseXML将返回NULL。

现在我们chrome中运行这段JS代码, 服务器就会收到一个"xml"(名字可以自己定)的请求。我们只要设置一下路由,收到"xml"请求的时候,将数据发送给客户端就可以啦

func GetXml(w http.ResponseWriter, r *http.Request){
    fmt.Println("getXml ",string(desk.GetXmlData()))
    w.Write(desk.GetXmlData())
}

func main(){
    http.Handle("/con", websocket.Handler(StartGame))
    http.HandleFunc("/", Hello)
    http.HandleFunc("/xml", GetXml)

    if err := http.ListenAndServe(":8080", nil); err != nil{
        fmt.Println("LS Fail")
    }
}

在go语言中,这种事情都不是事情,你可以看到,真的相当简单。

 

运行服务器,浏览器通过8080端口访问本地就可以玩耍啦

 

代码开源在github上,欢迎交流:https://github.com/SongLiangChen/AITexasHoldemForWeb

运行时候请将html文件和exe文件放在同一个目录下

转载于:https://www.cnblogs.com/ka200812/p/5863326.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
德州扑克AI分析软件是一种专门设计用于分析德州扑克游戏的人工智能软件工具。它结合了先进的算法和机器学习技术,具备分析牌局和玩家决策的能力。 首先,德州扑克AI分析软件能够实时扫描并分析牌桌上的所有牌,并计算出每位玩家的牌型概率。它会根据手中的牌和牌桌上的公共牌,预测自己和其他玩家可能拥有的牌型,从而帮助玩家进行决策。 其次,该分析软件能够为玩家推荐最佳的策略。它会基于牌型概率和可能性,计算出不同决策的期望价值。例如,它会告诉玩家是否应该跟注、加注、弃牌或者全下。通过分析软件的建议,玩家可以更加准确地评估自己的牌手和对手的筹码状况,从而做出更明智的决策。 此外,德州扑克AI分析软件还可以通过学习玩家的行为模式来提升自己的性能。软件会记录并分析玩家的每一局游戏数据,包括筹码使用、下注大小和胜率等信息,以此来生成更准确的推荐策略。通过不断与玩家互动,软件能够逐渐优化自身的算法和决策能力。 总的来说,德州扑克AI分析软件具备了实时分析牌局和集成机器学习技术的能力,帮助玩家做出更明智的决策。它不仅可以提供牌型概率的计算,还能推荐最佳策略并通过学习玩家行为模式来提升自己的性能。这种软件对于德州扑克玩家提供了重要的辅助工具,使他们能够更好地分析游戏并制定优秀的决策策略。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值