设为首页收藏本站

LUPA开源社区

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

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

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

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

  场景生成器

  利用构建名字生成器使用的相同基本原理,我们可以构建场景生成器。此生成器不但在角色扮演游戏中十分有用,而且在需要用到伪随机环境集合(可用于角 色扮演、即兴创作、写作等情况)的情况下也十分有用。我最喜欢的游戏之一,Paranoia 在其 GM Pack 中包括了 “任务混合器(mission blender)”。任务混合器可用于在快速滚动骰子时整合完整任务。让我们整合自己的场景生成器。

  考虑以下场景:您醒来后发现自己迷失于丛林中。您知道自己必须赶去纽约,但是不知道原因。您可以听到附近的狗叫声及清晰的敌方搜寻者的声音。您浑身发冷、不住颤抖,而且没有武器。该场景中的每一句话都介绍场景的特定方面:

  “您醒来后发现自己迷失于丛林中” — 这句话将建立设置。

  “您知道自己必须赶去纽约” — 这句话将描述目标。

  “您可以听到狗叫声” — 这句话将介绍敌人。

  “您浑身发冷、不住颤抖,而且没有武器” — 这句话将添加复杂度。

  就像创建名字和姓氏的文本文件一样,首先分别创建设置、目标、敌人和复杂度的文本文件。代码归档中附带了样例文件。在拥有这些文件后,生成场景的代码与生成名称的代码基本相同。

  清单 6. 生成场景

  1. $settings = explode("\n"file_get_contents('scenario.settings.txt'));  
  2. $objectives = explode("\n"file_get_contents('scenario.objectives.txt'));  
  3. $antagonists = explode("\n"file_get_contents('scenario.antagonists.txt'));  
  4. $complicati**** = explode("\n"file_get_contents('scenario.complicati****.txt'));  
  5. shuffle($settings);  
  6. shuffle($objectives);  
  7. shuffle($antagonists);  
  8. shuffle($complicati****);  
  9. echo $settings[0] . ' ' . $objectives[0] . ' ' . $antagonists[0] . ' ' 
  10. $complicati****[0] . "\n"

  我们可以通过添加新文本文件向场景中添加元素,也可能希望添加多重复杂度。添加到基本文本文件中的内容越多,场景随时间的变化就越多。

  牌组创建器(Deck builder)和装备(shuffler)

  如果您要玩纸牌并且要处理与纸牌相关的脚本,我们需要用装备中的工具整合一副牌组构建器。首先,让我们构建一副标准纸牌。需要构建两个数组 — 一个用于保存同花色的组牌,而另一个用于保存牌面。如果稍后需要添加新组牌或牌类型,则这样做将获得很好的灵活性。

  清单 7. 构建一副标准扑克牌

  1. $suits = array (  
  2. "Spades""Hearts""Clubs""Diamonds" 
  3. );  
  4. $faces = array (  
  5. "Two""Three""Four""Five""Six""Seven""Eight",  
  6. "Nine""Ten""Jack""Queen""King""Ace" 
  7. ); 

  然后构建一副牌数组来保存所有纸牌值。只需使用一对 foreach 循环即可完成此操作。

  清单 8. 构建一副牌数组

  1. $deck = array();  
  2. foreach ($suits as $suit) {  
  3. foreach ($faces as $face) {  
  4. $deck[] = array ("face"=>$face"suit"=>$suit);  
  5. }  

  在构建了一副扑克牌数组后,我们可以轻松地洗牌并随机抽出一张牌。

  清单 9. 洗牌并随机抽出一张牌

  1. shuffle($deck);  
  2. $card = array_shift($deck);  
  3. echo $card['face'] . ' of ' . $card['suit']; 

  现在,我们就获得了抽取多副牌或构建多层牌盒(multideck shoe)的捷径。


酷毙

雷人

鲜花

鸡蛋

漂亮

相关阅读

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

最新评论

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

返回顶部