加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

微信公众平台后台开发代码示例与说明

(2013-03-04 17:15:42)
分类: 技术小厨
以@悟网不欢 微信帐号的“我说你猜”小游戏为例。该游戏的源代码包含3个文件。
1. wwbl.php
该文件是微信的调用入口文件。核心语句有两行:$wechatObj->valid(); 用于申请开发者时向微信发送验证信息;$wechatObj->responseMsg(); 用于申请成功之后,处理用户发送的文本消息。

wechatCallbackapiTest类的responseMsg()负责接收微信公众帐号传递过来的消息,并产生回复内容发送给用户,这里调用了函数response_keyword($keyword, $fromUsername),这是处理用户输入的核心函数。该函数的定义代码位于response.php中。

2. response.php
核心函数response_keyword($keyword, $fromUsername)主要起到对用户输入进行逻辑分发的作用,前面4个case对应于新粉丝加入和用户输入的指令信息;最后一个case对应于用户输入“1”开始玩游戏,调用了GuessGame的init($fromUsername)函数,default对应于用户的其它输入(一般是输入答案或者继续看下一条提示),调用了GuessGame的play($fromUsername, $keyword)函数。这两个函数的定义都位于GuessGame.php中。

3. GuessGame.php
定义GuessGame类,完成所有游戏逻辑。在构造函数__construct()进行了数据库的连接。其余的两个核心函数是init($user)和play($user, $keyword)。
a) init($user)的作用是初始化一个游戏,主要的逻辑如下:先随机选择一个谜语($game_id = $this->getNewGameId();),然后读取谜底的类型信息($game_about = $this->getGameAbout($game_id);),读取谜语的第一条提示($first_step = $this->getGameStep($game_id, $current_step+1);),记录猜谜过程($this->writeUserGuessInfo($user, $game_id, $current_step);),最后向用户输出谜语提示($output = INTRODUCTION . $game_about . '。' . $first_step;)。
b) play($user, $keyword)的作用是判定用户输入的答案是否正确,主要逻辑如下:
----先根据用户id查询用户当前所猜的谜语、谜语的答案以及当前步骤
----如果答对了($this->checkAnswer($game_info['answer'], $keyword)),记录用户的答题信息,恭喜用户,结束当前游戏;
----如果没有答对
--------首先判断是否是否显示了全部提示(if ($current_step == $game_steps)),如果是直接告诉用户游戏结束;
--------如果还有提示未显示,记录用户的答题信息,判断是否只剩一条提示(if ($current_step == $game_steps-1)),如果是加入最后一次提示附加信息
----向用户显示下一条提示。

整个游戏程序的结构很简单,主要的逻辑也很简单。但是要实现逻辑的完整性,避免对用户的输入进行错误响应,也需要比较缜密的思考。

P.S. 本来想把代码作为附件贴到这篇博客上来的,尝试的时候才发现新浪博客不提供附件功能。只好先找个网盘了,等我上载以后,把地址贴出来。

-----------------------------------------------------------------
@悟网不欢 互联网的经历者、观察者和分享者,欢迎关注@悟网不欢的微博讨论交流,也欢迎加入@悟网不欢的微信公众帐号测试、发展、完善开源的“我说你猜”微信公众帐号游戏。请在微信中搜索wuwangbuhuan添加关注,或者扫描以下二位码。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有