效仿偷菜 增添游戏魅力

技术与开发

模仿程序:开心农场

模仿进度:第三期

本期要点:设计魅力功能

开发平台:ASP+Access

满足欲望的魅力功能

人是一种有很多欲望的高级生物,为了满足欲望,会产生持续的动力,这个动力就是我们开发的SNS游戏要利用的。怎么利用呢?就要靠游戏中的魅力功能,让玩家舍不得离开游戏。

例如开心农场的魅力功能就是偷菜。不知道大家有没有这样的经历,小时候和伙伴们偷别人的地瓜红薯来烧烤。开心农场的偷菜功能唤起了部分玩家早已忘却了的记忆,更重要的是它满足了人们搞恶作剧的欲望。如果开发了一个工作竞赛游戏,魅力功能可以设定为裁员和招聘,满足玩家当BOSS的欲望。

魅力功能设计思路

设计SNS游戏魅力功能时,一定要体现SNS的精髓——“玩家与玩家之间的互动”, 例如抢车位中玩家可以偷偷地去好友家停车、好友买卖中玩家可以买卖好友。 魅力功能如果不能满足这个条件,我们开发的游戏就不能获得成功。

魅力功能是和特征功能紧密相连的,特征功能限制了魅力功能的类型,所以魅力功能是在特征功能的基础上进行深入开发。例如在开心农场中,其特征功能是农作物,魅力功能就是偷菜。

魅力功能的重要作用就是让玩家重复某个动作而不感到厌倦,这个难度不小。仔细分析成功SNS游戏的魅力功能,你会发现它们都满足了玩家的某些欲望。以开心农场的魅力功能偷菜为例,满足了玩家的两种欲望。

这两种欲望就是不劳而获的欲望和搞恶作剧的欲望。虽然这两种欲望是不健康、不道德的欲望,但却实实在在存在大多数人内心深处。所以在开心农场偷菜,既可以提高游戏黏度,又让玩家得到了满足。

开心农场的偷菜功能,流程如下:玩家偷菜→检查是否偷过→检查是否成熟→检查农作物是否还有足够的数量→偷菜成功(图1)。需要注意的是,在好友田地里面还可以进行放虫子等其他操作。

39-f09-1.jpg

魅力功能设计步骤

第一步:设计数据库

启动Access,打开上次所建立的数据库。选择“使用设计器建立新表”,创建一个命名为Steal的表格(见表)。

bg40-1.jpg

第二步:设计界面

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

第三步:编写偷菜代码

