lua
qiuqiu-460000713
本人活泼开朗,喜欢编程,下象棋,志同道合者加我吧!
展开
-
纯概率算力模拟真人-德州扑克机器人算法设计
德州机器人第一版本采用的是预先偷看未来的牌型,和自己牌在所有人当中第几大,这种方式做出来的效果就是稳赢,但体验太差了,因为你已经预知了后来的牌,那么当手牌发给你3和7的时候,因为你预先知道你的牌型是顺子,所以你加注了,如果最后你开牌了,你吓唬人还好,但如果开出来后是顺子,那玩家绝对是不敢玩的,这有明显作弊的嫌疑。这样的游戏体验是最差的,基于此我们设计了纯算力版本的机器人。 发手牌时,你手上的牌对子,或者同花,各种牌型的胜率在网上大家都可以搜索得到,这样再辅以你自己的下注策略就...原创 2021-04-02 15:35:27 · 890 阅读 · 0 评论 -
德州扑克-allin主池边池,分池算法
最近做完了德州扑克项目,对里面的一个allin分池算法有点感悟,值得记录下来,我大概看了一个老项目的分池算法,代码非常复杂,有100多行,对此我觉得可以优化一下的,实在没必要搞得这么复杂。为此我重构了一下,大概用了50行,思路清晰,代码如下: function TableFrame:CountChiZi(lChiZiScore, bChiZiPlayer) local vecUserScore ={} local lTotalScore=mytools.clone(sel原创 2020-11-10 16:19:10 · 11061 阅读 · 0 评论 -
德州扑克-面对五重循环算法该如何优化?
最近在做德州扑克项目,写到从7张牌中选择5张最优组合牌时,翻看了旧项目的代码,发现居然有人写出了五重循环算法,如图-- //最大牌型function GameLogic:FiveFromSeven( cbHandCardData, cbCenterCardData,cbCardCount) -- //临时变量 local cbTempCardData={} local cbLastCardData={} -- //拷贝数据s cbTempCardData=myto...原创 2020-09-04 14:55:23 · 1231 阅读 · 1 评论 -
棋牌开发里面如何写好搜索顺子的算法
很多有3年开发经验以上的朋友,可能不屑一顾,这有何难,不就是几行代码的事,从我所见到的所有版本中,目前还没有一个令我满意的版本,满分100分最多占到70,不合格的占90%。下面我就让大家看看我公司同事写的各个搜索顺子算法的版本吧。先看斗地主的一个搜索顺子的版本-- 顺子local function IsSingleLine(nCards,nCardNum) for i=1,nCardNum-1 do if GetCard(nCards[1]) > 12 the...原创 2020-08-10 15:27:28 · 642 阅读 · 0 评论 -
记一个一年了才解决得了5个麻将的经典bug
去年血战麻将久不久会出现了碰掉一个牌,但碰掉那张牌没有移除成功。导致牌面会出现5个牌的bug,但是个bug呢你去配一样的牌,一样的步骤,动作,顺序都不能复现。经过大量分析,服务端是确定没有异常的,但客户端这个是怎么出现的,一时没有好办法就用了个最笨的办法,每次牌堆变更就下发一次牌堆牌下去更新,但是会导致服务端,前端的代码非常臃肿。这作为一个程序员来说实在是不能容忍的,优雅是程序员的最高境界,因为是前端发生的bug,我做服务端的,虽然也做过前端,一时也不太能理解前端的代码为什么出现了问题。...原创 2020-07-09 17:55:27 · 947 阅读 · 0 评论 -
超强跑得快机器人智能算法深度研究与设计
上一篇斗地主机器人算法的设计是自主研究学习的,没有做细节上的优化,但最近公司刚好要上线跑得快,也需要我编写跑得快ai算法。于是我直接采用斗地主的算法框架来写这个ai,可以说主体设计没有变,但是呢细节上有重大改进,也是这些细节决定了整个ai的品质,经过一个多月与策划撕逼,测试争吵,最终出来的成果是,可以说在不作弊的情况下,90%的人都打不赢机器人,就连我本人都很难取胜,效果倍儿棒,整个设计和过程值得记录与分享。 斗地主的单牌分值设计是没有负分设计的,但策划弄了一套负分的设计,原理...原创 2020-07-07 12:21:19 · 5685 阅读 · 7 评论 -
C/C++与lua二维数组交互的经典范例
最近为了解决skynet的跑得快ai的核心算法性能问题,那么我们自然就用C来写核心算法,之前从来没做过二维数组交互,也是折腾了一番才能正常理解与运行。先看示例代码//数组计算加一返回数组int GetCardCal(lua_State* L){ int arrayNum[20][20] = { 0 }; lua_pushnil(L); int index = lua_gettop(L)-1; luaL_checktype(L, index, LUA_TTABLE); //检测传递过来原创 2020-07-06 17:16:51 · 1181 阅读 · 0 评论 -
linux下lua与c++交互lua5.3调用so-64位
继上一篇windows下lua调用C++的想法,我那么linux下也想折腾一下,看看他们之间有多大的差别,使用环境centos7 ,vscode,lua5.3.4版本有这三样就行了extern "C" {#include <lua.h>#include <lauxlib.h>#include <lualib.h>};#include <iostream> #include <vector>#include .原创 2020-05-08 17:50:06 · 4571 阅读 · 0 评论 -
lua与c++交互lua5.3调用dll-64位
公司所用的框架是skynet,是c-lua语言,有时lua效率不够,又有现成的大量的C++算法,所以我就有了研究一下lua调用C++的想法,以供不备之需,准备环境是windows7,vs2013,vscode,vscode插件-Lua Debug,Lua Debugger,EmmyLua,插件是方便调试开发用的,vscode对lua5.3-64位支持比较好,建议还是用vscode...原创 2020-05-08 10:51:55 · 1579 阅读 · 0 评论