智游城

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 7011|回复: 17
打印 上一主题 下一主题

作为程序员你会怎么设计扑克服务器端程序?

  [复制链接]
跳转到指定楼层
1#
omylove 发表于 2011-2-13 03:15:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
看到关于扑克室的讨论。我也来说说服务器处理的东西。虽然没多大意义。。

首先我们假设服务器端程序是公平公正的。

洗牌过程
   策略一: 跟现场一样先定好所有牌的顺序,随机生成52张牌的全部顺序。比如数组C[0]..C[51],然后依次发给每个玩家。
   策略二: 不洗牌,比如把牌按顺序放在一个数组C[0]..C[51],然后要给某个玩家发牌时生成随机数(0..51)并且判断这张牌没发出去的话,发给此用户。
   似乎没有三了。

同理的公共牌根据洗牌策略1或者2发牌。

那么我们要讨论的问题来了。其实无论哪种策略,从程序的角度来讲,洗牌发牌过程一定需要使用到随机数生成,任意时间点产生的随机数都是不一样的(当然我们的范围只有52个),那么是不是可以认为每一次执行一个操作所使用的时间都会影响到下一张牌(策略二)或者下一手牌(策略一)的出现。

假设以上内容都是成立的,那么有意义么?似乎是没有意义的,因为我们无法得知哪个时间点产生的随机数对我们是有利的,哪个是有害的。而且即使万一你知道了那么由于网络延迟、主机负载等原因你也无法一点能点到那个时间点。


那么我到底想说什么呢?

1.我知道这里也挺多搞计算机的高手,如果是你设计一个network的服务器端你会如何设计呢?

2.因果报应啊。那么你所有遇到的BB都和你自己有关的。因为你上一手牌或者上一张牌的某个动作(call,r,f,b)所使用的时间导致了,当前这张牌的出现。那么是否可以在你特别倒霉的时候多等上几毫秒再行动呢?或者会影响下一手你不是那么倒霉呢?哈哈。说笑的。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏
2#
Nolimit1980 发表于 2011-2-13 06:46:11 | 只看该作者
两种方案的结果是一样的。第一种方案有个缺点,一旦服务器被 hack 或者有后门,所有的一切呈现在黑客面前(当然找到需要的数据也很难),对手的牌、接下来要出的牌等等,比如你手里有一中对,牌面有顺和花的听牌,你也知道对手的牌(monster draw + 两张高牌),也知道下两张是什么牌,你知道对手的听牌不会来,所以你就能在翻牌跟对方的全下(semi-bluff)。还有什么事情比打牌赚钱更容易的呢?

第二种方案让你看不到后两张牌是什么,所以你只能严格按照赢率来打牌,也能抓对手的诈唬或者弃掉自己的强牌。优势比上一种小了无数倍,但能看到对手的牌已经让你占了巨大的优势。

按理说应该用方案一的,但实际情况很难说,如果考虑最坏的情况,应该采用方案二,即便是服务器自己也不知道下一张牌是什么,最小程度地减少作弊的危害。
3#
WaitingAlone 发表于 2011-2-13 11:32:49 | 只看该作者
BB牌出现的一刻软件明显感觉不流畅,就是在计算
4#
52magic 发表于 2011-2-13 12:54:05 | 只看该作者
感觉扑克室用的是第二种随机方案吧
5#
mfdzkw 发表于 2011-2-14 16:59:44 | 只看该作者
最近我也在想程序的问题,不过我想的是客户端的程序。
比如:FTP的客户端,它最简单的加注有加一个大盲、一个池、追加前位翻倍、ALLIN的(其他需要手工输入或拉滑竿),那么如果在河牌的时候,对方突破来了一个很奇怪的筹码,表示他是手工输入的,这表示什么意思呢?我总结过自己,当我心态很平稳的时候,才会手工输入,通过非手工输入的方式可能存在莽撞(或随意、急躁)的行为。
所以,我在打牌的时候,看到别人手工输入一个特别的筹码,我就特别小心一些。
6#
checkhold 发表于 2011-2-14 18:27:36 | 只看该作者
呵呵。ps经常有人加注 1999 或则 是2999 啊什么的。 弄1米高。
7#
yyz13 发表于 2011-2-14 20:51:53 | 只看该作者
回复 6# checkhold


    我最喜欢加999啦。。。大酬宾,赶快CALL我的意思。。。
8#
yyz13 发表于 2011-2-14 20:54:50 | 只看该作者
正常概率下,,,冤家牌是不太多的。。。

我觉得冤家牌是一个可控的系数。。。调高系数就是FTP。。调小系数就是PS。。。把系数调到0就是QQ德州扑克。
9#
xiuilnag 发表于 2011-2-14 21:23:28 | 只看该作者
搞得太复杂
10#
52magic 发表于 2011-2-14 21:58:56 | 只看该作者
FTP解释其发牌机制 谁来解释下吧
The card shuffles at Full Tilt Poker are better than any physical deck of cards. Our software uses advanced shuffle algorithms to ensure that every possible ordering of cards can be reached, and is as equally likely as any other. This is not achieved in real deck shuffles and it ensures that our players are guaranteed a completely random deal every time.

The server randomizes the deck by using several different core systems which each generate a random number. These randomized numbers are then combined to generate a random card. This redundancy ensures that even if several core systems failed or were compromised in some way, the output would still be random. This means that any card dealt on our system is always guaranteed to be random and completely unpredictable.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|智游城论坛

GMT+8, 2024-11-28 23:52 , Processed in 0.048216 second(s), 8 queries , Redis On.

Powered by Discuz! X3.2

© 2001-2012 Comsenz Inc.

返回顶部