卡牌助手-微信小程序-开发复盘

软件开发背景

软件定位

软件初始定位是一款功能类小程序,替代狼人杀桌游纸质卡牌

这个是市场上大部分竞品都能实现的功能,而卡牌助手不仅要能够替代纸质卡牌,还要能够替代人类法官(有的玩家叫做上帝)。
有一个很现实的场景是:

  1. 少一个法官。好不容易聚集了十二个人玩线下面杀,却要因为没有法官,凑不够十二人局?
  2. 法官没有游戏体验。想着12人局还要加个法官,那就叫13个人吧,这样每一局又有一个人不能够参与游戏(喜欢当法官的例外)。
  3. 人数问题。前面两个场景还是比较友好的,但是要凑够12人真的很难,基本上都是九人局,加上法官十个人才能开一把。

狼人杀桌游的简要介绍

游戏规则请参考: https://jingyan.baidu.com/article/3f16e003c4eb142591c103d3.html
据我了解,具体详细规则每个桌游吧,或者每个城市可能都有细微区别,不过不是太大。
卡牌助手的规则,暂时是固定的,后续版本可能会考虑加入不同玩法。

微信小程序技术

微信小程序其本质就是前端技术,我个人的理解是微信小程序就是一个H5的前端框架。【html】【css】【js】【微信小程序框架、组件和API】

微信小程序官方文档:https://developers.weixin.qq.com/miniprogram/dev/index.html
前端开发工程师应该能够一周完美入手小程序,不像我,面向百度编程,活生生被逼成了全栈。

服务器技术

核心技术【java】【Spring boot】【Gradle】【WebSocket】【MySql】【Nginx反向代理】【微服务】	

服务器采用spring boot + gradle搭建
在这里插入图片描述

将通信方式写成RESTful API ,利用反射能够方便后续接口扩展

@Controller
@Configuration
public class LangRenSha extends MethodFactory{

    /**
     * 远程Url跨域访问方法
     *
     * @param methodName 方法名
     * @param parameter  参数
     * @param pwdKey     密钥
     * @return
     */
    @RequestMapping("/")
    @ResponseBody
    public String methodFactory(String methodName, String parameter, String pwdKey) {
        return MethodFactory.method("langrensha",methodName,parameter,pwdKey);
    }
}

public class MethodFactory {


    /**
     * 远程Url跨域访问方法
     *
     * @param methodName 方法名
     * @param parameter  参数
     * @param pwdKey     密钥
     * @return
     */
    public static String method(String path, String methodName, String parameter, String pwdKey) {
        if (!CheckUtil.checkKey(pwdKey)) {
            return "服务器不允许访问!";
        }
        if (methodName == null) {
            return "方法获取异常!";
        }
        String msg = "登录过程中异常终止!";
        try {
            //获取并验证用户
            //进入房间前,先登录
            WeChatApplet bo = new WeChatApplet();
            bo = PojoBean.jsonToBo(bo, parameter);
            if (CheckUtil.checkNull(bo.getCode())) {
                bo = Login.login(bo, methodName, bo.getCode());
                bo.setUserId(bo.getUserId());
                if ("01".equals(bo.getMsg())) {
                    //用户验证成功
                    //执行请求方法
                    Class c = Class.forName("com.chinaone." + path + ".bizc." + methodName.substring(0, 1).toUpperCase() + methodName.substring(1));
                    Method method = c.getMethod(methodName, WeChatApplet.class);
                    msg = (String) method.invoke(c.newInstance(), bo);
                }
            } else {
                return "参数错误:登录失败";
            }
        } catch (ClassNotFoundException e) {
            //e.printStackTrace();
            return "没有被允许的方法!";
        } catch (NoSuchMethodException e) {
            //e.printStackTrace();
            return "不正确的方法!";
        } catch (IllegalAccessException e) {
            //e.printStackTrace();
            return "错误的方法【01】!";
        } catch (InvocationTargetException e) {
            //e.printStackTrace();
            return "错误的方法【02】!";
        } catch (InstantiationException e) {
            e.printStackTrace();
        }
        return msg;
    }
}

有眼尖的同学可能注意到了,核心技术里没有ORM框架。是的,我并没有使用ORM框架,早在开发卡牌助手的一年前,我就在尝试造自己的轮子,替代ORM框架,我称之为myJDBC(已经注册了域名 www.myjdbc.com,表明我要将此作为长期业务的决心),注意!这里是替代,并不是写一个完整的ORM框架,我也没有这个能力和时间去写一个完整的ORM框架。

我造轮子的目的是为了让自己提高开发效率,常用的ORM框架MybatisHibernate都需要繁琐的配置XML,当然这里配置的XML都具有不可替代的维护优势,但是我并不需要,尽管他们很完美,但我并不需要。再者,如果从效率上考察,自己封装JDBC也要远比ORM框架快速高效很多。

虽然软件已经上线,但是其实只属于内测版本,因为还有很多功能不完善,很多代码不规范,希望能在年前解决。

最后附上两张游戏截图,和我的GitHub地址:https://github.com/a289222346 (暂时将项目私有化了,等待软件成熟再公开,GitHub这个免费私有库非常及时呀-_-!!)
在这里插入图片描述

在这里插入图片描述

历史版本

V1.1.2更新

2019年1月14日更新

服务器端:

  1. 重构myJDBC,修复Connection未及时关闭导致的数据库连接问题,在设计myJDBC的时 候,隐约记得JVM会自动回收Connection,所以特意未使用close方法,事实证明这是不可行的,就算JVM会回收,也是低效率的回收,还是自己动手的好。

  2. 修改狼人杀游戏玩法逻辑和运算规则

微信小程序端:
3. 解决断线不能自动重连问题。
4. 优化网络延时及机器运行速度对游戏的影响

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值