使用java开发安卓

  • 时间:
  • 浏览:332
  • 来源:成都艾邦软件开发

有人说IDEA开发安卓不是基于gradle其实应该是没关系的注意导入安卓的时候的右下角有个gradle need be import所以吧idea会默认的去下载gradle- -还有AS和IDEA连界面的差不多。

两者区别AS是只是针对安卓的开发对安卓的支持肯定是比idea好的。但是IDEA来说其实是一切java的开发。说白了AS是谷歌针对安卓在idea基础上的二次开发。所以对安卓的支持上肯定是比idea好的IDEA的话代码书写肯定效率是大于AS的。

java开发转安卓脚本开发

在本系列的第1部分中您创建了一些初学者级PHP脚本。 现在是时候增加一些复杂性了这将进一步发展您PHP编程技能并提高您作为游戏高手的地位。

对于角色扮演游戏脚本您将学习如何组装武器伤害计算器字符表统计跟踪器和非玩家角色NPC生成器同时教您如何将信息保存到文件中并使用PHP中的数组。 与机会游戏相关的脚本将帮助您练习二十一点学习如何对卡进行计数以及对Bingo基础知识有快速的了解同时还教您如何将机会元素应用到PHP脚本中。 最后文字游戏脚本将帮助您解决Jumble游戏创建简单的替换密码并生成文字搜索图同时将您PHP数组处理技能进一步提高。

我们将快速讨论这些脚本而无需讨论查找主机或设置服务器的过程。 有许多提供PHP的Web主机如果要设置自己的XAMPP安装程序则易于使用。 我们也不会花很多时间谈论PHP最佳实践或游戏设计技术。 此处介绍的脚本旨在易于理解易于使用和快速学习。

本文的代码档案包含我们将讨论的每个脚本的完整源代码。

伤害计算器

在第1部分中 我们构建了基本的压模辊。 让我们看一下使用该压模辊帮助组装一个基本的损坏计算器。

如果您曾经运行或玩过桌上型角色扮演游戏则可能已经看过书中包含的大型武器图表。 通常这些图表包括武器的名称以及武器造成的伤害。 它可能看起来像表1中所示。

表1.损害计算
武器名称 损伤
小棍子 1d6
大棒 1d6 4
电锯 2d8

您应该能够使用在“ 您可以用PHP编写的30个游戏脚本 ”系列的第1部分中创建的简单roll功能并使用它来计算基本武器的伤害。 为此您将创建一个数组来保存有关武器的信息。

在此示例中单个武器具有三个基本特征名称掷骰和伤害加成。 利用这些特征您可以构建武器阵列如下所示。

清单1.武器数组
$weapons  array (littlestick  array (name  Little Stick,roll  1d6,bonus  0,),bigstick  array (name  Little Stick,roll  1d6,bonus  4,),chainsaw  array (name  Little Stick,roll  2d8,bonus  0,),);

使用此数组您可以构建一个表该表显示武器武器可能造成的损害以及损害滚转的结果。

清单2.构建武器表
foreach ($weapons as $weapon) {list($count, $sides)  explode(d, $weapon[roll]);$result  0;for ($i  0; $i  $count;$i) {$result  $result  roll($sides);}echo trtd . $weapon[name] . /tdtd . $weapon[roll];if ($weapon[bonus]  0) {echo  . $weapon[bonus];$result  $result  $weapon[bonus];}echo /tdtd . $result . /td/tr;}

使用此脚本您可以创建带有集成伤害计算器的基本武器图表。

统计跟踪

现在您可以计算伤害了让我们来跟踪一些基本的角色统计信息就像您在运行带有多个NPC的游戏时可能会使用的那样。 我们创建一个简单的数组来保存字符信息并将其序列化保存到文本文件中。 有很多方法可以将这些信息保存到数据库中并且在使用PHP后应该朝这个方向移动。对于本示例您将通过我写的一款名为Shambles的游戏来制作基本的僵尸角色。 从数组开始以保存字符信息。

清单3.字符信息数组
$character  array(name  Fred The Zombie,health  36,gore  1,clutch  5,brawn  6,sense  4,flail  2,chuck  3,lurch  4,);

您需要派生一个文件名来存储此信息。 您确实不希望只使用输入中的输入而是只能使用字符名称中的字母来创建文件。

