想到农作物 想到开心农场

技术与开发

模仿程序:开心农场

模仿进度:第二期

本期要点:设计特征功能

开发平台:ASP+Access

创意来源于生活

如果仔细观察,当前比较火热的SNS游戏,都是跟普通人渴望的生活相关,例如开心农场、抢车位、钓鱼等等。这些东东人人都知道,但由于各种原因在生活中又不能经常接触,于是想在游戏中得到满足。

跟生活相关的创意比较容易成功,明白了这个道理,想创意就容易了。例如,可以开发工作竞赛游戏,当前工作不好找,好工作就更难找了,在游戏中进行找工作、跳槽等操作就会吸引很多人关注。

特征功能设计思路

设计特征功能,先要确定项目的定位,玩家从游戏中可以得到什么乐趣,然后再确定具体的功能有哪些,再根据具体的要求和层次进行设计,一般是按照“基本模型→功能完善→功能丰富”的顺序来设计的。

一般来说,为了增加可玩度,都会在特征功能中加入循环模式。什么是循环模式呢?就是让玩家反复做某些事件。例如在开心农场中,循环模式就是“种植→维护→收获→种植”,玩家一开始拥有的钱少,买的种子比较低级,收获农作物的钱也少,然后当玩家慢慢地积攒起钱财,发展起来后,就可以买更高级的种子。

以开心农场为例,农场对都市生活的大部分人都很陌生,个人经营农场更是很多人在现实生活中不敢想的,题材比较吸引眼球。然后确定基本的功能,例如农作物有3个数值,分别是健康度、产量和成熟时间;在农场中有6个动作,分别是锄地、播种、浇水、施肥、除虫、收获。

玩家必须收获了农作物的果实以后,农作物才会枯萎,通过锄地把枯萎的农作物给铲除掉,这样玩家就有了空闲的田地,才能种植新的农作物。浇水和除虫会对农作物的健康度产生影响,而农作物的健康度会影响产量,对农作物浇水会使健康度增加,使其保持在一个较高的水平(不超过最大上限),而虫子会使农作物的健康度下降(图1)。

38-f09-01.jpg

特征功能设计步骤

第一步:新建数据结构

启动Access,选择“建立空白数据库”,输入数据库名称。选择“使用设计器建立新表”,创建一个命名为Field的表格(见图)。

bg38-1.jpg

第二步:设计界面

