当前位置: 网学 > 编程文档 > PHP > 正文

PHP游戏编程25个脚本代码

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/06/21

就像创建名字和姓氏的文本文件一样,首先分别创建设置、目标、敌人和复杂度的文本文件。代码归档中附带了样例文件。在拥有这些文件后,生成场景的代码与生成名称的代码基本相同。
清单 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''));
  $complicati**** = explode("\n", file_get_contents(''scenario.complicati****.txt''));
  shuffle($settings);
  shuffle($objectives);
  shuffle($antagonists);
  shuffle($complicati****);
  echo $settings[0] . '' '' . $objectives[0] . '' '' . $antagonists[0] . '' ''
  . $complicati****[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[] = implode(" of ", array_shift($deck));
  $hands[] = implode(" of ", array_shift($deck));
  }

然后可以查看这副牌,看看剩余多少张牌以及抽到特定牌的机率是多少。查看剩余的牌数十分简单。只需要计算 $deck 数组中包含的元素数。要获得抽到特定牌的机率,我们需要一个函数来遍历整副牌并估算其余牌以查看是否匹配。
清单 11. 计算抽到特定牌的几率
复制代码 代码如下:
  function calculate_odds($draw, $deck) {
  $remaining = count($deck);
  $odds = 0;
  foreach ($deck as $card) {
  if ( ($draw[''face''] == $card[''face''] && $draw[''suit''] ==
  $card[''suit''] ) ||
  ($draw[''face''] == '''' && $draw[''suit''] == $card[''suit''] ) ||
  ($draw[''face''] == $card[''face''] && $draw[''suit''] == '''' )
  • 上一篇资讯: PHP通用检测函数集合
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号