清单4.创建一个文件来存储信息
$filename  substr(preg_replace(/[^a-z0-9]/, ,strtolower($character[name])), 0, 20);file_put_contents($filename, serialize($character));

注意将该脚本供公众使用时您将需要过滤用户输入以防止恶意人员向文件中注入不良JavaScript或垃圾。 这只是您个人使用的一个示例。 最后您需要以某种形式显示信息以便于更新。 只需在输入字段中创建具有默认值的表单即可。

清单5.以表格形式显示信息
input namehealth value?php echo $character[health] ? /

使用此基本脚本请参阅代码档案 来跟踪几个字符和NPC。

NPC发电机

当您进行大型比赛时拥有一批一次性NPC很有用。 如果您需要大量的暴徒或大炮饲料这将特别有用。 为了组合NPC生成器让我们构建一个包含构建字符规则的数组然后使用“随机名称生成器”和“骰子滚子”一次将所有字符组合在一起。

以弗雷德僵尸为例您可以定义创建角色的规则。 一些统计信息是静态的生命值总是从36开始一些统计信息是健康状态为/ 6而一些统计信息是掷骰的结果离合器为1d6-一个骰子有六面。 规则类似于清单6所示。

清单6.定义创建角色的规则
$rules  array(health  36,gore  health/6,clutch  1d6,brawn  1d6,sense  1d6,flail  1d6,chuck  1d6,lurch  1d6,);

现在您可以编写一些代码来评估规则。

