C#服务端的微信小游戏——多人在线角色扮演(五)

C#服务端的微信小游戏——多人在线角色扮演(五)

每一次心跳,都会带来改变。从浩瀚的宇宙到渺小的尘埃,都将在时间的维度上不断的改变自己。
——茂叔

谁在心跳?

上一篇讲到了心跳,这是我们游戏世界的一切发生变化的核心,因此,无论GameWorldGameMap还是GameObject都应该有心跳HeartBeat,也都应该有向监控窗体报告信息的LOGHeartBeat是自我存在的内在基础,而LOG就是自我存在对外界的反射。

于是,很自然的,我们可以用一个抽象类来将三者统一起来,我们可以把这个类就叫做“存在”Existence
为了判别每一个实例,我们在实例化的时候还要为他们生成一个唯一的EID,以及为他们预留一个Name属性,方便必要时为其命名。为了实现EID,我们需要在G类里面添加两个静态方法以及一个静态成员:

……
        private static readonly Random r = new Random(DateTime.Now.Millisecond);
        public static string MakeMD5(string input)
        {
   
   
            MD5 md5 = MD5.Create();
            byte[] inputBytes = Encoding.ASCII.GetBytes(input);
            byte[] hashBytes = md5.ComputeHash(inputBytes);

            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < hashBytes.Length; i++)
            {
   
   
                sb.Append(hashBytes[i].ToString("X2"));
            }
            return sb.ToString();
        }

        public static int RND(int min, int max)
        {
   
   
            return r.Next(min, max + 1);
        }
……

修改GameWorldHeartBeat让其遍历所有地图,并调用GameMapHeartBeat
同样道理,修改GameMapHeartBeat,让其遍历所有内容,并调用GameObjectHeartBeat
经过调整之后的代码如下:

Existence.cs

abstract class Existence
    {
   
   
        private string eID;
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值