C# 委托事件简单示例

使用C#语言进行编写:设计一个战士对象基础防御为50,基础经验值0,每间隔3秒(时间可以调整)经验会提升10,当经验到到达100时升级,升级时自己基础防御力提升%0.5,友军(防御是40)提升%0.1,敌人(防御是30)会下降%0.2,使用事件委托的概念完成升级时的需求。


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

namespace Second
{
    //定义升级委托
    public delegate void ShengJi();

    class Program
    {
        static void Main(string[] args)
        {
            Warrior wat = new Warrior();
            Allies all = new Allies();
            Enemy ene = new Enemy();
            //注册方法
            wat.shengji += all.AddDefend;
            wat.shengji += ene.ReDefend;
            //游戏开始
            wat.Upgrade();

            ///注销方法
            wat.shengji -= all.AddDefend;
            wat.shengji -= ene.ReDefend;
            
            Console.Read();
        }
    }
    /// <summary>
    /// 战士类
    /// </summary>
    public class Warrior
    {
        public event ShengJi shengji;  //定义事件
        public float defend = 50;  //基础防御值和,经验值
        public int exp = 0;
        private int time = 1;
        int count = 1;  //战士等级
        public void Upgrade()
        {
            while ( count < 30)   //人物满级了
            {
                if ((time % 3) == 0) //假装是3秒
                {
                   exp+=10;  //经验增长10
                }
                time++;    
                //Console.WriteLine(exp);
                if (exp == 100)
                {
                    exp = 0;
                    count++;
                    Console.WriteLine();
                    Console.WriteLine("=======当前等级为{0}:=======",count);

                    defend *= (1 + 0.05f);   //战士防御值增加
                    Console.WriteLine("自己的防御值:" + defend);
                    //调用事件
                    shengji();
                }
            }
        }
    }
    /// <summary>
    /// 友军类
    /// </summary>
    class Allies
    {
        public float defend = 40;  //初始防御值
        public void AddDefend()
        {
            defend *= (1 + 0.01f);  //提升防御值的0.01
            Console.WriteLine("友军的防御值:" + defend);
        } 
    }

    /// <summary>
    /// 敌军类
    /// </summary>
    class Enemy
    {
        public float defend = 30;  //初始防御值
        public void ReDefend()
        {
            defend *= (1 - 0.02f);  //降低防御值的0.02
            Console.WriteLine("敌人的防御值:" + defend);
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈言必行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值