学习 Unity 3D游戏开发日常笔记(C# 了解集合)

Unity 3D游戏开发日常笔记(C# 了解集合)

2019.7.29(一)

namespace 集合
{
    class Item {
        //服务器数据、表数据
        //服务器数据:等阶 等级,所有玩家都可能不一样的数据称为服务器数据
        //表数据:    所有玩家都一样的:
        public int id;//唯一的
        public string name;
        public int count;

        public Item(int id, string name, int count) {
            this.id = id;
            this.name = name;
            this.count = count;
        }
    }

    class BagDataManager {
        private static BagDataManager instance;
        public static BagDataManager Instance {
            get {
                if (instance == null) {
                    instance = new BagDataManager();
                }
                return instance;
            }
        }
        private BagDataManager() { }

        Item[] items = new Item[4];
        int count = 0;

        /// 
        /// 将装备放入数组,先判断是否已经存了同种装备
        /// 如果已经有了同种装备,修改数量即可
        /// 
        /// 
        public void Add(Item item) {
            //如果已经有了同种装备,修改数量即可
            for (int i = 0; i < count; i++)
            {
                if (items[i].id == item.id) {
                    items[i].count += item.count;
                    return;
                }
            }
            //如果能运行到这个地方,说明数组中没有当前添加的装备
            if (count < items.Length)
            {
                items[count] = item;
                count++;
            }
            else {
                //数组装不下,需要拓展数组
                ExtendArr();
                Add(item);
            }
        }
        /// 
        /// 数组长度拓展一倍
        /// 
        void ExtendArr() {
            Item[] myItems = new Item[items.Length * 2];
            for (int i = 0; i < items.Length; i++)
            {
                myItems[i] = items[i];
            }
            items = myItems;
        }

        /// 
        /// 删除指定id的装备
        /// 为什么不进行传对象删除
        /// 
        /// 
        public void Delete(int id) {
            for (int i = 0; i < count; i++)
            {
                if (items[i].id == id) {
                    items[i] = null;
                    MoveItem(i);
                    count--;
                }
            }
        }
        /// 
        /// 根据传对象的id来进行删除
        /// 
        /// 
        public void Delete(Item item) {
            for (int i = 0; i < count; i++)
            {
                if (items[i].id == item.id) {
                    items[i] = null;
                    MoveItem(i);
                    count--;
                }
            }
        }
        /// 
        /// 删除某个装备之后,后面的数据往前挪
        /// 
        /// 
        void MoveItem(int index) {
            for (int i = index; i < count-1; i++)
            {
                items[i] = items[i + 1];
                items[i + 1] = null;
            }
        }
        /// 
        /// 针对某个id的装备进行数量增加
        /// 
        /// 
        public void Change(int id,int count) {
            for (int i = 0; i < this.count; i++)
            {
                if (items[i].id == id) {
                    items[i].count += count;
                }
            }
        }
        /// 
        /// 根据装备的id查装备信息
        /// 
        public Item Find(int id) {
            Item item = null;
            for (int i = 0; i < count; i++)
            {
                if (items[i].id == id) {
                    item = items[i];
                }
            }
            return item;
        }

        /// 
        /// 将当前这个装备插入到某个位置
        /// 
        /// 
        /// 
        public void Insert(Item item,int index) {
            //1.当前数组中是否已经有了当前装备
            for (int i = 0; i < count; i++)
            {
                if (items[i].id == item.id) {
                    items[i].count += item.count;
                    return;
                }
            }

            //2.当前装备数组中没有当前装备item
            if (count >= items.Length)
            {
                //数组长度不够,需要拓展数组
                ExtendArr();
            }
            MoveItemBack(index);
            items[index] = item;
            count++;
        }
        /// 
        /// 插入数据时,数据元素往后挪位置
        /// 
        void MoveItemBack(int index) {
            for (int i = count-1; i >= index ; i--)
            {
                items[i + 1] = items[i];
            }
        }


        /// 
        /// 显示当前背包中所有装备数据
        /// 
        public void Show() {
            for (int i = 0; i < count; i++)
            {
                if (items[i] == null)
                    continue;
                Console.WriteLine("装备:{0},数量:{1}",items[i].name,items[i].count);
            }
        }

    }

    class Program
    {
        static void Main(string[] args)
        {

            //Item:id、 等级 level、数量:count、名字:name;
            //增  删  插  改  查
            Item i1 = new Item(101, "大刀1", 3);
            Item i2 = new Item(102, "大刀2", 7);
            Item i3 = new Item(103, "靴子", 5);
            Item i4 = new Item(104, "大力丸", 2);
            Item i5 = new Item(105, "大刀3", 3);
            Item i6 = new Item(101, "大刀1",4);

            BagDataManager.Instance.Add(i1);
            BagDataManager.Instance.Add(i2);
            BagDataManager.Instance.Add(i3);
            //BagDataManager.Instance.Add(i4);
            BagDataManager.Instance.Add(i5);
            //BagDataManager.Instance.Add(i6);
            

            BagDataManager.Instance.Show();

            //Item item = BagDataManager.Instance.Find(101);
           // Console.WriteLine("数量:"+item.count);


            Console.WriteLine( "-------------------");
            // BagDataManager.Instance.Delete(i6.id);

            //BagDataManager.Instance.Change(105, 5);
            //BagDataManager.Instance.Show();

            BagDataManager.Instance.Insert(i4, 1);
            BagDataManager.Instance.Show();


            Console.ReadKey();
        }
    }
}
运行结果:

学习 Unity 3D游戏开发日常笔记(C# 了解集合)_第1张图片

你可能感兴趣的:(U3D游戏开发)