在Dreamweaver中选择“新建ASP VBSCRIPT文件”,设置名称为“Index.asp”,点击“完成”按钮完成页面的创建。在页面中规划显示界面和添加按钮,如图2所示。在按钮中输入代码(代码下载地址:http://www.shudoo.com/bzsoft)。

38-f09-02.jpg
38-f09-03.jpg

第三步:农作物自动生长

每当玩家来到农田时,程序便自动判断播种时间(当前时间-农作物种植时间-施肥时间),如果播种时间大于预定的农作物成熟的值,就表明农作物成熟了。反之,这表示农作物没有成熟。关键代码如下所示(完整代码下载地址:http://www.shudoo.com/bzsoft):

sql="select * from [field] where Belong="&玩家ID '读取玩家田地的信息,并生成记录集。

Set fd=Server.CreateObject("ADODB.Recordset")

fd.open sql,conn,3,3

'当玩家或玩家好友进入时

Do until fd.eof '遍历记录集

If DateDiff("h",fd("Growtime"),now())>=fd("Needgrowtime") then '如果玩家播种的时间大于需要成熟的时间

小知识:在计算时间类型时,我们可以用h表示要计算的时间以小时为单位,用d表示要计算的时间以天数为单位,输入时要记住加双引号(因为是字符串变量)。减数用Growtime表示,当前时间用now表示。

第四步:农作物自动减少健康度

如果播种时间大于1小时,降低农作物的健康值,降低的数值跟时间的长短有关;如果农作物上有虫子的话,则减去更多健康度。关键代码如下所示(完整代码下载地址:http://www.shudoo.com/bzsoft):

If DateDiff("h",fd("LastRedtime"),now())>=1 then '当上次减少农作物的健康值之后过了至少一个小时

If fd("worm")=true then '如果农作物上有虫子

Fd("health")= Fd("health")- (DateDiff("h",fd("LastRedtime"),now()) * 7) '每小时减少7的农作物健康值

Else '如果没有虫子

Fd("health")= Fd("health")- (DateDiff("h",fd("LastRedtime"),now()) * 5) '每小时减少5的农作物健康值。

If fd("health")<50 then fd("health")=50 '如果农作物的健康值小于50则健康值等于50

第五步:浇水、施肥、除虫

每次施肥可以减少1小时的成熟时间,最少成熟时间为最大成熟时间的70%,每次浇水可以增加植物8点的健康度,没有虫子健康度最大为100,有虫子则为90,除虫可以增加10点植物的健康度。

农作物成熟之后的产量为农作物健康度的百分比乘于预计产量。当一个农作物的剩余产量为0时则判断此农作物枯萎,可以进行翻地操作来得到一块新的土地。关键代码如下所示(完整代码下载地址:http://www.shudoo.com/bzsoft):

sql="select * from [item] where Belong="&玩家ID & " and type=2" '读取玩家的化肥道具记录,并创建记录集。

Set rs=Server.CreateObject("ADODB.Recordset")

item.open sql,conn,3,3

if item.bof and item.eof then '如果记录为空,则表示玩家没有化肥

response.write "你没有化肥!"

elseif item("num")>0 then '如果玩家有化肥

'创建土地的记录集,并且减少成熟所需要的时间。

小编救急

在讲解手机编程时,小编建立了很多开发QQ群,有许多读者朋友在里面交流,其中谈论的较多的都是开发途中碰到的各种问题。为此,小编特意开辟了一个救急板块,无论你开发哪种程序,无论你碰到什么问题,我们都可以给你提供帮助。来信请发到pcw-chendx@vip.sina.com。

关键词:AIW

读者来信:我想问问,Create AIW service handler中的AIW service handler的作用是什么?

小编:AIW service handler的作用是将自定义的一个对象与AIW框架进行交互,通过创建AIW服务处理的方式,使得AIW内容处理的代码保持一致,这也是处理框架的常用方式。

关键词:联系人数目

开发QQ群:当手机中联系人的数目很多,例如几千个的时候,读取联系人就会变得很慢,谁有好的解决方法?

小编:其实类似的问题在Web编程中也出现过,已经有了很多的解决办法,解决问题的思路就是Web编程中的“分页技术”。分页技术的原理就是按照页面来读取需要的数据,而不是一次将所有的数据全部读取出来,如果要提高读取速度的话,也可以每次只读取规定数量,例如10条数据,然后在需要的时候再次进行读取。

关键词:模拟器中聊天

开发QQ群:我想问问,可以在模拟器上实现模拟手机聊天吗?

小编:你说的这个功能是可以实现的。模拟器程序可以通过PC机器进行联网操作的,所以聊天是没有问题的,不过发短信等功能却不行。因为这些功能需要经过运营商的机房,这个在模拟器中是无法模拟出来的。

关键词:手机机型

读者来信:同一款手机网游是怎么支持不同的手机机型的?

小编:手机网游支持多种手机机型,用的方法是移植,也就是对手机网游客户端进行程序代码和游戏图片尺寸的修改,有些时候甚至涉及功能的删减。修改后的程序就可以适应对应的机型了。

关键词:设计QQ菜单

开发QQ群:我问大家一个问题,QQ的菜单是怎么设计的?

小编:QQ菜单是通过一定的逻辑关系绘制出来的。在程序展示QQ菜单时,按照一定的坐标和逻辑关系,依次绘制出每块的内容,并根据QQ菜单内容的变化而改变绘制的结构,例如QQ在线用户菜单,就是依据在线用户的数量,依次计算每个用户名称的坐标,然后循环绘制而得到的。

关键词:SNS游戏开发语言

读者来信:看了上期的文章,我想问问开发SNS游戏可以使用哪些语言?我指的是非Flash语言。

小编:除Flash语言之外,使用其他语言也可以开发SNS游戏,例如ASP.net、PHP、JSP、谷歌开发联盟的Open Social语言等,它们各有优点,使用哪一种语言主要是看开发者自己的考虑。

关键词:获取玩家信息

开发QQ群:在第34期的文章中,我发现如何获取玩家信息讲得不是很清楚,请具体给我说说这个。

小编:获取玩家信息主要通过SNS网站的API来实现,由于每个网站的API都不同,所以并没有详细说明,你可以根据自己的实际情况和参照SNS网站开放平台中的API说明来自行设计。