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

$draw = array('face' => '', 'suit' => 'Spades');

$draw = array('face' => 'Ace', 'suit' => '');

简单的扑克发牌器

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

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

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

foreach ($hand as $index =>$card) {

echo "

" . $card['face'] . ' of ' . $card['suit'] . "
";

}

然后,计算输入 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 (

"giants",

"triangle",

"particle",

"birdhouse",

"minimum",

"flood"

);

使用前面介绍的技术,我们可以把这些单词移动到外部单词列表文本文件中,然后根据需要导入。

在得到单词列表后,需要随机选出一个单词,将每个字母显示为空,然后开始猜测。我们需要在每次进行猜测时跟踪正确和错误的猜测。只需序列化猜测数组并在每次猜测时传递它们,就可实现跟踪目的。如果需要阻止人们通过查看页面源代码侥幸猜对,则需要执行一些更安全的操作。

构建数组以保存字母和正确/错误的猜测。对于正确的猜测,我们将用字母作为键并用句点作为值填充数组。

清单 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] = $guess;

$wordletters = str_split($word);

foreach ($wordletters as $letter) {

$show .= $right[$letter];

}

} else {

$show = '';

$wrong[$guess] = $guess;

if (count($wrong) == 6) {

$show = $word;

} else {

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 . "
\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);

break;

case '_PLACE_' :

shuffle($places);

$text = preg_replace($matches[0], current($places), $text, 1);

break;

case '_NOUN_' :

shuffle($nouns);

$text = preg_replace($matches[0], current($nouns), $text, 1);

break;

}

}

echo $text;

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

乐透机

全部选中乐透的六个正确号码 —— 退一步说 —— 在统计学上是不可能的。不过,许多人仍然花钱去玩,而且如果您喜欢号码,则查看趋势图可能很有趣。让我们构建一个脚本,该脚本将允许跟踪赢奖号码并在列表中提供选择次数最少的 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论坛 文章地址:http://bbs.php.cn/thread-21764-1-1.html

php游戏简单模块,PHP编写的25个游戏脚本相关推荐

  1. c语言写的黑白棋游戏代码,C语言编写的黑白棋游戏源代码..doc

    C语言编写的黑白棋游戏源代码. C语言编写的黑白棋游戏/*3.3.4 源程序*/ #include "graphics.h" /*图形系统头文件*/ #define LEFT 0x ...

  2. python小游戏代码大全-Python编写的点灯小游戏代码

    Python语言编写的点灯小游戏代码及思路如下: 点灯游戏及其求解的方法, 点灯游戏的游戏规则: (1)有个N行N列的灯板,当你开关其中一盏灯: (2)它和上下左右的灯的状态全部反转,目标是将全部的灯 ...

  3. 猜数字游戏java编程_Java编写猜数字小游戏

    本文实例讲述了java实现的简单猜数字游戏代码.分享给大家供大家参考. 以下是Java语言写的一个猜数字小游戏引用片段: import java.text.SimpleDateFormat; impo ...

  4. 24点游戏java_使用java编写计算24点游戏程序

    初学java,编写了一个计算24点的程序,时间有限,有些粗糙,不过可以使用. //-------------Cal24.java--------------- //计算24点程序 //作者:徒步天下( ...

  5. C语言第十课:编写井字棋游戏(综合练习1)

    目录 前言: 一.文件建立: 1.头文件game.h: 2.函数定义文件game.c: 3.工程测试文件test.c: 二.编写井字棋游戏: 1.程序整体执行思路: 2.menu菜单函数实现: 3.g ...

  6. 初学者开发iOS游戏的入门必备用书——iOS 5 cocos2d游戏开发实战(第2版)

    如果想接触iOS游戏开发,今天笔者就推荐一本"大杀器"--<iOS 5 cocos2d游戏开发实战(第2版)>(当当链接) 为零基础的"设想过自己写个电脑游戏 ...

  7. 用工具测试游戏的平衡性-简单的打架机器人编写

    打架机器人这种东东,一般都是在游戏开发过程中测试用的东西,对于策划圈外的人士接触到这个东西的人很少,不像前面的原型库工具那样,其他行业只要是演示都可以使用,打架机器人的运用频率就少了很多,而且网游里面 ...

  8. c语言编简单博弈小游戏,[2018年最新整理]实验二:利用α-β搜索过程的博弈树搜索算法编写一字棋游戏.doc...

    [2018年最新整理]实验二:利用α-β搜索过程的博弈树搜索算法编写一字棋游戏 实验二:利用α-β搜索过程的博弈树搜索算法编写一字棋游戏 一.实验目的与要求 (1)了解极大极小算法的原理和使用方法,并 ...

  9. 游戏外挂的基本编写原理

    游戏外挂的基本编写原理 Posted on 2005年9月17日 23:40 游戏外挂的基本编写原理 本文主要是针对开发游戏外挂程序后期使用的程序开发技术进行探讨,重点介绍的 如下几种在游戏外挂中常使 ...

最新文章

  1. python多线程爬虫实例-Python多线程爬虫简单示例
  2. Android 位置服务——BaiduLocation的使用
  3. B站一键BV号转AV号PHP单页源码
  4. FTP多路径递归下载
  5. .net2005登录控件
  6. Spark 基础 —— RDD(创建 RDD)的两种方式
  7. 了解更多关于11gR2 diskmon
  8. 集体智慧编程——搜索与排名
  9. 北京联通IPTV机顶盒管理密码
  10. 计算机考试表格中的透视图怎么弄,职称计算机考试:创建数据透视表
  11. 100行代码实现HarmonyOS“画图”应用,eTS开发走起
  12. 区块链重要基础知识8-1——冷存储以及热存储和他们之间相互如何结合
  13. php不显示notice,解决PHP显示Warning和Notice等问题
  14. 记一次 k8s 集群单点故障引发的血案
  15. [机器学习笔记] 用Python分析 TED演讲数据(更新中)
  16. React-Native 环境搭建
  17. [COPYRIGHT] 常见版权许可协议
  18. 如何在前端完美控制浏览器兼容性问题
  19. 编码器脉冲计数器,角度速度位移测量,Modbus RTU模块 WJ66
  20. awk -F [ :]+

热门文章

  1. CSS_01_样式结构及选择器
  2. OnLine非游戏最终形态
  3. 既要懂技术还要脾气“辣”,这一岗位年年涨薪,火爆了~
  4. DB2与Sybase/Oracle/Informix的比较
  5. python开发之旅——面向对象【人狗大战】
  6. 计算机三级考试中哪个更有价值?
  7. QQ分组控件的简单实现
  8. 随身wifi固件编译教程
  9. auto.JS 是什么?如何使用? 【图文讲解】
  10. java加密解密 pdf_JAVA加密与解密的艺术 第2版 PDF 下载