设为首页收藏本站

LUPA开源社区

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

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

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

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

  米德里比斯

  米德里比斯是一款文字游戏,玩家在游戏中得到一个简短的故事并用同一类型的不同单词替换主要类型的单词,从而创建同一个故事的更无聊的新版本。阅读 以下文本:“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. 用单词标记替换单词类型

  1. $text = "I was _VERB_ing in the _PLACE_ when I found a _NOUN_.  
  2. I _VERB_ed in, and _VERB_ed too much _NOUN_.  I had to go to the _PLACE_."; 

接下来,创建几个基本单词列表。对于本例,我们也不会做得太复杂。

  清单 21. 创建几个基本单词列表

  1. $verbs = array('pump''jump''walk''swallow''crawl''wail''roll');  
  2. $places = array('park''hospital''arctic''ocean''grocery''basement',  
  3. 'attic''sewer');  
  4. $nouns = array('water''lake''spit''foot''worm',  
  5. 'dirt''river''wankel rotary engine'); 

  现在可以重复地评估文本来根据需要替换标记。

  清单 22. 评估文本

  1. while (preg_match("/(_VERB_)|(_PLACE_)|(_NOUN_)/"$text$matches)) {  
  2. switch ($matches[0]) {  
  3. case '_VERB_' :  
  4. shuffle($verbs);  
  5. $text = preg_replace($matches[0], current($verbs), $text, 1);  
  6. break;  
  7. case '_PLACE_' :  
  8. shuffle($places);  
  9. $text = preg_replace($matches[0], current($places), $text, 1);  
  10. break;  
  11. case '_NOUN_' :  
  12. shuffle($nouns);  
  13. $text = preg_replace($matches[0], current($nouns), $text, 1);  
  14. break;  
  15. }  
  16. }  
  17. echo $text

  很明显,这是一个简单而粗糙的示例。单词列表越精确,并且花在基本文本上的时间越多,结果就越好。我们已经使用了文本文件创建名称列表及基本单词列表。使用相同原则,我们可以创建按类型划分的单词列表并使用这些单词列表创建更加变化多端的米德里比斯游戏。

  乐透机

  全部选中乐透的六个正确号码 —— 退一步说 —— 在统计学上是不可能的。不过,许多人仍然花钱去玩,而且如果您喜欢号码,则查看趋势图可能很有趣。让我们构建一个脚本,该脚本将允许跟踪赢奖号码并在列表中提供选择次数最少的 6 个号码。

(免责声明:这不会帮助您中乐透奖,因此请不要花钱购买奖券。这只是为了娱乐)。

  把赢奖的乐透选择保存到文本文件中。用逗号分隔各个号码并把每组号码放在单独一行中。使用换行符分隔文件内容并使用逗号分隔行后,可以得到类似清单 23 的内容。

  清单 23. 把选择的赢奖乐透保存到文本文件中

  1. $picks = array(  
  2. array('6''10''18''21''34''40'),  
  3. array('2''8''13''22''30''39'),  
  4. array('3''9''14''25''31''35'),  
  5. array('11''12''16''24''36''37'),  
  6. array('4''7''17''26''32''33')  
  7. ); 

  很明显,这不足以成为绘制统计数据的基本文件。但是它是一个开端,并且足以演示基本原理。

  设置一个基本数组以保存选择范围。例如,如果选择 1 到 40 之间(例如,$numbers = array_fill(1,40,0);)的号码,则遍历我们的选择,递增相应的匹配值。

  清单 24. 遍历选择

  1. foreach ($picks as $pick) {  
  2. foreach ($pick as $number) {  
  3. $numbers[$number]++;  
  4. }  

  最后,根据值将号码排序。此操作应当会把最少选择的号码放在数组的前部。

  清单 25. 根据值将号码排序

  1. asort($numbers);  
  2. $pick = array_slice($numbers,0,6,true);  
  3. echo implode(','array_keys($pick)); 

  通过有规律地向包含中奖号码列表的文本文件添加实际的乐透中奖号码,可以发现选号的长期趋势。查看某些号码的出现频率十分有趣。

原文链接:http://www.cnblogs.com/aiyuchen/archive/2011/02/08/1949792.html


酷毙

雷人

鲜花

鸡蛋

漂亮

相关阅读

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

最新评论

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

返回顶部