仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1425|回复: 20
打印 上一主题 下一主题

[学习教程] PHP网页设计25个不错PHP的游戏编程剧本代码分享

[复制链接]
谁可相欹 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:38:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
熟悉HTML/CSS/JS等网页基本元素,完成阶段可自行制作完整的网页,对元素属性达到熟悉程度      本文引见了25个不错PHP的游戏编程剧本代码,包含复杂的掷骰器、随机称号生成器、场景生成器、牌组创立器(Deck builder)和设备(shuffler)、复杂的扑克发牌器、Hangman游戏、纵横灯谜助手、米德里比斯、乐透机等。但愿可以对你的任务有所匡助。
  复杂的掷骰器
  很多游戏和游戏体系都需求骰子。让咱们先从复杂的局部动手:掷一个六面骰子。实践上,转动一个六面骰子就是从 1 到 6 之间选择一个随机数字。在 PHP 中,这非常复杂:echo rand(1,6);。
  在很多情形下,这根基上很复杂。然而在处置机率游戏时,咱们需求一些更好的完成。PHP 供应了更好的随机数字生成器:mt_rand()。在不深切研讨二者不同的情形下,可以以为 mt_rand 是一个更快、更好的随机数字生成器:echo mt_rand(1,6);。假如把该随机数字生成器放入函数中,则后果会更好。
  清单 1. 利用 mt_rand() 随机数字生成器函数
  function roll () {
  return mt_rand(1,6);
  }
  echo roll();
  然后可以把需求转动的骰子类型作为参数传递给函数。
  清单 2. 将骰子类型作为参数传递
  function roll ($sides) {
  return mt_rand(1,$sides);
  }
  echo roll(6); // roll a six-sided die
  echo roll(10); // roll a ten-sided die
  echo roll(20); // roll a twenty-sided die
  从这里入手下手,咱们可以持续依据需求一次转动多个骰子,前往了局数组;也能够一次性转动多个分歧类型的骰子。然而大多半义务都可使用这个复杂的剧本。
  随机称号生成器
  假如正在运转游戏、编写故事或一次性创立多量字符,有时会疲于敷衍不休呈现的新名字。让咱们看一看可用于处理此成绩的一个复杂随机称号生成器。起首,让咱们创立两个复杂数组 — 一个用于名字,一个用于姓氏。
  清单 3. 名字和姓氏的两个复杂数组
  $male = array(
  "William",
  "Henry",
  "Filbert",
  "John",
  "Pat",
  );
  $last = array(
  "Smith",
  "Jones",
  "Winkler",
  "Cooper",
  "Cline",
  );
  然后就能够从每一个数组当选择一个随机元素:echo $male[array_rand($male)] . ' ' . $last[array_rand($last)];。要一次性提取多个称号,只需夹杂数组并依据需求提取。
  清单 4. 夹杂称号数组
  shuffle($male);
  shuffle($last);
  for ($i = 0; $i <= 3; $i++) {
  echo $male[$i] . ' ' . $last[$i];
  }
  基于此根基概念,咱们可以创立保留名字和姓氏的文本文件。假如在文本文件的每行中寄存一个名字,则可以轻松地用换行符分隔文件内容以构建源代码数组。
  清单 5. 创立称号的文本文件
  $male = explode('\n', file_get_contents('names.female.txt'));
  $last = explode('\n', file_get_contents('names.last.txt'));
  构建或查找一些好的名字文件(代码归档 中附带了一些文件),尔后咱们毫不再需求为名字懊恼。
  场景生成器
  使用构建名字生成器利用的不异根基道理,咱们可以构建场景生成器。今生成器不仅在脚色饰演游戏中非常有效,并且在需求用到伪随机情况纠合(可用于角 色饰演、即兴创作、写作等情形)的情形下也非常有效。我最喜好的游戏之一,Paranoia 在其 GM Pack 中包含了 “义务夹杂器(mission blender)”。义务夹杂器可用于在疾速转动骰子时整合完全义务。让咱们整合本人的场景生成器。
  思索以下场景:您醒来后发明本人迷掉于森林中。您晓得本人必需赶去纽约,然而不晓得缘由。您可以听到四周的狗啼声及明晰的敌方搜索者的声响。您满身发冷、不住发抖,并且没有兵器。该场景中的每句话都引见场景的特定方面:
  “您醒来后发明本人迷掉于森林中” — 这句话将创立设置。
  “您晓得本人必需赶去纽约” — 这句话将描写方针。
  “您可以听到狗啼声” — 这句话将引见仇敌。
  “您满身发冷、不住发抖,并且没有兵器” — 这句话将添加庞杂度。
  就像创立名字和姓氏的文本文件一样,起首分离创立设置、方针、仇敌和庞杂度的文本文件。代码归档中附带了样例文件。在具有这些文件后,生成场景的代码与生成称号的代码根基不异。
  清单 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] . "\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[1][] = implode(" of ", array_shift($deck));
  $hands[2][] = 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'] == '' ) ) {
  $odds++;
  }
  }
  return $odds . ' in ' $remaining;
  }
  如今可以选出测验考试抽出的牌。为了复杂起见,传入看上去相似某张牌的数组。咱们可以查找特定的一张牌。
  清单 12. 查找指定的一张牌
  $draw = array('face' => 'Ace', 'suit' => 'Spades');
  echo implode(" of ", $draw) . ' : ' . calculate_odds($draw, $deck);
  或可以查找指定牌面或花样的牌。
  清单 13. 查找指定牌面或花样的牌
  $draw = array('face' => '', 'suit' => 'Spades');
  $draw = array('face' => 'Ace', 'suit' => '');
  复杂的扑克发牌器
  如今已失掉牌组构建器和一些东西,可以匡助盘算出抽出特定卡的机率,咱们可以整合一个真正复杂的发牌器来停止发牌。出于本例的目标,咱们将构建一 个可以抽出五张牌的发牌器。发牌器将从整副牌中供应五张牌。利用数字指定需求保持哪些牌,而且发牌器将用一副牌中的其他牌交换这些牌。咱们无需指定发牌限 制或特别划定规矩,然而您能够会发明这些长短常无益的团体经历。
  如上一节所示,生成并洗牌,然后每只手五张牌。按数组索引显示这些牌,以即可以指定前往哪些牌。您可使用暗示要交换哪些牌的复选框来完成此操作。
  清单 14. 利用复选框暗示要交换的牌
  foreach ($hand as $index =>$card) {
  echo "< span=""> . $index . "]'> <>
  " . $card['face'] . ' of ' . $card['suit'] . "";
  }
  然后,盘算输出 array $_POST['card'],检查哪些牌已被选择用于交换。
  清单 15. 盘算输出
  $i = 0;
  while ($i < 5) {
  if (isset($_POST['card'][$i])) {
  $hand[$i] = array_shift($deck);
  }
  }
