设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客

25个不错PHP的游戏编程脚本代码分享

2011-3-30 14:00| 发布者: joejoe0332| 查看: 8868| 评论: 0|原作者: 开源中国社区|来自: 开源中国社区

摘要:   本文介绍了25个不错PHP的游戏编程脚本代码,包括简单的掷骰器、随机名称生成器、场景生成器、牌组创建器(Deck builder)和装备(shuffler)、简单的扑克发牌器、Hangman游戏、纵横字谜助手、米德里比斯、乐透机等。 ...

  胜率计算器:发牌

  由于构建扑克牌时会分别跟踪每张牌的牌面和花色,因此可以通过编程方式利用这副牌来计算得到特定牌的几率。首先每只手分别抽出五张牌。

  清单 10. 每只手抽出五张牌

  1. $hands = array(1 => array(), 2=>array());  
  2. for ($i = 0; $i < 5; $i++) {  
  3. $hands[1][] = implode(" of "array_shift($deck));  
  4. $hands[2][] = implode(" of "array_shift($deck));  

  然后可以查看这副牌,看看剩余多少张牌以及抽到特定牌的机率是多少。查看剩余的牌数十分简单。只需要计算 $deck 数组中包含的元素数。要获得抽到特定牌的机率,我们需要一个函数来遍历整副牌并估算其余牌以查看是否匹配。

  清单 11. 计算抽到特定牌的几率

  1. function calculate_odds($draw$deck) {  
  2. $remaining = count($deck);  
  3. $odds = 0;  
  4. foreach ($deck as $card) {  
  5. if (  ($draw['face'] == $card['face'] && $draw['suit'] ==  
  6. $card['suit'] ) ||  
  7. ($draw['face'] == '' && $draw['suit'] == $card['suit'] ) ||  
  8. ($draw['face'] == $card['face'] && $draw['suit'] == '' ) ) {  
  9. $odds++;  
  10. }  
  11. }  
  12. return $odds . ' in ' $remaining;  

  现在可以选出尝试抽出的牌。为了简单起见,传入看上去类似某张牌的数组。我们可以查找特定的一张牌。

  清单 12. 查找指定的一张牌

  1. $draw = array('face' => 'Ace''suit' => 'Spades');  
  2. echo implode(" of "$draw) . ' : ' . calculate_odds($draw$deck); 

或者可以查找指定牌面或花色的牌。

  清单 13. 查找指定牌面或花色的牌

  1. $draw = array('face' => '''suit' => 'Spades');  
  2. $draw = array('face' => 'Ace''suit' => ''); 

  简单的扑克发牌器

  现在已经得到牌组构建器和一些工具,可以帮助计算出抽出特定卡的机率,我们可以整合一个真正简单的发牌器来进行发牌。出于本例的目的,我们将构建一 个可以抽出五张牌的发牌器。发牌器将从整副牌中提供五张牌。使用数字指定需要放弃哪些牌,并且发牌器将用一副牌中的其他牌替换这些牌。我们无需指定发牌限 制或特殊规则,但是您可能会发现这些是非常有益的个人经验。

  如上一节所示,生成并洗牌,然后每只手五张牌。按数组索引显示这些牌,以便可以指定返回哪些牌。您可以使用表示要替换哪些牌的复选框来完成此操作。

  清单 14. 使用复选框表示要替换的牌

  1. foreach ($hand as $index =>$card) {  
  2. echo "< span=""> . $index . "]'>  <>
  3. " . $card['face'] . ' of ' . $card['suit'] . "";  

  然后,计算输入 array $_POST['card'],查看哪些牌已被选择用于替换。

  清单 15. 计算输入

  1. $i = 0;  
  2. while ($i < 5) {  
  3. if (isset($_POST['card'][$i])) {  
  4. $hand[$i] = array_shift($deck);  
  5. }  

  使用此脚本,您可以尝试找到处理特定一组牌的最佳方法。


酷毙

雷人

鲜花

鸡蛋

漂亮

相关阅读

  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部