游戏时间逻辑计算问题

来源:互联网 发布:网络光信号一直闪红灯 编辑:程序博客网 时间:2024/05/06 14:44
需求:一种玩法,服务器开服时间未定但是开启时候会发生过来,要求开服天数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
原创粉丝点击