<p>  利用此剧本,您可以测验考试找各处理特定一组牌的最好办法。 <P style="TEXT-INDENT: 2em">
现在,也有了从事软件工程的想法,在经过了一个月的PHP培训学习之后,发现其实软件工程并没有想像中的那么难。
金色的骷髅 该用户已被删除
沙发
发表于 2015-2-4 04:40:35 | 只看该作者
其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎
海妖 该用户已被删除
板凳
发表于 2015-2-4 04:40:35 | 只看该作者
首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。
老尸 该用户已被删除
地板
发表于 2015-2-9 15:50:24 | 只看该作者
你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。
5#
发表于 2015-2-27 09:05:27 | 只看该作者
如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,
只想知道 该用户已被删除
6#
发表于 2015-3-1 20:13:30 | 只看该作者
写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。
变相怪杰 该用户已被删除
7#
发表于 2015-3-9 19:18:24 | 只看该作者
使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。
精灵巫婆 该用户已被删除
8#
发表于 2015-3-11 04:27:06 | 只看该作者
最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。
深爱那片海 该用户已被删除
9#
发表于 2015-3-13 22:08:32 | 只看该作者
曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线  \\\\\\\'_\\\\\\\' ;
活着的死人 该用户已被删除
10#
发表于 2015-3-15 03:18:47 | 只看该作者
刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。
柔情似水 该用户已被删除
11#
发表于 2015-3-17 06:04:00 | 只看该作者
小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。
分手快乐 该用户已被删除
12#
发表于 2015-3-17 07:11:34 | 只看该作者
Ps:以上纯属原创,如有雷同,纯属巧合
谁可相欹 该用户已被删除
13#
 楼主| 发表于 2015-3-23 09:51:55 | 只看该作者
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
爱飞 该用户已被删除
14#
发表于 2015-3-23 10:25:48 | 只看该作者
要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。
透明 该用户已被删除
15#
发表于 2015-3-27 16:09:40 | 只看该作者
兴趣是最好的老师,百度是最好的词典。
简单生活 该用户已被删除
16#
发表于 2015-3-31 07:31:17 | 只看该作者
环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。
不帅 该用户已被删除
17#
发表于 2015-4-11 12:52:45 | 只看该作者
本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。
小妖女 该用户已被删除
18#
发表于 2015-4-16 08:39:09 | 只看该作者
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
飘飘悠悠 该用户已被删除
19#
发表于 2015-4-26 21:11:13 | 只看该作者
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
再见西城 该用户已被删除
20#
发表于 2015-5-1 02:12:28 | 只看该作者
建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-14 13:48

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表