纸牌游戏的控制方法和系统的制作方法_2

文档序号:9898413阅读:来源:国知局
是,则结束,若否,则进入步骤106。
[0062]第一阈值是指桌号开始游戏时需要加入的玩家数量,第一阈值与纸牌游戏的类型相对应,例如,纸牌游戏为斗地主对应的第一阈值为3,纸牌游戏为升级对应的第一阈值为
4。游戏未开始的原因存在多种情况,可能是没有接收到玩家发出游戏开始的请求,也可能是玩家数量没有达到游戏开始的要求。本实施例中,通过判断玩家数量是否达到第一阈值,将纸牌游戏不能开始是因为玩家数量达不到第一阈值的桌号筛选出来。
[0063]步骤106,读取桌号对应存储的玩家等待时间,该玩家等待时间为从玩家加入桌号开始计时得到的时间,判断玩家等待时间是否超过第二阈值。若是,则进入步骤108,否则,结束。
[0064]每个桌号对应有一个计时器,用来记录玩家等待游戏开始经历的时间。当检测到有玩家加入到桌号,该桌号对应的计时器便开始计时,直到玩家的数量达到第一阈值后停止计时,当桌号中的玩家数量为O时,计时器将清零。通过计时器中记录的时间得到玩家等待时间。例如,玩家在等待好友进入同一桌号一起玩游戏的时间一般小于第二阈值,若玩家等待时间超过第二阈值时,则可判断游戏服务器中玩家数量过少导致玩家在长期等待游戏开始。进入步骤108。
[0065]步骤108,调用机器人进程参与桌号对应的纸牌游戏。
[0066]通过机器人进程创建一个个机器人实例,将机器人实例加入到因缺少玩家而不能开始纸牌游戏的桌号。机器人实例能够模拟玩家进行拆牌和出牌。机器人实例模拟的可以是玩家是对手,也可以模拟玩家的队友。在另一个实施例中,玩家若想快速开始游戏可以主动发出加入机器人实例参与游戏的请求,由机器人进程根据请求调用机器人实例加入至玩家所在的桌号。
[0067]上述纸牌游戏的控制方法,可以向游戏状态为未开始游戏的桌号中调用机器人进程参与纸牌游戏,由于机器人进程能模拟玩家参与纸牌游戏,避免了桌号因凑不足开始游戏的人数导致玩家长期等待的情况出现,减少了玩家等待游戏开始的时间。
[0068]如图2所示,在一个实施例中,步骤108,调用机器人进程参与桌号对应的纸牌游戏包括:
[0069]步骤202,获取桌号对应的空位数量。
[0070]步骤204,获取机器人进程中的处于空闲状态的机器人实例。
[0071]步骤206,调用与空位数量相同的处于空闲状态的机器人实例参与纸牌游戏。
[0072]本实施例中,机器人进程提供多个机器人实例,机器人实例根据在纸牌游戏中的角色模拟玩家参与游戏。桌号中存在多少个空位。机器人进程就调用多少个处于空闲状态的机器人实例加入到对应桌号中。
[0073]如图3所示,在另一个实施例中,在步骤204,获取机器人进程中的处于空闲状态的机器人实例之前,该方法还包括:
[0074]步骤302,检测机器人进程中是否存在处于空闲状态的机器人实例。如果存在,则进入步骤204,如果不存在,则进入步骤304。
[0075]步骤304,通过机器人进程创建空位数量的机器人实例。
[0076]步骤306,调用创建的机器人实例参与纸牌游戏。
[0077]本实施例中,机器人进程会根据机器人实例的负载情况,调用处于空闲状态的机器人实例参与游戏,当机器人实例的数量不够时,通过动态增加机器人实例来满足玩家需求,使得游戏资源得到充分利用。
[0078]在一个实施例中,步骤306,调用创建的机器人实例参与纸牌游戏的步骤包括:对发牌后机器人实例分到的手牌进行拆牌;当机器人实例接收到出牌命令时,根据出牌状态选取对应的出牌组合进行出牌。
[0079]手牌是指纸牌游戏开始时分发到机器人实例的纸牌。拆牌是指将分到的纸牌进行拆分,将能够凑合在一起出牌的纸牌进行两张或两张以上的组合,不能凑在一起出牌的就形成单张。通过拆牌可以获知手牌的好坏以及决定出牌方式。当机器人实例得到接收到出牌命令时,进一步的,获取此时的出牌状态,根据出牌状态来决定出牌的方式。
[0080]如图4所示,在一个实施例中,对机器人实例发牌后分到的手牌拆牌的步骤,包括:
[0081]步骤402,按照预设拆牌方式对手牌进行拆牌得到多种出牌组合,分别读取出牌组合对应的牌型。
[0082]步骤404,根据预设的牌型与权值的对应关系表,分别获取出牌组合中对应的牌型所对应的权值。
[0083]步骤406,将最大权值对应的出牌组合作为对机器人实例手牌拆牌的结果。
[0084]每一张纸牌包含花色和点数两种属性,不同的纸牌游戏对应不同的拆牌方式。根据预先设定的拆牌方式对手牌进行拆牌,例如,纸牌游戏为升级,则根据纸牌的花色对纸牌进行拆牌,将花色相同的纸牌归为一类,纸牌游戏为斗地主,则根据纸牌的点数对手牌进行拆牌,将点数相同或点数相邻的手牌组成出牌组合。其中每个出牌组合都能在纸牌游戏包含的牌型找到对应的牌型。
[0085]例如,纸牌游戏为斗地主,纸牌游戏中包含的牌型包括:单张(单独的一张纸牌)、对子(两张点数相同的纸牌)、顺子(点数相连的多张纸牌)和炸弹(四张点数相同的纸牌)等等牌型。机器人实例的手牌(忽略纸牌的花色)包括:一张3、一张4、一张5、二张
6、二张7、一张8、一张9和一张10。对手牌进行拆牌后的得到两种方式的出牌组合,一种方式是两张6、两张7和六张单牌的纸牌组合,该方式的出牌组合对应的牌型为两个对子和六张单牌,第二种方式是3、4、5、6、7和6、7、8、9、1的出牌组合,该方式的出牌组合对应的牌型为两个顺子。
[0086]游戏服务器预先建立了牌型与权值的映射关系表,例如,单张对应的权值为_2,对子对应的权值为-1,顺子对应的权值为2,连队对应的权值为2,三条对应的权值为3,炸弹对应的权值为13等等。根据牌型与权值的映射关系获取出牌组合对应的权值,通过权值比较将权值最大对应的出牌组合作为手牌最优的拆牌结果。
[0087]在一个实施例中,当机器人实例接收到出牌命令时,根据出牌状态选取对应的出牌组合进行出牌的步骤,包括:
[0088]当出牌状态为新出牌状态,选取手牌的牌值最小的出牌组合进行出牌。具体的,根据纸牌游戏预先设定出牌组合的牌值大小比较规则:同一牌型对应的牌值比较大小,根据花色和点数进行比较出牌组合的牌值大小;不同牌型对应的牌值比较大小,通过比较预先每个出牌组合设定值的大小比较出牌组合的牌值大小。
[0089]当出牌状态为接对手出牌时,从手牌中选取能压住对手出牌牌值的出牌组合出牌。
[0090]具体的,若机器人实例压住对手出牌的出牌组合对应的牌型数量为多个,则依次计算每个牌型对应的权值与机器人实例手中纸牌去掉压住对手出牌组合后剩余的牌型对应的权值的和值;选取最大和值的牌型对应的出牌组合出牌。
[0091]例如,机器人跟对手出牌的情况下,假设机器人手中的纸牌为CO,能压住对手出牌的出牌组合对应的牌型有η种情况:{Cl, C2,…,Cn};该和值Si = Get (CO-Ci)+Get (Ci)其中,i> = I且i〈 = n,Get (Cl)是指压住对手出牌的出牌组合对应牌型的权值,Get (CO-Ci)是指机器人实例手中纸牌去掉压住对手出牌组合后剩余的牌型对应的权值,选取Si取最大值时对应的出牌组合出牌。
[0092]例如,牌型中顺子对应的权值为4,每增加一张纸牌的顺子对应权值增加1,单张对应的权值为_2,三条对应的权值为3,炸弹对应的权值为13等等。机器人实例手中纸牌(CO)为3、4、5、6、6、7、7、8、9、10(不计纸牌的花色),假设对手出牌为顺子4、5、6、7、8,得出能压住对手出牌的纸牌组合只有两种(n = 2):5、6、7、8、9(C1)和6、7、8、9、10 (C2)。
[0093]计算SI = Get (CO-Cl)+Get (Cl):机器人实例手中的牌去掉Cl后剩余的3、4、
6、7和10为5个单张,该5个单张对应的权值之和为-10,Cl为顺子对应的权值为4,SI=_10+4,得出 SI = ~6ο
[0094]计算S2 = Get (C0-C2)+Get (C2):机器人实
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1