德州主池和边池的计算 您所在的位置:网站首页 德州allin发两次谁来定 德州主池和边池的计算

德州主池和边池的计算

2023-12-31 15:02| 来源: 网络整理| 查看: 265

德州主池和边池的计算

思路 思路,主池只有一个,边池最多是(玩家数量-1) 首先解释一下主池和边池 主池:主池就是第一个all-in的玩家或者说第一个最少筹码all-in的玩家产生的筹码池 边池:第二个以后all-in的玩家或者说第二少筹码以后的all-in玩家产生的筹码池 到此很容易想到定义一个数组来存储主池和多个边池,现在用lua语言来举例子,用 pot_list 来表示。 假定5个玩家参与,sum 表示池子的筹码数量,player_ids 表示该池子属于谁的,player_ids 也是一个数组, 因为有可能多个玩家牌型一样,这样方便结算的时候,平分筹码。 格式如下 pot_list = { [1] = {sum=0, player_ids = {1000001}}, --第1个表示主池 [2] = {sum=0, player_ids = {1000002}}, --第2个表示边池 [3] = {sum=0, player_ids = {1000003}}, --第3个表示边池 [4] = {sum=0, player_ids = {1000004}}, --第4个表示边池 [5] = {sum=0, player_ids = {1000005}}, --第5个表示尾池 } 尾池属于跟到最后并且下注最多的玩家的。 all-in最少筹码的玩家一定是主池的拥有者,第二少的玩家就是第一个边池的拥有者,依次类推。 当有多人all-in时,很容易想到要对所有all-in的玩家总下注进行排序,所以我们要记住每个玩家的总下注。 现在的需求是,只要有玩家下注,主池和边池都要实时更新。 所以我们想到了在有玩家下注返回时,实时计算主池和边池广播出去。

lua 语言实现

local pot_list = {} local player_num = 5 --假定5个玩家 --计算边池和主池(每次有玩家下注返回时调用) function CountPotNum() pot_list = nil pot_list = {} --清空以前的数据 for _ = 1, player_num do --对 pot_list 进行初始化 table.insert(pot_list,{sum = 0,player_ids = {}}) end local all_bet_info = {} --将所有all-in的玩家信息存储进 all_bet_info ,以便进行排序 for _,v in pairs(player_list) do --player_list 是存储所有玩家信息的表 if v.AllIned then table.insert(all_bet_info,{player_id = v.player_id, bet = v.BetNum}) --BetNum 是玩家总下注 end end if #all_bet_info > 1 then--对所有all-in的玩家根据下注的多少进行排序 table.sort(all_bet_info,function(f,s) return f.bet v.BetNum then sub_num = sub_num + v.BetNum v.BetNum = 0 elseif user.player_id ~= v.player_id and user.BetNum #all_bet_info then --尾池计算,将没有all-in的玩家下注都放入尾池 sub_num = 0 for _,v in pairs(player_list) do sub_num = sub_num + v.BetNum v.BetNum = 0 end pot_list[k+1].sum = pot_list[k+1].sum + sub_num end end end end

到此,主池和边池计算完成了。 pot_list[1].sum 就是主池 pot_list[2].sum、pot_list[3].sum、pot_list[3].sum、pot_list[4].sum是边池 pot_list[5].sum是尾池



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有