去好友的田地劳作的代码基本上和自己家田地劳作的代码一样,只不过除虫变成了放虫而已——调取玩家某一块地的数据,读取表FIELD在WORM这个字段上写入YES。偷菜的重点是如何判断该农作物是否被偷过以及怎么偷农作物,关键代码如下所示(完整代码下载地址:http://www.shudoo.com/bzsoft):

'每次玩家种植新的农作物时都会清空偷窃记录

'当玩家偷菜时

sql="select * from [Steal] where Areanum="&被偷窃的农作物的土地ID & " and Belong=" & 被偷玩家的ID & " and From=" &偷窃玩家的ID '读取玩家被偷信息,并生成记录集。

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

steal.open sql,conn,3,3

if steal.bof and steal.eof then'如果记录集为空

sql="select * from [Field] where Areanum="&被偷窃的农作物的土地ID & " and Belong=" & 被偷玩家的ID '读取被偷玩家土地信息,并生成记录集。

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

Fd.open sql,conn,3,3

If Fd("mature")=false then '如果农作物未成熟

Response.write ("农作物还未成熟!")

Elseif Fd("ProduceNum")> int(Fd

("TotalProduceNum")*0.5) then '如果被偷玩家的剩余农作物产量高于总产量的一半

Stealnum=int(Fd("TotalProduceNum")*0.1) '一次偷10%最大产量

sql="select * from [Item] where Belong=" &偷窃玩家的ID & " and Type=3 and Ftype=" & Fd ("Seedtype") '读取偷窃玩家的物品信息,并生成记录集。

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

item.open sql,conn,3,3

if item.bof and item.eof then item.addnew '如果玩家没有这种农作物,则新增记录

item("belong")=偷窃玩家的ID

item("Name")=农作物的名称

item("Num")= item("Num") + Stealnum

item("Type")=3

item("Ftype")=Fd("Seedtype")

item("Price")= Fd("Seedtype") * 125

'这里是农作物价格公示,可以自己设定

Steal("Areanum")=被偷的土地编号

Steal("Belong")=被偷的玩家ID

Steal("From")=偷窃的玩家ID

Elseif Fd("ProduceNum")<= int(Fd("TotalProduceNum")*0.5) then '如果被偷玩家的剩余农作物产量小于等于总产量的一半

Response.write ("呜呜饶了我吧,我已经够惨了。")

39-f09-2.jpg
39-f09-3.jpg

小编救急

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

关键词:主页按钮

读者来信:我管理着一个网站,最近想为网站添加一个将本网站设为主页的按钮,请问这个按钮应该怎样制作?

小编:将某网站设为主页的按钮其实是一个链接,点击该按钮就等于将浏览器主页修改为链接的网页。将如下代码加入网站:<a href="http://www.你网站的地址.com" onClick="this.style.behavior='url(#default#homepage)';this.setHomePage(this.href);return(false);" style="behavior: url(#default#homepage)"><img src="images/home.gif"> 设为主页</a>。

关键词:滚动条

读者来信:我制作了一个广告页,浏览器显示时有滚动条,影响美观,请问如何能非常完美地屏蔽浏览器的滚动条?

小编:浏览器默认留有纵向滚动条的宽度,当页面超过浏览器高度时自动显示纵向滚动条(页面超过浏览器宽度时也会自动显示横向滚动条)。不过为了实现特殊效果是可以隐藏或屏蔽滚动条的,通过JavaScript和CSS组合即可达到这个目的。

在网页<style>中添加html,body{overflow-x:hidden},则不显示横向滚动条;添加html,body{overflow-y:hidden},则不显示纵向滚动条;添加html,body{overflow:hidden;}则横纵滚动条都不显示。

关键词:显示输入字数

读者来信:很多论坛都有一个功能,在写帖子时能够实时显示输入的字数是多少,且能自动设置输入字数的上限,这个功能是怎么实现的?

小编:这个功能比较实用,通过一段JavaScrip代码就可以实现,代码如下:<textarea onkeyup='value=value.substr(0,10);this.nextSibling.innerHTML=value.length+"/10";'></textarea><div>0/10</div>。

程序利用onkeyup事件,每次用户输入时,都会首先取得文本框的值,然后利用substr()函数进行截取,使得文本框不会超过10个字符,再设置后面的div层的内容为“文本框的字数/10”并动态显示。

关键词:添加网站名称和地址

读者来信:复制有些网站内容的时候,会自动在复制内容后面添加网站名称和网站地址,这是一种效果非常好的宣传办法,我想在自己的网站中添加这个功能,应该怎么做?

小编:这种功能一般都是通过JavaScrip代码实现的。JavaScrip代码中body元素设置了许多事件,例如onclick、 onmouseover 、onfocus等,复制是oncopy,在用户复制时,激活一段函数,将剪贴板中的复制内容加上版权声明或推广地址。

代码如下所示(修改其中的网站名称和网站域名就可以用了):

<script>

document.body.oncopy = function () { setTimeout( function () { var text = clipboardData.getData("text"); if (text) { text = text + "\r\n本篇文章来源于 {站点名称}({网站域名}) 转载请以链接形式注明出处 网址:"+location.href; clipboardData.setData("text", text); } }, 100 ) }

</script>

关键词:禁止“另存为”

读者来信:我看到有些网站对自己的页面做了特殊处理,禁止用户将网页另存到本地,这个功能是怎么实现的?

小编:可以在<body></body>之间加入<noscript><iframe src=*></iframe></noscript>,加入上述代码后,当用户执行“另存为”命令时,会弹出“保存网页时出错”的对话框。

关键词:个性图标

读者来信:我想问问如何在IE地址栏显示出网站的个性图标,如网易的易字、搜狐的小脚印?

小编:首先必须制作一个ICO图标,可以在线制作,目前有很多网站提供这种服务,例如http://www.bitbug.net 、http://ico.logo.la等,也可以使用ICO软件制作。把做好的文件命名为favicon.ico,将文件上传到网站根目录。

然后在展现个性图标页面的代码head中,添加一段描述代码:<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />。