C# 委托事件简单示例

举报
陈言必行 发表于 2021/08/14 01:24:38 2021/08/14
【摘要】 使用C#语言进行编写:设计一个战士对象基础防御为50,基础经验值0,每间隔3秒(时间可以调整)经验会提升10,当经验到到达100时升级,升级时自己基础防御力提升%0.5,友军(防御是40)提升%0.1,敌人(防御是30)会下降%0.2,使用事件委托的概念完成升级时的需求。 using System;using System.Collections.Generic;...

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



  
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace Second
  7. {
  8. //定义升级委托
  9. public delegate void ShengJi();
  10. class Program
  11. {
  12. static void Main(string[] args)
  13. {
  14. Warrior wat = new Warrior();
  15. Allies all = new Allies();
  16. Enemy ene = new Enemy();
  17. //注册方法
  18. wat.shengji += all.AddDefend;
  19. wat.shengji += ene.ReDefend;
  20. //游戏开始
  21. wat.Upgrade();
  22. ///注销方法
  23. wat.shengji -= all.AddDefend;
  24. wat.shengji -= ene.ReDefend;
  25. Console.Read();
  26. }
  27. }
  28. /// <summary>
  29. /// 战士类
  30. /// </summary>
  31. public class Warrior
  32. {
  33. public event ShengJi shengji; //定义事件
  34. public float defend = 50; //基础防御值和,经验值
  35. public int exp = 0;
  36. private int time = 1;
  37. int count = 1; //战士等级
  38. public void Upgrade()
  39. {
  40. while ( count < 30) //人物满级了
  41. {
  42. if ((time % 3) == 0) //假装是3秒
  43. {
  44. exp+=10; //经验增长10
  45. }
  46. time++;
  47. //Console.WriteLine(exp);
  48. if (exp == 100)
  49. {
  50. exp = 0;
  51. count++;
  52. Console.WriteLine();
  53. Console.WriteLine("=======当前等级为{0}:=======",count);
  54. defend *= (1 + 0.05f); //战士防御值增加
  55. Console.WriteLine("自己的防御值:" + defend);
  56. //调用事件
  57. shengji();
  58. }
  59. }
  60. }
  61. }
  62. /// <summary>
  63. /// 友军类
  64. /// </summary>
  65. class Allies
  66. {
  67. public float defend = 40; //初始防御值
  68. public void AddDefend()
  69. {
  70. defend *= (1 + 0.01f); //提升防御值的0.01
  71. Console.WriteLine("友军的防御值:" + defend);
  72. }
  73. }
  74. /// <summary>
  75. /// 敌军类
  76. /// </summary>
  77. class Enemy
  78. {
  79. public float defend = 30; //初始防御值
  80. public void ReDefend()
  81. {
  82. defend *= (1 - 0.02f); //降低防御值的0.02
  83. Console.WriteLine("敌人的防御值:" + defend);
  84. }
  85. }
  86. }

文章来源: czhenya.blog.csdn.net,作者:陈言必行,版权归原作者所有,如需转载,请联系作者。

原文链接:czhenya.blog.csdn.net/article/details/77775819

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。