C#控制台模拟热更新

C#控制台模拟热更新

简介

通过C#和lua代码,通过控制台来模拟实现热更新。Demo模拟游戏商城,副本和活动,实现活动的热更新。

代码片段

副本类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LuaDemo
{
    class Work
    {
        public string name = "副本";
        public Dictionary<int, string> itemInfo = new Dictionary<int, string>();

        public Work()
        {
            itemInfo.Add(1, "个人挑战副本1");
            itemInfo.Add(2, "个人挑战副本2");
            itemInfo.Add(3, "个人挑战副本3");
            itemInfo.Add(4, "个人挑战副本4");
        }

        public void ShowAllItem(Dictionary<int, string> itemInfo)
        {
            foreach (var item in itemInfo.Keys)
            {
                Console.WriteLine("ID:{0},副本名称:{1}", item, itemInfo[item]);
            }
        }

        public void PK(int id)
        {
            string temp;
            itemInfo.TryGetValue(id, out temp);
            Console.WriteLine("你开始了副本{0},该副本是:{1}", id, temp);
        }
    }
}

商城类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LuaDemo
{
    class Shop
    {
        public string name = "商城";

        public Dictionary<string, int> itemInfo = new Dictionary<string, int>();

        public Shop()
        {
            itemInfo.Add("材料1", 100);
            itemInfo.Add("材料2", 200);
            itemInfo.Add("装备1", 300);
            itemInfo.Add("装备2", 400);
        }
        public void ShowAllItem(Dictionary<string,int> itemInfo)
        {
            foreach (var item in itemInfo.Keys)
            {
                Console.WriteLine("名称:{0},售价:{1}", item, itemInfo[item]);
            }
        }

        public void BuyItem(string name)
        {
            int temp;
            itemInfo.TryGetValue(name, out temp);
            Console.WriteLine("您购买了:{0}物品,物品售价是:{1}金币", name,temp);

        }



    }
}

活动lua热更:


luanet.load_assembly("System")
Console = luanet.import_type("System.Console")
--活动名称
name = "端午节活动"
--商城数据
shopinfo = {}
shopinfo["活动材料1"] = 100
shopinfo["活动材料2"] = 200
shopinfo["活动材料3"] = 300
shopinfo["活动材料4"] = 400
--副本数据
workinfo = {}
workinfo["A"] = "活动副本A"
workinfo["B"] = "活动副本B"
workinfo["C"] = "活动副本C"
workinfo["D"] = "活动副本D"
--遍历商城副本
function showall(info)
	for key,value in pairs(info) do
			Console.WriteLine("{0}--{1}",key,value)
	end
end

--商品的购买方法
function buyitem(name)
	Console.WriteLine("拟购买的商品是{0},该商品的价格是:{1}",name,shopinfo[name])
end
--副本的挑战方法
function workpk(id)
	Console.WriteLine("你挑战的副本{0},该副本的描述是:{1}",id,workinfo[id])
end

--整个模块的核心逻辑方法
function avtivity()
	Console.WriteLine("||-------活动模块------||")
	Console.WriteLine("1.活动商城,2.活动副本")
	Console.Write("请输入你要进入的栏目ID:")
	id = Console.ReadLine()
	if(id == '1') then
		Console.WriteLine("---------活动商城--------")
		showall(shopinfo)
		Console.Write("请输入你要购买的名称:")
		shopname = Console.ReadLine()
		buyitem(shopname)
	elseif(id == '2') then
		Console.WriteLine("---------活动副本--------")
		showall(workinfo)
		Console.Write("请输入你要进入副本的ID:")
		Workid = Console.ReadLine()

		workpk(Workid)
	end

end

主程序:

using System;
using LuaInterface;
namespace LuaDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            Shop shop = new Shop();
            Work work = new Work();
            Lua lua = new Lua();
            lua.DoFile("Activity.lua");
            LuaFunction avtivity = lua.GetFunction("avtivity");
            string act = lua.GetString("name");
            while (true)
            {
                Console.WriteLine("------------------------");
                Console.WriteLine("1.{0},2.{1},3.{2}", work.name, act, shop.name);
                Console.WriteLine("------------------------");
                Console.Write("请输入你要进入的ID:");
                string index = Console.ReadLine();
                switch (index)
                {
                    case "1":
                        Console.WriteLine("---------副本模块--------");
                        work.ShowAllItem(work.itemInfo);
                        Console.Write("请输入你要进入副本的ID:");
                        int ID = Convert.ToInt32(Console.ReadLine());
                        work.PK(ID);
                        break;
                    case "2":
                        avtivity.Call();
                        break;
                    case "3":
                        Console.WriteLine("---------商城模块--------");
                        shop.ShowAllItem(shop.itemInfo);
                        Console.Write("请输入你要购买的名称:");
                        string itemname = Console.ReadLine();
                        shop.BuyItem(itemname);
                        break;
                }
            }
        }
    }
}

总结

完成程序打包发布,本程序模拟发布后只需更改lua文件即可完成对程序内活动的更改,不需要重新发布。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值