21点为什么适合一个人玩的游戏可以多手牌进行游戏?

&|&&|&&|&&|&&|&&|&&|&&|&&|&&|&&|&&|&&|&
位置:&&&&&&&&&&&&&&&&&正文
《21点》游戏规则和玩法
作者:佚名
文章来源:棋谱收藏站
浏览次数:
更新时间:
操作系统:WinXP/vista/Win7/Win8& 文件大小:3.45M
拥有最高点数的玩家获胜,其点数必须等于或低于21点;超过21点的玩家称为爆牌。2点至10点的牌以牌面的点数计算,J、Q、K 每张为10点。A可记为1点或为11点,若玩家会因A而爆牌则A可算为1 点。当一手牌中的A算为11点时,这手牌便称为“软牌”(soft hand),因为除非玩者再拿另一张牌,否则不会出现爆牌。  庄家在取得17点之前必须要牌,因规则不同会有软17点或硬17点才停牌的具体区分。  每位玩家的目的是要取得最接近21点数的牌来击败庄家,但同时要避免爆牌。要注意的是,若玩家爆牌在先即为输,就算随后庄家爆牌也是如此。若玩家和庄家拥有同样点数,这样的状态称为“push”,玩家和庄家皆不算输赢。每位玩者和庄家之间的游戏都是独立的,因此在同一局内,庄家有可能会输给某些玩家,但也同时击败另一些玩家。  牌桌上通常会印有最小和最大的赌注,每一间赌场的每一张牌桌的限额都可能不同。在第一笔筹码下注后,庄家开始发牌,若是从一副或两副牌中发牌,称为“pitch”牌局;较常见的则是从四副牌中发牌。庄家会发给每位玩家和自己两张牌,庄家的两张牌中会有一张是点数朝上的“明牌”,所有玩家皆可看见,另一张则是点数朝下的“暗牌”。若是四副牌时,发牌时点数会朝上,若为“pitch”牌局则发牌时点数朝下。  在美式的二十一点游戏中,若庄家的明牌是A或价值10的牌,庄家会确认他的暗牌是否会形成二十一点。这项确认会在所有玩家选择之前进行,但进行前会先询问玩家是否需要“保险”(insurance,在明牌是 A 的情况下)。若庄家的牌为二十一点(blackjack),则所有的玩家即时算输,将损失第一笔赌注筹码,除非玩者本身也是二十一点,或形成同点数的 push 状况。(在某些美国的赌场,庄家采用欧式的规则,在全部玩家都出手前不会先去确认暗牌。在这样的情况下,当庄家的牌揭开后为 二十一点时,则所有没有二十一点的玩家算输。)  两张牌点数相加为21(一张A再加一张价值10点的牌)称为“二十一点”(black jack),拥有这副牌的玩家即自动成为赢家(除非庄家也同时持有二十一点,这种点数相同的情形就称为 push)。拥有二十一点的玩家可赢得下注筹码的1.5倍。部份的赌场仅付给1.2倍的金额;但通常是在仅使用一副牌游玩的赌局中。  通常每次以四至六副扑克牌游玩,直至玩剩一副或一半为止,再重新洗牌。
上篇文章: 下篇文章: 相关文章:没有相关文章
子栏目导航把赌场变成ATM——详解21点算牌法
& “手头没钱了,怎么办?”“去赌场...”
Blackjack(21点)作为世界上最流行、最经典的扑克游戏而广受欢迎。然而长期以来,大家都把它当成是纯粹的赌博,却很少有人知道这是一个完全可以通过数学计算而非运气取胜的游戏。这里就根据个人的经验之谈,向大家介绍一下Blackjack的必胜诀窍——算牌法。世上无难事,只怕有心人。赢钱不是赌神的专利,只要勤于练习,任何人都可以无往不利、横扫赌场。
& 首先简单介绍一下基本游戏规则:Blackjack通常使用8副扑克牌,共416张(除去大小王),由庄家分别和每一名玩家对赌。游戏开始时庄家和每个玩家手里有两张牌,玩家两张全是明牌,庄家一明一暗。此时从第一个玩家开始做出决定,选择继续要牌(Hit)还是停牌(Stop)。玩家的目的是使手中牌的点数相加大于庄家手中的牌。点数计算规则如下:2-9分别代表各自的数字,10-K代表10,A代表1或者11,由玩家自己决定。玩家在要牌过程中可以选择Double(只能继续再追加一张牌,赌注加倍)或Split(当玩家起始手牌是两张相同的牌时可以拆成两组分别下注,相当于一个人同时在赌两场)。当所有玩家选择结束之后庄家开始要牌,游戏规定软17点(由A和其它牌组成的牌型称之为软牌)以下必须要牌。玩家点数相加之和正好是21,或者手中有五张牌且相加之和仍小于21的话,玩家直接胜利,赔率1:1;玩家手中的牌是Blackjack(2张牌相加直接为21,包括A-10,A-J,A-Q,A-K),玩家直接胜利,赔率1:2;如果玩家以Blackjack赢庄家的Blackjack,赔率1:5;点数相同庄家赢;任何人点数大于21直接失败(各个赌场的规则和赔率各不相同,比如Blackjack Plus规定如果点数相同平局,庄家22点也是平局,各自不输不赢;有的赌场还允许玩家“投降”和“买保险”,情况各异)。
乍看之下这是一个纯粹比拼运气的扑克牌游戏,然而事实并非如此——这个游戏的输赢与否是直接建立在严格的数学、统计学和博弈论的知识基础之上的。通过熟练掌握Blackjack的基本博弈策略和算牌技巧,完全可以立于不败之地,甚至如上文所说的横扫赌场。接下来就详细介绍Blackjack点石成金的关键——算牌法。
& 首先大家要明白这样一个道理:从概率学的角度来说,Blackjack和其他赌场游戏(比如Texas,百家乐等等)有本质性的区别——后者在分类上属于“单一事件”,即每一次事件发生的概率是相对独立的,和前后完全没有任何关系,因此不具有可预测性;而Blackjack则不然,因为任何出现过的牌都会改变之后每一张牌出现的概率,从而对整个牌局产生影响。一度另世界各大赌场闻风丧胆的算牌法就是以此为基础横空出世的。
& 不过在正式介绍算牌法之前,每一名玩家首先要烂熟于心的是Blackjack基本策略表。从博弈论的角度来分析,无论玩家和庄家手里是什么牌,在玩家做出下一步决定的时候(要牌、停牌或加倍),总有一个相对最优方案能达到“纳什均衡,从而在概率上增加获胜的可能。比如说,通常情况下两个A和两个8要分牌,玩家起手11点要加倍,庄家起手小牌时10点和9点也要加倍,庄家7点以下随时停止叫牌等等(这些都是最基本的策略——如果不知道的话别把辛苦挣的钱给赌场发工资了)。去Google或者百度一下“21点基本策略表”会得到各式各样由不同玩家总结出来的结果。个人意见是首先可以参考某一个表格,甚至完全背下来。然而根据各地赌场规则的不同,没有一张标准策略表能够无往而不利(例如Blackjack Regular和Blackjack Challenge与Blackjack Plus的叫牌策略就相差甚远),这就需要玩家不断地积累经验,灵活调整策略,最终得到通过亲身实战经验总结出来的相对完美的策略表。真正的21点玩牌高手,在遇到不同的庄家和游戏规则时会及时调整各种情况下的博弈结果,从而真正地立于不败之地。新手的话可以先把别人的策略表背熟,这样至少保证你不会输得血本无归还是没有问题的。
基本策略表搞定之后,接下来就要掌握制胜的关键——算牌。算牌的原理其实非常简单,但是操作起来却极其复杂。这里介绍最流行、最普遍、也相对容易掌握的High-Low Counting,即高低算牌法。该算法的基本原理是计算剩余牌堆里大小牌的比重,从而随时调整赌注,利用差额赢取巨大利润。在高低算牌法中,从2~A的13张牌分成大、中、小三组:2、3、4、5、6是小牌,算牌时记+1;7、8、9是中牌,记0;10、J、Q、K、A是大牌,记-1。通过相加每一张出现过的扑克牌的数值可以得到一个当前牌局的流水数:如果结果为0,说明之前出现过的大牌和小牌数量相同,之后出现大牌和小牌的几率也完全一样;如果结果为负数,说明之前出现过大牌的数量多于小牌的数量,之后出现小牌的几率增加,而且绝对值越高几率越大;如果结果为正数则刚好相反,说明之前出现过小牌的数量多于大牌的数量,之后出现大牌的几率大大提高。根据21点的游戏规则,小牌对庄家有利,而大牌对玩家有利。因为大牌可以帮助玩家起手至少组成20点,甚至Blackjack,基本上已经立于不败之地;其次,根据庄家软17强制叫牌的规则,大牌可以直接使庄家点数爆掉,从而全数赔付所有赌注;相反,玩家如果拿到几张小牌组成12~17之间这样的点数是非常尴尬的,庄家却可以慢慢累计小牌从而通杀全场。有人可能会问:“如果牌堆里剩下的大牌多,那庄家拿到20点甚至Blackjack的几率不也同样增大了么?”说的没错,几率对每个人来说都是平等的——不过问题是在几率相同的情况下赔率是不同的:庄家即使拿到Blackjack依然是一赔一,但是玩家至少是一赔一点五甚至更多,无论如何还是赚到了。总而言之,通过计算牌局的流水值判断当前牌局是对玩家有利还是庄家有利,从而及时调整赌注。在牌局大热时(比如+10甚至以上)必须果断出手——相信科学的力量,+10的含义是你第一次拿到20点甚至以上的几率已经在当前牌局提高到70%以上了。
不过算牌在实际操作上却是非常困难,绝非朝夕之功:玩家在准确计算每次分发新牌时流水值的变化时,还必须牢牢记住之前几局的结果;同时还要兼顾大局,随时增减赌注,保证冷热场适当的赌注差额以保证利润。除此之外,算牌最困难的一点在于玩家必须克服人性中与生俱来的贪婪和欲望,必须自始至终冷静分析,严格根据计算结果稳定下注,绝对不能抱有丝毫侥幸心理,从而铤而走险,放手一搏。赌徒心态一旦发作,神仙难救。时刻牢记一点:你是在算牌,不是在赌博;你在使用一种科学的方法赚钱,而不是凭借虚无缥缈的运气投机。
& 最后顺便提一句:本人在悉尼Star Casino和墨尔本Crown Casino三天赢取1100美金。只想说明方法绝对没有问题,能赢多少完全取决于个人的领悟能力和操作技巧。
& We don’t
play luck, we make our own
luck.&我们不依赖运气,我们创造运气
& We don’t
hit, we calculate.&我们不投机取巧,我们精心计算
not gambler, we are REAL Blackjack
player.&我们不是赌徒,我们是真正的21点玩家
衷心祝大家新年快乐,财运滚滚,马到成功!
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。玩转21点是一款家庭游戏,但是现在很多朋友都喜欢在网络上玩,而在玩转21点游戏中,最主要的目标就是打败庄家,同时使得自己手中的牌点数不超过玩转21点。不管在玩转21点牌桌上有几个玩家,只有庄家才是你唯一的对手。而玩转21点游戏的最终输赢就取决于:你和庄家手中牌点数的大小。
如果庄家的点数&17点,那么庄家就必须停牌。但是如果庄家的点数&16点,或者是拿到了软17点(带A的手牌),那么庄家就必须再要一张牌,直到点数达到了17点及以上。而玩家就没有那么多限制,完全可以根据自己的手牌来决定要不要牌。但是一旦手牌点数超过了玩转21点,那就是&爆&,不管对手牌几点都是输,就算是随后庄家也&爆&了同样!手牌点数越接近玩转21点的玩家获胜!
在玩转21点中,A牌可以当成1点也可以当成11点,关键就看哪个点数对你比较有利。而所有的人头牌,也就是J、Q、K都是作为10点。其余则按照自身牌点计算。
下注:在玩转21点中有很多种下注方法,玩家想要玩玩转21点游戏就需要了解清楚这些,而且对于在玩转21点游戏中赢就更有机会。比如说在玩转21点游戏中,分牌:拿到了两张一样的牌就可以分牌,也就是投注两家。
加倍:给自己手中的牌加倍下注,不过加倍了之后你就只允许再拿一张牌了。有利有弊,如果没有十足的把握,慎用!
更多玩转21点游戏技巧,推荐阅读:
/news/939015.php这篇博客针对那些以c++语言为基础、刚刚学完面向对象的程序设计的同学们。这篇博客内容作为课程设计很合适。
大牛们可以直接跳过去不看。但是本人也欢迎大牛们提出宝贵意见。
21点游戏是一个牌类游戏。
该游戏由1-7名玩家对战电脑玩家(称为House)。游戏开始时系统将为所有玩家(包括电脑玩家)发2张牌,随后每个玩家(包括电脑玩家)可以按照一定的规则进行加牌。最终,手中牌的点数不超过21点的玩家中,超过电脑玩家点数的玩家获胜。发牌过程中任何超过21点的玩家(包括电脑玩家)将认定为bust(该情况下输得最惨)。
牌面的值:对于数字牌而言,其牌面值为对应数字的值。对于Jack、Queen、King牌而言,其值设定为10。对于Ace牌而言,其值可以判定为1或者11,计算总值时,Ace按照最利于玩家的情况进行取值。
发牌:游戏开始时,系统自动为每个玩家发两张牌。House跟其他玩家不同之处在于:House初始时第一张牌是面朝下的,其他玩家无法知道其值。
要牌:发牌结束后,每位非电脑玩家可以选择是否要牌,如果选择要牌,那么系统将自动发给玩家一张牌。如果添加一张牌之后,所有牌面的总计值超过了21点,则判定为bust。当所有玩家要牌结束之后,进入house要牌阶段。
house要牌:首先house将第一张牌亮出,之后house将自动要牌。如果house的牌面的总计值不超过16点,那么house将继续要牌,直到超过16点。
判断输赢:house要牌结束之后,如果house点数超过了21点,那么判断house为bust,此时所有未bust的玩家判定为获胜。如果house没有bust,那么比house点数少的玩家则判定为lose,跟house点数相等的玩家判定为push(平手),比house点数多并且未bust的玩家则判定为win。
游戏展示:
在控制台类型的project中,展示21点游戏如下图:
上图展示了一个两人游戏,其中一个玩家获胜。另外一个玩家bust。
面向对象的分析
首先我们要对问题中的实体进行抽象和归类。从简介和规则两个模块中,我们可以提出一些实体,并将其抽象为类。
大部分同学可以想到如下的类:
牌(Card)
电脑玩家(House)
人类玩家(Player)
这些类的确比较基础,而且由于题目中的明显暗示,设计出这些类是不难的。
继续想下去,对于每一张牌而言,都有点数和花色之分,并且我们可以想到,由于电脑玩家和人类玩家具有共性和特性,所以可以使用一个基类对两种玩家进行再抽象。
两类玩家的父类GenericPlayer(GenericPlayer)
牌的花色(Suit)
牌的牌值Rank(Rank)
(上面两个高大上的英文名是国际通用的)
大部分同学可以想到,Suit和Rank只是对花色和值的列举,大可不必作为类出现。因此将其处理为全局数组,更好一些的做法是将其作为枚举值放入枚举类型里面。
这时候心急的同学们应该开始在想如何编码了!主函数应该是控制如何洗牌、发牌、判断输赢神马的功能,这些功能都可以写成一个函数。如此这般、三下五除二,编码,搞定了!
但是这样绝对不perfect!
还是看我下面怎么分析吧骚年。
我们抛除上面的分析,先来谈一下牌类游戏。对于牌类游戏来讲,我们是将一副牌分成了不同的部分。分到不同部分的牌,都有一定的排列组合。我们把这个部分的牌称作“手牌(Hand)”。这个“手牌”的概念在牌类游戏的设计中极其重要。因为玩家进行牌类游戏时,判断如何对牌进行操作,其实就是在看自己的手牌情况。手牌中的牌随时可能变化,但是我们还是可以基于手牌的实时变化情况进行判断。
我们可以先这么认为:
手牌(hand)是牌的一种集合(collection)形式
那么手牌有哪些重要作用呢?
知道牌的实时组合以及相应的规则。包括还剩多少张牌,牌的组合形成的达到某种规则的属性(比如在21点游戏中,我们关心的是牌的牌面值总和,又比如斗地主游戏中是否有顺子、飞机、炸弹等等)。
控制牌的“分牌”、“出牌”或者“要牌”等实时变化的情况。
根据牌的组合情况和规则判断游戏胜负。
以上这三个作用奠定了一个牌类游戏的设计基础。但是由于不同的游戏规则,手牌的具体设计是不同的。根据规则制定的角色(role)(比如21点游戏里面的house和player)情况,我们往往要对手牌抽象出的类进行封装继承等面向对象特性的操作,因为不同角色有不同的规则(比如21点游戏里面,house和普通玩家player的要牌规则是不同的,又比如21点游戏里面,house没有胜负之分,只有player有)。
但是基于上面的描述,我们至少可以认为:
将所有角色中手牌的共同特性抽象为手牌类是非常合理的。
但是手牌中的其他特性如何处理,到底不同的角色是继承自手牌类还是将手牌类作为角色的一部分,就要看具体的设计是怎样的了。
总结一下,现在我们有了Card类、Hand类、Player类、House类、GenericPlayer类这几个类,并且定义了Suit和Rank这两个和Card类相关的枚举类型。但是我们的分析还远远没有结束。且看我下回分解。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:536次
排名:千里之外

我要回帖

更多关于 一个人简单扑克牌游戏 的文章

 

随机推荐