12345这五用42张扑克牌算命方法怎样算才得10

当前位置: >
[TICHU]转个贴推荐一种扑克玩法给大家,撸主已经玩得欲罢不能了
整理时间: 10:23 来源: 作者:编辑 点击:次
【楼主】碎嘴 10:37& 先介绍背景 转自百度贴吧:
Tichu的作者是一老头,叫Urs Hostettler,出生在柏林,现在60多数了,当然出版游戏时才就30多岁吧。除Tichu外也设计过其它一些游戏,有很多是Anno Domini,应该是各国背景的知识卡片游戏。
根据Tichu规则上的Thank说明,这款游戏是作者来中国南京旅游,有一位Mr.Chuang(庄先生)陪同当导游,并教会了德国人这种扑克玩法,规则里的注释提到,他们是在旅游景点的纪念品商店后面的孔子庙,庄先生找了几个人在打Tichu,德国人当时在旁边看,后面一起参与了游戏。后来回国后改进了一些规则,最终出版了这款游戏,所以说Tichu最早是中国人发明的。
Tichu是什么意思?规则上的解释Tichu cannot be explained!,哈哈,就是不解释,不过应该是地主的谐音,我们玩时都是叫大地主小地主的说,但确实是和斗地主有区别的,不过斗地主印象中1995年以后才开始有的,Tichu是1991,不知道南京那边玩的这种扑克玩法是谁发明的,为什么没有流行起来。
Tichu的四人规则就叫TICHU NANJING ,三人规则叫TRICHU(third+tichu),六人规则叫TICHU TIENTSIN,天津玩法,是作者在天津旅游时有一位Mr.Zhu教他的,有点类似敲三家吧,5-10人的规则叫One is always the “a…”,就是跑得快。――――――――――――――――――――――――――――――――――分割线―――――――――――――――――――――――――――
下面是规则 转自BGC幻想:
Tichu是一款纸牌游戏,跟扑克类似,一共有56张牌,其中52张跟传统的扑克一样,JQKA,四种花色,不过扑克中是黑红梅方,两种颜色,tichu是四种图案(翡翠、宝剑、宝塔、红星),四种颜色(绿黑蓝红),更容易区分。另外四张特殊牌,龙凤狗雀。tichu是根据中国的一些扑克玩法改编来的,
牌型说明大小
单张任意单独得一张牌叫做单张,如2 5 9 K 龙1最小,然后是2-A,最大是龙,凤大0.5
对子两张相同的牌,如33 88 AA22最小,AA最大
三条三张相同的牌,如444 777 QQQ222最小 AAA最大
三带二三条带一对只比三条牌型大小,带的对不比大小
连对两副以上连续数字的对子 如3344 JJQQKKAA3344小于JJQQ.
顺子五张以上连续数字的单张12345最小 10JQKA最大
炸弹四张相同的牌2222最小 AAAA最大
同花顺连续相同花色的顺子,也是炸弹size=2&同花顺大过炸弹,都是同花顺和顺子的大小一样,6张大于5张
游戏详细流程:
发牌阶段:
四名玩家分成两组,同组的为同伴,不同组的为对手,交叉坐。随机选择一名起始玩家,从该玩家开始逆时针依次发牌,先发每人8张牌,拿起8张牌决定是否叫大地主,之后再发剩下6张,共14张手牌,然后进入换牌阶段。
拿起14张牌后,每名玩家需要选出3张牌给另三名玩家,同时自己也会收到3张牌,给牌时需要先给出三张牌后才能看其它玩家所给的牌,并且给牌分别给到每名玩家面前的左侧中侧右侧位置,这样能清楚的知道收到的牌是谁给的,比如说我的同伴给的牌应该是放中间,上家给的牌放左侧,下家给的牌放右侧。
出牌阶段:
换牌阶段结束后,正式开始出牌,由拥有1(雀)的玩家开始先出牌,出1可以选择叫牌,然后逆时针出牌,玩家可以选择出牌或者不要,当一名玩家出牌后,另三名玩家都不要,该名玩家得到牌权并重新出牌。当有三名玩家手牌出光,该局结束,开始结算分数。
计分阶段:
在游戏中一名玩家出牌后另三名玩家都不要,该玩家得到牌权并收掉一轮出牌中的分数,分数牌为5、10、K、凤,龙分是需要给出去的,在每局结束时,结算大地主、小地主、每人得分或双关得分,前三名玩家得到的分数有效,最后一名得到的分要给第一名,手上求出牌的分给对手。
大小地主和双关及得分详细说明:
大地主:在发牌阶段发完8张牌后可根据牌的好坏决定是否叫大地主,在出牌阶段第一个出完手牌则算叫成,该组额外得200分,否则要扣掉200分
小地主:每名玩家在出自己的第1张牌之前都可以选择叫小地主,同样是在出牌阶段第一个出完手牌则算叫成,该组额外得100分,否则要扣掉100分。叫小地主的时机可以在发完14张牌时,换牌阶段结束后,在出牌阶段任意时候,哪怕其它三名玩家出的都只剩1张牌,你1张未出,也可以叫小地主。换牌阶段中不可以叫,会影响换牌。
双关:同组的两名玩家成为第一名和第二名出完手牌的玩家,则叫双关,双关该组得200分,并且不计5、10、K、龙、凤的分数。如果是小地主双关,就是300分。
5为5分,10、K为10分,龙为25分、凤为-25分,全部加起来共100分,除龙之外,其它分数都是得到牌权时收分,出龙得到牌权后,则要把龙及所吃的其它分数给对手中的一位,因为最后一名的分数是给第一名,所以一般来说给你觉得走不了的玩家。例如:5-9-10-龙,龙+15分一起给掉。
特殊牌介绍:
游戏流程基本讲完了,下面开始详细说说龙凤狗雀的作用。
龙:龙是单张最大的牌,当出单张牌有玩家出龙时,除炸弹或同花顺,龙一定最大。
凤:凤有两个作用,一是单张牌大0.5,比如说上家出7,此时出凤就是7.5,上家出A,出凤就是A.5,此时就只有龙能大过A.5了,另一个作用是百搭,比如5+凤,就是一对5,34凤67,凤可作为5连成顺,但不可搭成炸弹和同花顺。
狗:狗的作用是换牌权,不能大任何牌,当有玩家得到牌权时出狗,则变成同伴出牌,如果同伴已出完手牌,则是上家出牌,如果上家也出完手牌,则还是自己出牌。狗一般来说换牌时会给掉,但有时确非常有用。
雀:有雀的玩家先出牌,可以选择出雀或者出其它牌,雀单张出时为1,也可以连12345的顺,出雀时可以选择叫牌,但不能叫龙凤狗,当叫牌后,之后出牌的玩家有此牌必须出,直到出现为止。比如说出单张雀,叫8,下家有8出8,如果有888,则出1个8,如果是8888炸弹,则可以选择出1张8或者炸弹。如果下家没有8,则把雀当成1,随便出单张,比如出了6,之后玩家有8也得必须出,如果一轮之后没有出现8,得到牌权的玩家则要出8,出雀带顺子时叫牌,也是有必须出,包括搭凤,比如玩家出12345叫A,如果下家有10JQKA的顺,则必须打。10JQ凤A,也需要打,如果没有A,则可以不要。关于雀的规则确实有点乱,就记出无论叫什么牌都必须出现就行了。
炸弹的使用方法
手牌中四张相同的牌或同花顺为炸弹,同花顺大于四张,910JQK的同花顺大于34567,6张同花顺大于5张。炸弹的出牌跟正常出牌不一样,除了雀前狗后,都可以随时出,如果多名玩家有炸弹,谁先说话谁出,如果同时说话,则按当前出牌玩家的逆时针顺序出。雀前狗后的意思是,出第1张牌之前不能炸,当有玩家出狗后不能炸。炸弹可以炸自己出的牌,比如出龙再炸掉,可以自己收分。
游戏结束:
每局出完牌计分后进入下一局,由第一名玩家成为起始,负责洗牌并发牌,从自己开始发第一张,其实正常玩时都是谁洗牌都可以。当有一组得到超过1000分后,游戏结束,该组获得胜利,如果超过1000分并且平分的时候,则加赛。
游戏规则基本讲完了,很多玩家会觉得看完后还不明白,其实官方有一个FAQ,不过我基本上把问题已经在流程里面说了,还是把一些容易疑惑的问题单独提出来说一下,如果有其它问题,再慢慢补充。
1:叫大小地主的时机,可以同时叫吗?可以四名玩家都叫吗?
大地主是在发前8张牌的时候才能决定叫,小地主是在出自己的第1张牌前叫,叫了大地主的玩家则不能再叫小地主,当有玩家叫了大地主或小地主后,其它玩家也可以叫,包括同伴,但一般来说肯定都是对着叫,但也有例外,比如一家叫了小地主,但明显走不了,同伴此时1张牌未出,但有走的可能性,这时可以叫小地主,如果打成,则挽回损失,100和-100抵掉。
2:雀叫牌后到底应该怎么出?
之前关于雀解释的挺多的了,再重申几个问题,有雀的玩家一定是先出牌玩家,可以出雀或者出其它牌,雀在之后得到牌权出的时候仍然可以选择叫牌,记住一个原则,无论叫什么牌,都是在合理规则下出牌,就是说我出单张,你不能出对,按斗地主的规则记就行了。出雀后叫的牌一定会出现,如果叫牌时需要考虑到自己的牌,防止拆到自己。例如有玩家出带雀顺子,比如12345,叫A,其它三名玩家都不要,这时该玩家则要自己出A,如果没有A,随便出其它牌,比如说出了999,下家有AAA也必须出。
3:凤搭顺子时可以任意搭吗?
凤做为百搭时不能搭炸弹,999+凤是不行的,而且也不能这样出,搭顺子时可以代替2-A,也就是说不能出JQKA凤的顺,正常到A的顺就是最大了。
4:换牌时候总容易弄错牌怎么办?
新手在换牌时会容易乱,经常弄错牌,其实记住一定是先给出去3张,手上剩11张牌,然后再拿起收到的3张,我们刚开始玩的时候也经常错,就想了一个办法,换错牌的扣100分,很快就再也没人换错牌了。
5:记分规则没明白,能举例说明吗?
记分是规则中比较难理解的,尤其是龙的得分,这里详细举例说明:四名玩家甲乙丙丁,甲乙一组,丙丁一组,甲叫了小地主,甲出K,丙出龙,将龙+K共35分给了乙,然后甲第一个出完牌,面前有30分,丙第二,面前有10分,丁第三、面前有5分,该局结束,乙手上还有一对10未出,这20分给丙丁组,乙面前的35分(龙K)给第一名玩家甲,甲乙组得分为100+35+30=165分,丙丁组得乙给的20+另外10+5共35分。
有专用牌,也可以自己用扑克DIY一副,也就龙凤狗雀4张和普通扑克不同。作者:黑礁双子 10:55好长。。。。还是不玩了。。。作者:超级低能儿 10:55我们还是来斗地主吧作者:康德二物 10:55一看猜是地主,没错吧?作者:阿诺德爵士 10:56其实红心大战很好玩尤其是3家坑那个黑桃Q的时候作者:SOGolden 11:17我们还是斗地主吧作者:n网cn 11:19作者:powerstrike 11:20我们还是游戏王吧。作者:安妮希I 11:20chuang一般不是张吗?作者:Hn_@ 11:20LZ在说什么,好长。我们还是先来一盘斗地主把。。。作者:风吻之伤 11:22作者:清风明月胡不归 11:22太长了
看都懒得看 别说学了。。作者:云是水的流浪 11:38汗,玩了十几年的五十K竟然被人做成正规游戏了~我们小时候玩这个画乌龟来着,以后就赌钱,一分一块钱作者:无聊の雀斑 11:43还是来升级把
上一篇: 下一篇:没有了
【猜您喜欢】
【其他人还看了】
Copyright & 日相关文章推荐
算法描述:
从扑克牌中随机抽取5张牌,判断是不是一个顺子,即这5张牌是不是连续的2-10位数字本身,A为1,J为11,Q为12,K为13,而大小王可以看成任意数字
算法解决:
/**********...
从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。
题目:从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。
原文地址:http://m.blog.csdn.net/blog/wuwuwuwuwuwuwuwu/9370937
剑指Offer面试题 44:扑克牌的顺子
从扑克牌中随机抽 5 张牌,判断是不是顺子,即这 5 张牌是不是连续的。 2-10 为数字本身,A 为 1,J 为 11,Q 为 12,K 为 13,而大小...
题目是这样的:有n张扑克牌,每张牌的取值范围是:2,3,4,5,6,7,8,9,10,J(11),Q(12),K(13),A(14)。(同样的牌的数目不超过4张)。可以出对子,三张一样的,四张一样的或...
一,颠倒栈。
1)题目:用递归颠倒一个栈。例如输入栈{1, 2, 3, 4, 5},1在栈顶。颠倒之后的栈为{5, 4, 3, 2, 1},5处在栈顶。
2)分析:乍一看到这道题目,第一反...
题目来源:/problem.php?pid=1355
**题目:从扑克牌中随机抽五张牌,判断是不是一个顺子,即这五张牌是不是连续的。2—10为数字本身,A为1,J为11,Q为12,K为13,大小王可以看成任意数字。
代码示例:**#include
本题应该还是思路比较清晰的一道题目了,我们首先统计一下大小王的个数,然后对给出的数进行排序,排序后我们统计出数字的空缺数字个数,比如若排序后是1 3,则空缺数字2,空缺的数字个数为1。最后我们比较大小...
随机抽取扑克牌中的5张牌,判断是不是顺子,即这5张牌是不是连续的。其中A看成1,J看成11,Q看成12,K看成13,大小王可以看成任何需要的数字。
:这道题的意思很明确,我们玩扑克...
他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)扑克牌2 6 1 6怎样得24_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
扑克牌2 6 1 6怎样得24
您的回答被采纳后将获得:
系统奖励15(财富值+成长值)+难题奖励20(财富值+成长值)
我有更好的答案
1×(6+6)×2=24
为您推荐:
其他类似问题
扑克牌的相关知识
换一换
回答问题,赢新手礼包扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
下载作业帮安装包
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
从一副扑克牌(抽出大小王)52张里任意抽取4张,抽出的是4张同花顺的概率
作业帮用户
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
抽4张牌总共有C(4,52)种顺子无非是,...JQKA,一共有4^4X11种,所以概率=4^4x11/C(4,52)= 0.01
那如果是抽5张呢
抽5张牌总共有C(5,52)种
顺子无非是1,...10JQKA,一共有4^5X10种,
所以概率=4^5x10/C(5,52)=
解法完全一样,可见5张比4张得到顺子的概率要小
题说的是同花顺,不应该乘C(4,1)吗
不好意思看错了,同花顺就更简单了
4张概率=4x11/C(4,52)= 0.00016
5张概率=4x10/C(5,52)=0.000015
第一个4就是C(4,1)简写,楼下多乘了一个4不对。
顺子和同花顺的4张5张算法都有了,望采纳。
为您推荐:
其他类似问题
取4张牌总共有C(4,52)种4张同花顺的话,从1开始可以抽出10对(1,2,3,4,5,6,7,8,9,10),另外有4种图案,所以就是4*10=40。最后4*4*10/C(4,52)=0.15%
扫描下载二维码创建 10 个基本脚本
此内容是该系列 # 部分中的第 # 部分: 可以用 PHP 编写的 30 个游戏脚本,第 1 部分/developerworks/cn/views/global/libraryview.jsp?series_title_by=可以用+php+编写的+30+个游戏脚本敬请期待该系列的后续内容。此内容是该系列的一部分:可以用 PHP 编写的 30 个游戏脚本,第 1 部分敬请期待该系列的后续内容。
开始之前作为一名游戏专家/设计者和开发人员,我经常发现自己在运行、规划和玩游戏时,很少编写有用的实用程序和脚本。有时我需要快速想出创意。其他时候,我只需要编出一大堆非玩家角色(Non-Player Character,NPC)的名称。偶尔,我还需要处理数字、处理一些异常或者将一些文字游戏集成到游戏中。只需事先完成一点脚本工作,就可以更好地管理这些任务。本文将探究在各种游戏中可以使用的 10 个基本脚本。代码压缩包包含所讨论的每个脚本的完整源代码,并且可以在
查看脚本实际运行情况。我们将快速地介绍这些脚本。有关如何查找主机或设置服务器的内容将不做介绍。有很多 Web 托管公司提供 PHP,并且如果需要安装自己的 PHP,XAMPP 安装程序使用起来也十分简单。我们将不会花费大量时间谈论 PHP 最佳实践或游戏设计技术。本文介绍的脚本易于理解、使用简单并可以快速掌握。简单的掷骰器许多游戏和游戏系统都需要骰子。让我们先从简单的部分入手:掷一个六面骰子。实际上,滚动一个六面骰子就是从 1 到 6 之间选择一个随机数字。在 PHP 中,这十分简单:echo rand(1,6);。在许多情况下,这基本上很简单。但是在处理机率游戏时,我们需要一些更好的实现。PHP 提供了更好的随机数字生成器:mt_rand()。在不深入研究两者差别的情况下,可以认为 mt_rand 是一个更快、更好的随机数字生成器:echo mt_rand(1,6);。如果把该随机数字生成器放入函数中,则效果会更好。清单 1. 使用 mt_rand() 随机数字生成器函数function roll () {
return mt_rand(1,6);
echo roll();然后可以把需要滚动的骰子类型作为参数传递给函数。清单 2. 将骰子类型作为参数传递function roll ($sides) {
return mt_rand(1,$sides);
echo roll(6);
// roll a six-sided die
echo roll(10);
// roll a ten-sided die
echo roll(20);
// roll a twenty-sided die从这里开始,我们可以继续根据需要一次滚动多个骰子,返回结果数组;也可以一次性滚动多个不同类型的骰子。但是大多数任务都可以使用这个简单的脚本。随机名称生成器如果正在运行游戏、编写故事或者一次性创建大批字符,有时会疲于应付不断出现的新名字。让我们看一看可用于解决此问题的一个简单随机名称生成器。首先,让我们创建两个简单数组 — 一个用于名字,一个用于姓氏。清单 3. 名字和姓氏的两个简单数组$male = array(
"William",
"Filbert",
$last = array(
"Winkler",
);然后就可以从每个数组中选择一个随机元素:echo $male[array_rand($male)] . ' ' . $last[array_rand($last)];。要一次性提取多个名称,只需混合数组并根据需要提取。清单 4. 混合名称数组shuffle($male);
shuffle($last);
for ($i = 0; $i &= 3; $i++) {
echo $male[$i] . ' ' . $last[$i];
}基于此基本概念,我们可以创建保存名字和姓氏的文本文件。如果在文本文件的每一行中存放一个名字,则可以轻松地用换行符分隔文件内容以构建源代码数组。清单 5. 创建名称的文本文件$male = explode('\n', file_get_contents('names.female.txt'));
$last = explode('\n', file_get_contents('names.last.txt'));构建或查找一些好的名字文件( 中附带了一些文件),此后我们绝不再需要为名字烦恼。场景生成器利用构建名字生成器使用的相同基本原理,我们可以构建场景生成器。此生成器不但在角色扮演游戏中十分有用,而且在需要用到伪随机环境集合(可用于角色扮演、即兴创作、写作等情况)的情况下也十分有用。我最喜欢的游戏之一,Paranoia 在其 GM Pack 中包括了 “任务混合器(mission blender)”。任务混合器可用于在快速滚动骰子时整合完整任务。让我们整合自己的场景生成器。考虑以下场景:您醒来后发现自己迷失于丛林中。您知道自己必须赶去纽约,但是不知道原因。您可以听到附近的狗叫声及清晰的敌方搜寻者的声音。您浑身发冷、不住颤抖,而且没有武器。该场景中的每一句话都介绍场景的特定方面:“您醒来后发现自己迷失于丛林中” — 这句话将建立设置。“您知道自己必须赶去纽约” — 这句话将描述目标。“您可以听到狗叫声” — 这句话将介绍敌人。“您浑身发冷、不住颤抖,而且没有武器” — 这句话将添加复杂度。就像创建名字和姓氏的文本文件一样,首先分别创建设置、目标、敌人和复杂度的文本文件。代码归档中附带了样例文件。在拥有这些文件后,生成场景的代码与生成名称的代码基本相同。清单 6. 生成场景$settings = explode("\n", file_get_contents('scenario.settings.txt'));
$objectives = explode("\n", file_get_contents('scenario.objectives.txt'));
$antagonists = explode("\n", file_get_contents('scenario.antagonists.txt'));
$complications = explode("\n", file_get_contents('plications.txt'));
shuffle($settings);
shuffle($objectives);
shuffle($antagonists);
shuffle($complications);
echo $settings[0] . ' ' . $objectives[0] . ' ' . $antagonists[0] . ' '
. $complications[0] . "&br /&\n";我们可以通过添加新文本文件向场景中添加元素,也可能希望添加多重复杂度。添加到基本文本文件中的内容越多,场景随时间的变化就越多。牌组创建器(Deck builder)和装备(shuffler)如果您要玩纸牌并且要处理与纸牌相关的脚本,我们需要用装备中的工具整合一副牌组构建器。首先,让我们构建一副标准纸牌。需要构建两个数组 — 一个用于保存同花色的组牌,而另一个用于保存牌面。如果稍后需要添加新组牌或牌类型,则这样做将获得很好的灵活性。清单 7. 构建一副标准扑克牌$suits = array (
"Spades", "Hearts", "Clubs", "Diamonds"
$faces = array (
"Two", "Three", "Four", "Five", "Six", "Seven", "Eight",
"Nine", "Ten", "Jack", "Queen", "King", "Ace"
);然后构建一副牌数组来保存所有纸牌值。只需使用一对 foreach 循环即可完成此操作。清单 8. 构建一副牌数组$deck = array();
foreach ($suits as $suit) {
foreach ($faces as $face) {
$deck[] = array ("face"=&$face, "suit"=&$suit);
}在构建了一副扑克牌数组后,我们可以轻松地洗牌并随机抽出一张牌。清单 9. 洗牌并随机抽出一张牌shuffle($deck);
$card = array_shift($deck);
echo $card['face'] . ' of ' . $card['suit'];现在,我们就获得了抽取多副牌或构建多层牌盒(multideck shoe)的捷径。胜率计算器:发牌由于构建扑克牌时会分别跟踪每张牌的牌面和花色,因此可以通过编程方式利用这副牌来计算得到特定牌的几率。首先每只手分别抽出五张牌。清单 10. 每只手抽出五张牌$hands = array(1 =& array(), 2=&array());
for ($i = 0; $i & 5; $i++) {
$hands[1][] = implode(" of ", array_shift($deck));
$hands[2][] = implode(" of ", array_shift($deck));
}然后可以查看这副牌,看看剩余多少张牌以及抽到特定牌的机率是多少。查看剩余的牌数十分简单。只需要计算 $deck 数组中包含的元素数。要获得抽到特定牌的机率,我们需要一个函数来遍历整副牌并估算其余牌以查看是否匹配。清单 11. 计算抽到特定牌的几率function calculate_odds($draw, $deck) {
$remaining = count($deck);
$odds = 0;
foreach ($deck as $card) {
($draw['face'] == $card['face'] && $draw['suit'] ==
$card['suit'] ) ||
($draw['face'] == '' && $draw['suit'] == $card['suit'] ) ||
($draw['face'] == $card['face'] && $draw['suit'] == '' ) ) {
return $odds . ' in ' $
}现在可以选出尝试抽出的牌。为了简单起见,传入看上去类似某张牌的数组。我们可以查找特定的一张牌。清单 12. 查找指定的一张牌$draw = array('face' =& 'Ace', 'suit' =& 'Spades');
echo implode(" of ", $draw) . ' : ' . calculate_odds($draw, $deck);或者可以查找指定牌面或花色的牌。清单 13. 查找指定牌面或花色的牌$draw = array('face' =& '', 'suit' =& 'Spades');
$draw = array('face' =& 'Ace', 'suit' =& '');简单的扑克发牌器现在已经得到牌组构建器和一些工具,可以帮助计算出抽出特定卡的机率,我们可以整合一个真正简单的发牌器来进行发牌。出于本例的目的,我们将构建一个可以抽出五张牌的发牌器。发牌器将从整副牌中提供五张牌。使用数字指定需要放弃哪些牌,并且发牌器将用一副牌中的其他牌替换这些牌。我们无需指定发牌限制或特殊规则,但是您可能会发现这些是非常有益的个人经验。如上一节所示,生成并洗牌,然后每只手五张牌。按数组索引显示这些牌,以便可以指定返回哪些牌。您可以使用表示要替换哪些牌的复选框来完成此操作。清单 14. 使用复选框表示要替换的牌foreach ($hand as $index =&$card) {
echo "&input type='checkbox' name='card[" . $index . "]'&
" . $card['face'] . ' of ' . $card['suit'] . "&br /&";
}然后,计算输入 array $_POST['card'],查看哪些牌已被选择用于替换。清单 15. 计算输入$i = 0;
while ($i & 5) {
if (isset($_POST['card'][$i])) {
$hand[$i] = array_shift($deck);
}使用此脚本,您可以尝试找到处理特定一组牌的最佳方法。Hangman 游戏Hangman 实质上是一款猜字游戏。给定单词的长度,我们使用有限的几次机会猜这个单词。如果猜出了出现在该单词中的一个字母,则填充该字母出现的所有位置。在猜错若干次(通常为六次)后,您就输了比赛。要构建一个简陋的 hangman 游戏,我们需要从单词列表开始。现在,让我们把单词列表制作成一个简单的数组。清单 16. 创建单词列表$words = array (
"triangle",
"particle",
"birdhouse",
"minimum",
);使用前面介绍的技术,我们可以把这些单词移动到外部单词列表文本文件中,然后根据需要导入。在得到单词列表后,需要随机选出一个单词,将每个字母显示为空,然后开始猜测。我们需要在每次进行猜测时跟踪正确和错误的猜测。只需序列化猜测数组并在每次猜测时传递它们,就可实现跟踪目的。如果需要阻止人们通过查看页面源代码侥幸猜对,则需要执行一些更安全的操作。构建数组以保存字母和正确/错误的猜测。对于正确的猜测,我们将用字母作为键并用句点作为值填充数组。清单 17. 构建保存字母和猜测结果的数组$letters = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o',
'p','q','r','s','t','u','v','w','x','y','z');
$right = array_fill_keys($letters, '.');
$wrong = array();现在需要一些代码来评估猜测并在完成猜字游戏的过程中显示该单词。清单 18. 评估猜测并显示进度if (stristr($word, $guess)) {
$show = '';
$right[$guess] = $
$wordletters = str_split($word);
foreach ($wordletters as $letter) {
$show .= $right[$letter];
$show = '';
$wrong[$guess] = $
if (count($wrong) == 6) {
foreach ($wordletters as $letter) {
$show .= $right[$letter];
中,可以看到如何序列化猜测数组并将该数组从一次猜测传递到另一次猜测中。纵横字谜助手我知道这样做不合适,但是有时在玩纵横拼字谜时,您不得不费劲地找出以 C 开头并以 T 结尾、包含五个字母的单词。使用为 Hangman 游戏构建的相同单词列表,我们可以轻松地搜索符合某个模式的单词。首先,找到一种传输单词的方法。为了简单起见,用句点替换缺少的字母:$guess = "c...t";。由于正则表达式将把句点处理为单个字符,因此我们可以轻松地遍历单词列表以查找匹配。清单 19. 遍历单词列表foreach ($words as $word) {
if (preg_match("/^" . $_POST['guess'] . "$/",$word)) {
echo $word . "&br /&\n";
}根据单词列表的质量及猜测的准确度,我们应当能够得到合理的单词列表以用于可能的匹配。您必须自己决定 “表示 ‘不按规则玩’ 的由五个字母组成的单词” 的谜底是 “chest” 还是 “cheat”。米德里比斯米德里比斯是一款文字游戏,玩家在游戏中得到一个简短的故事并用同一类型的不同单词替换主要类型的单词,从而创建同一个故事的更无聊的新版本。阅读以下文本:“I was walking in the park when I found a lake. I jumped in and swallowed too much water. I had to go to the hospital.” 开始用其他单词标记替换单词类型。开始和结束标记带有下划线用于阻止意外的字符串匹配。清单 20. 用单词标记替换单词类型$text = "I was _VERB_ing in the _PLACE_ when I found a _NOUN_.
I _VERB_ed in, and _VERB_ed too much _NOUN_.
I had to go to the _PLACE_.";接下来,创建几个基本单词列表。对于本例,我们也不会做得太复杂。清单 21. 创建几个基本单词列表$verbs = array('pump', 'jump', 'walk', 'swallow', 'crawl', 'wail', 'roll');
$places = array('park', 'hospital', 'arctic', 'ocean', 'grocery', 'basement',
'attic', 'sewer');
$nouns = array('water', 'lake', 'spit', 'foot', 'worm',
'dirt', 'river', 'wankel rotary engine');现在可以重复地评估文本来根据需要替换标记。清单 22. 评估文本while (preg_match("/(_VERB_)|(_PLACE_)|(_NOUN_)/", $text, $matches)) {
switch ($matches[0]) {
case '_VERB_' :
shuffle($verbs);
$text = preg_replace($matches[0], current($verbs), $text, 1);
case '_PLACE_' :
shuffle($places);
$text = preg_replace($matches[0], current($places), $text, 1);
case '_NOUN_' :
shuffle($nouns);
$text = preg_replace($matches[0], current($nouns), $text, 1);
echo $很明显,这是一个简单而粗糙的示例。单词列表越精确,并且花在基本文本上的时间越多,结果就越好。我们已经使用了文本文件创建名称列表及基本单词列表。使用相同原则,我们可以创建按类型划分的单词列表并使用这些单词列表创建更加变化多端的米德里比斯游戏。乐透机全部选中乐透的六个正确号码 —— 退一步说 —— 在统计学上是不可能的。不过,许多人仍然花钱去玩,而且如果您喜欢号码,则查看趋势图可能很有趣。让我们构建一个脚本,该脚本将允许跟踪赢奖号码并在列表中提供选择次数最少的 6 个号码。(免责声明:这不会帮助您中乐透奖,因此请不要花钱购买奖券。这只是为了娱乐)。把赢奖的乐透选择保存到文本文件中。用逗号分隔各个号码并把每组号码放在单独一行中。使用换行符分隔文件内容并使用逗号分隔行后,可以得到类似清单 23 的内容。清单 23. 把选择的赢奖乐透保存到文本文件中$picks = array(
array('6', '10', '18', '21', '34', '40'),
array('2', '8', '13', '22', '30', '39'),
array('3', '9', '14', '25', '31', '35'),
array('11', '12', '16', '24', '36', '37'),
array('4', '7', '17', '26', '32', '33')
);很明显,这不足以成为绘制统计数据的基本文件。但是它是一个开端,并且足以演示基本原理。设置一个基本数组以保存选择范围。例如,如果选择 1 到 40 之间(例如,$numbers = array_fill(1,40,0);)的号码,则遍历我们的选择,递增相应的匹配值。清单 24. 遍历选择foreach ($picks as $pick) {
foreach ($pick as $number) {
$numbers[$number]++;
}最后,根据值将号码排序。此操作应当会把最少选择的号码放在数组的前部。清单 25. 根据值将号码排序asort($numbers);
$pick = array_slice($numbers,0,6,true);
echo implode(',', array_keys($pick));通过有规律地向包含中奖号码列表的文本文件添加实际的乐透中奖号码,可以发现选号的长期趋势。查看某些号码的出现频率十分有趣。结束语本文可以帮助您使用 PHP 充实开发游戏的经验。在 “用 PHP 可以编写的 30 个游戏脚本” 这一系列的第 2 部分中,我们将在本文提供的代码的基础上进行构建,并且深入讨论可以带给您更多好处的脚本。
下载资源 (os-php-gamescripts1-php10games1.zip | 377KB)相关主题您可以参阅本文在 developerWorks 全球网站上的 。:XAMPP 是易于安装的 Apache 发行版,其中包含 MySQL、PHP 和 Perl。查看所有脚本的 。 是姓名列表的优秀资源。获得关于
的一些信息。了解
的基本规则。这里是一些 。而且
甚至提供了更多单词列表。访问 。:阅读介绍如何获得与 Linux 结合使用的 Apache V2 和 PHP V4.x(也可以使用 PHP V5.x)的文章。“” 将介绍如何在 Windows 中安装和配置 PHP(一些步骤适用于 Linux)。阅读 “” 了解 PHP 的基础知识。然后阅读
了解如何使用 DOM 和 SAX 将文件上传到非 Web 可访问的位置。而
将完成工作流程应用程序。查阅
了解 PHP 数据对象及其功能的更多信息。 将提供 PHP V5 中的 SOAP API 的参考信息。 是 PHP 开发者的重要资源。查阅 “”。查看 IBM developerWorks 的
扩展 PHP 技巧。要将数据库与 PHP 结合使用?查看 ,它是一个无缝的、可以立即使用、易于安装、支持 IBM DB2 V9 的 PHP 开发和生产环境。访问 developerWorks ,获得丰富的 how-to 信息、工具和项目更新,帮助您用开放源码技术进行开发,并与 IBM 产品结合使用。
添加或订阅评论,请先或。
有新评论时提醒我
static.content.url=/developerworks/js/artrating/SITE_ID=10Zone=Open sourceArticleID=360524ArticleTitle=可以用 PHP 编写的 30 个游戏脚本,第 1 部分: 创建 10 个基本脚本publish-date=

我要回帖

更多关于 扑克牌有多少张 的文章

 

随机推荐