游戏时间逻辑计算问题

需求:一种玩法,服务器开服时间未定但是开启时候会发生过来,要求开服天数30天后的第一个周日后的每一天才发生通信交互。
写一个通用的开服N天后,星期M后才发生交互的通用函数。已知服务器开服时间ST,N和M都是假设已知的,当前服务器时间CT.
算法实现:
1.用格林尼治时间加上8小时,算出第一天的到24点的距离T1,还是要计算出来的,先全部换算为北京时间。ST + BT + T1
2.后面29天是满24小时的。T2
3.接下来是满了30天,,开始第二天的判断( 用ST + T1 + T2 再加多10秒来判断),判断当前天是否是周日( 也就是GSTime来计算,因为localTime会自己换算 ),如果是周日那么直接开启,Gs时间就是TT = ST +T1+T2。
如果是周5,那么day = 7-5需要多加48小时的秒数T3,也就是TT = ST + T1 + T2 + T3。
其它情况也是同理的,算得的GS Time作为判断就可以了。如果开启的是周三,当前天是周5,那么需要day = 7 - (5-3)天后才能开启得到T3,当前天是周三的话直接开启。 TT =  ST + T1 + T2 + T3。

4.用得到的截止时间 TT 和当前服务器的时间 CT进行比较下,大于则不发生交互,小于则发生通信交互。

遇到这种有点的计算,如果因为劳累一时间没有想法,那么先暂停下来, 用简单的例子建立模型,分类讨论 分割算法下,逐步推导, 再综合形成最终算法,有时候还要反复验证下通过理论和测试观察来发现缺陷。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值