清单7.用于评估规则的代码
foreach ($rules as $stat$rule) {if (preg_match(/^[0-9]$/, $rule)) {// This is only a number, and is therefore a static value$character[$stat]  $rule;} else if (preg_match(/^([0-9])d([0-9])/, $rule, $matches)) {// This is a die roll$val  0;for ($n  0;$n$matches[1];$n) {$val  $val  roll($matches[2]);}$character[$stat]  $val;} else if (preg_match(/^([a-z])/([0-9])$/, $rule, $matches)) {// This is a derived value of some kind.$character[$stat]  $character[$matches[1]] / $matches[2];}echo $stat .  :  . $character[$stat] . br /;}

正确评估规则后您可以使用“随机名称生成器”提取一个随机名称并使NPC工作数天。 请查看代码档案中的脚本以了解如何将该任务组合在一起。

赔率计算器掷骰

在第1部分中 您组合了一个简单的赔率计算器以确定从给定的一组卡中拉出特定面Kong或西装的卡的机会。 现在让我们为掷骰创建一个赔率计算器。 对于此示例您将构建一个计算器该计算器确定滚动两个六个六边形骰子2d6时的可能结果。 如果您使用的是基于d6的RPG系统或者正在玩《大富翁》或西洋双陆棋之类的棋盘游戏或者试图在骰子之类的骰子游戏中计算赔率这将非常有用。

首先确定掷骰子时如何确定可能的结果。 考虑滚动两个不同颜色的骰子例如红色骰子和蓝色骰子会很有帮助。 如果红色骰子落在1上则有六个可能的结果蓝色骰子的每一侧一个。 这意味着可能的骰子结果总数为6 ^ 2或36个结果。 这似乎有点奇怪因为您实际上可以得到的最高值为12红色的6和蓝色的6但是如果您意识到可以得到11的两个不同的结果红色的6和a则为11应该更有意义。蓝色五或红色五和蓝色六。

在此示例中假设您想要求和滚动10和面滚动6和4结果并且红色骰子上的6和蓝色骰子上的6之间没有区别。 重要数字是S骰子上有多少面和N骰子上有多少面-给定N个相同的骰子数最大结果数为S ^ N-尽管其中一些结果可能是相同的6和4、6和6。

清单8.构建掷骰的赔率计算器
$s  6;$n  2;$results  array(array());for ($i  0; $i  $n; $i ) {$newresults  array();foreach ($results as $result) {for ($x  0; $x  $s; $x) {$newresults[]  array_merge($result, array($x1));}}$results  $newresults;}

这似乎有些笨拙。 您可以大大简化此代码但是我在这里已做得更明确一些因此您可以了解如何处理数组。 建立最终数组后您可以遍历该数组并生成一个总和列表以及它们各自的赔率。 此代码包含在代码存档中 。

简单的二十一点庄家

在第1部分中 您构建了一个简单的扑克发牌人。 庄家实际上并没有与您竞争。 它只是从鞋子上发出卡片让您练习各种手。 现在让我们建立一个实际上与您对战的21点庄家。 您将使用简单的房屋规则该经销商必须吸引至少17岁来构建此经销商。

此代码的某些部分看起来像以前构建的简单的扑克发牌人。 对于二十一点您需要构建迭代绘图和手工评估。 您需要一个将面值分配给其数字描述的数组。 如果更改卡座的构建方式则可以在原始的$faces数组中执行此操作。

清单9.修改二十一点的$faces数组
$faces  array(Two  2, ... ... ... King  10, Ace  11);

然后您需要一个基本功能来评估给定的手。 此功能将查看手中的牌并返回该手的总值。

清单10.评估给定牌局的函数
function evaluateHand($hand) {global $faces;$value  0;foreach ($hand as $card) {if ($value  11  $card[face]  Ace) {$value  $value  1;  // An ace can be 11 or 1} else {$value  intval($value)  intval($faces[$card[face]]);}}return $value;}

一旦有了评估单手牌的功能确定您的手牌是否超过21手或者发牌手应该击打还是留下就很简单了。 有关如何将其组合在一起的详细信息请参见代码档案 。

卡柜台

当您玩二十一点或诸如Hearts之类的基于王牌的游戏时了解如何计算纸牌可能会很有用。 以二十一点为例您至少想知道您已经看过多少张A和面Kong牌。 对于Hearts您可能想知道仍有多少张王牌在玩。 您将为21点建立一个基本的柜台。 您可以采用相同的原理为王牌游戏构建纸牌计数器。

您将构建套牌以进行一些不同的计数。 您不需要了解所有卡片就算您关心的卡片一样。 对于单层鞋外观如下图所示。

清单11.为单层鞋子构建卡片计数器
$deck  array (faces  16, // 10,J,Q,K * 4 suitsaces  4, // One per suitother  32, // 52 - (16  4));

接下来用三个按钮构建一个简单的表单-一个用于面部卡一个用于A另一个用于其他卡。 每次看到特定类型的卡时通过单击相应的按钮可以调整卡座中剩余的内容。

清单12.一个带有三个按钮的简单表单
if ($_POST[submit]  faces) {$deck[faces]--;}

然后您可以通过在修改牌组后查看其牌面来计算拉出一张脸一张王牌或另一张牌的几率。

清单13.计算一张脸一张王牌或另一张牌的几率
echo Odds of pulling a face:  . $deck[faces] .  out of  . $deck[faces]  $deck[aces]  $deck[other];

使用此基本的卡计数器作为起点您可以构建更坚固的产品。

宾果引擎

根据我们在本文中所做的事情您可以轻松地组合一个Bingo引擎来生成卡并从池中提取号码。

宾果数从1到75分为15组将1-15分配给B将16-30分配给I依此类推。 您可以按照构建和随机播放纸牌的方法来构建和随机播放一组虚拟宾果球。 但是您不需要以完全相同的方式跟踪面Kong和西服。 首先建立基本数字集。

清单14.构建Bingo的基本数字集
for ($i  1; $i  16; $i) {$numbers[B][]  $i;$numbers[I][]  $i15;$numbers[N][]  $i30;$numbers[G][]  $i45;$numbers[O][]  $i60;}

接下来您可以混洗每个子阵列并同时制作卡片。 不要忘记中间的空间通常是一个自由空间。当您在那里时创建一个可以像套牌一样使用的主阵列。

清单15.创建一个主数组
$letters  array (B,I,N,G,O);foreach ($letters as $letter) {shuffle($numbers[$letter]);$chunks  array_chunk($numbers[$letter], 5);$cards[$i][$letter]  $chunks[0];if ($letter  N) {$cards[$i][$letter][2]    ; // Free Space}shuffle($balls);}

现在一切就绪 分发卡片就像从前绘制卡片一样从母版开始绘制虚拟宾果球。 可以在代码档案库中找到此脚本的完整功能版本。

杂物帮手

混乱是大多数报纸上发现的单词难题您在其中把几个单词混在一起。 您必须胡说八道然后使用某些字母来组成新短语。 从第1部分中创建的填字游戏帮助器开始让我们组合一个快速脚本来帮助您处理Jumble。

首先打开您的单词列表。 您想遍历列表将每个单词分解成一个字母排序的数组然后再次加入该数组。 例如这会将单词“ COLOR”更改为字符串“ CLOOR” 该字符串代表单词“ COLOR”中的所有字母但顺序可预测更重要的是可匹配。 然后将此字符串用作匹配单词数组的键。 它必须是一个数组因为“ sword”和“ words”具有相同的字母但字母顺序不同。 最后它看起来如下图所示。

清单16.混杂脚本
foreach ($words as $word) {$arr  str_split($word);sort($arr);$key  implode(, $arr);if (isset($lookup[$key])) {array_push($lookup[$key], $word);} else {$lookup[$key]  array($word);}}

一旦走到这一步您所要做的就是像对待其他单词一样对待Jumble查找相应键的值并输出任何结果。

清单17.完成Jumble脚本
$arr  str_split($_POST[jumble]);sort($arr);$search  implode(, $arr);if (isset($lookup[$search])) {foreach ($lookup[$search] as $word) {echo $word;}}

您可以在代码存档中看到如何将它们全部组合在一起。

替代密码

替代密码是一种简单的加密技术其中字母表中的每个字母都替换为字母表中的另一个字母。 按照现代加密技术的标准替代密码是儿童游戏。 但是简单的替换密码可以很有趣特别是在RPG上下文中可以通过向某人​​传递一个可以在游戏过程中解决的编码消息。

首先从第1部分的hangman生成器中窃取一些代码-即letter数组。 制作数组的第二个副本对副本进行混洗并构建一个关联数组原始字母在其中得到一个混洗的值。

清单18.修改字母数组
$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);$code  $letters;shuffle($code);$key  array_combine($letters, $code);

接下来从$_POST接受输入将消息分解为字母然后输出键中每个字母的值。

清单19.拆分和输出字母
if (!empty($_POST)) {$messageletters  str_split(strtolower($_POST[message]));$show  ;foreach ($messageletters as $letter) {$show . $key[$letter];}}

$key[$letter]之前使用符号会告诉PHP忽略编码期间发生的任何错误。 如果消息中包含标点符号数字或空格PHP将抱怨$key数组中没有相应的值。 很好 所得的编码文本将被去除空格数字和标点符号使其略微难以解码。

词搜索生成器

单词搜索可能是我们都学过的最早的基于字母的谜题。 使用已经使用的技术并包括填字游戏助手的一些逻辑您可以创建一个非常基本的词搜索生成器。 为简单起见您将进行大小为10x10个字母的单词搜索其中隐藏了10个单词五个垂直和五个水平。

第一部分插入水平词非常简单-构建一个数组数组每个数组包含10个元素并用句点填充。 然后在其他每个数组中为单个单词输入字母。 要放入垂直单词您需要同时遍历所有数组并使用填字游戏辅助程序代码查找可能的匹配单词。 也许最棘手的地方是清单20所示的部分它在垂直线上填充单词或随机字母其中单词比整行短。

清单20.在垂直线上填充单词或随机字母
$wordletters  str_split($word);for ($c  0; $c  $height; $c) {if ( $grid[$c][$i]  .  ($c  $x || empty($wordletters))) {$grid[$c][$i]  $letters[rand(0,25)];} else  {if ($grid[$c][$i]  .) {$grid[$c][$i]  array_shift($wordletters);} else if ($c  $x) {array_shift($wordletters);}}}

代码档案包含许多注释以帮助阐明整个过程。 该代码在性能上有很大的提升空间但这应该使您对如何解决该问题有一个大致的了解。 试用代码存档中的完整脚本以查看结果。

摘要

本文展示了如何采用在“ 您可以用PHP编写的30个游戏脚本 ”系列的第1部分中编写的一些基本脚本并在其基础上提供更强大的脚本。 在第3部分中 您将在此处所做的工作的基础上进一步发展以提供更强大和有用的工具。


翻译自: /developerworks/opensource/library/os-php-gamescripts2/index.html

java开发转安卓脚本开发