当前位置: 首页> 科技> 能源 > 外贸网站推广招聘_怎样制作游戏app软件_石家庄新闻头条新闻最新今天_网站维护费一年多少钱

外贸网站推广招聘_怎样制作游戏app软件_石家庄新闻头条新闻最新今天_网站维护费一年多少钱

时间:2025/9/6 9:29:55来源:https://blog.csdn.net/m0_74289471/article/details/143174059 浏览次数:0次
外贸网站推广招聘_怎样制作游戏app软件_石家庄新闻头条新闻最新今天_网站维护费一年多少钱

在C#中

初始版本

namespace _013_桥接模式
{/// <summary>/// 玩家抽象类/// </summary>public abstract class AbstractPlayer{protected IWeapon _weapon;//武器引用public void SetWeapon(IWeapon weapon){_weapon = weapon;}//抽象方法使用武器public abstract void UseWeaponAttack();}
}

namespace _013_桥接模式
{//抽象武器public abstract class IWeapon{public string Name { set; get; }    //武器名称public float attackValue { set; get; } //攻击力public abstract void  Attack();//攻击//加入怪物的引用public Monster monster { set; get; }/*public Monster Monsters { set;get;}=null;//设置攻击目标
public void SetAttackTarget(Monster monster)
{Monsters=monster;
}*/protected IWeapon(string name, float attackValue){Name = name;this.attackValue = attackValue;}}
}

namespace _013_桥接模式
{/// <summary>/// 玩家接口/// </summary>public interface IPlayer{void UseWeaponAttack();}
}

namespace _013_桥接模式
{public  class Mage: AbstractPlayer{       public override void UseWeaponAttack(){Console.WriteLine($"法师使用{_weapon.Name}武器进行攻击!");if (_weapon != null){_weapon.Attack();}}}
}

namespace _013_桥接模式
{public  class Warrior:AbstractPlayer{//使用武器public override void UseWeaponAttack(){//面向抽象编程,或者面向接口编程if (_weapon != null){Console.WriteLine($"战士使用{_weapon.Name}武器进行攻击!");_weapon.Attack();}}}
}

namespace _013_桥接模式
{public class Sword:IWeapon{public Sword(string name, float attackValue) : base(name, attackValue){}public override void Attack(){//武器特效逻辑Console.WriteLine($"{Name}大剑攻击!,发出咣当咣当的声音");//调用敌人的减血方法if(monster!=null){//击中敌人后的逻辑Console.WriteLine($"敌人掉了{attackValue}滴血!");monster.TakeDamage(attackValue);}}}
}

namespace _013_桥接模式
{public class Bow:IWeapon{public Bow(string name, float attackValue) : base(name, attackValue){}public override void Attack(){//武器特效逻辑Console.WriteLine($"{Name}搭弓射箭!,发出嗖嗖的声音");//击中敌人后的逻辑Console.WriteLine($"射中敌人,对方很高兴的掉了{attackValue}滴血!");//调用敌人的减血方法  if(monster!=null){//击中敌人后的逻辑Console.WriteLine($"敌人掉了{attackValue}滴血!");monster.TakeDamage(attackValue);}}}
}
namespace _013_桥接模式
{/// <summary>/// 怪物类/// </summary>public class Monster{public string Name { get; set; }public float Hp { get; set; }public Monster(string name, float hp){Name = name;Hp = hp;}public void TakeDamage(float damage){if(damage<Hp){Hp-=damage;}else{Hp = 0;}}}
}

namespace _013_桥接模式
{internal class Program{static void Main(string[] args){Warrior warrior = new Warrior();IWeapon sword = new Sword("风霜小剑",30f);IWeapon bow =new Bow("射日长弓",15f);Monster monster = new Monster("石头鬼",100f);warrior.SetWeapon(sword);sword.monster = monster;
// sword.SetAttackTarget(monster);//设置攻击目标warrior.UseWeaponAttack();}}
}

最终版本

实现玩家之间,玩家和怪物之间相互攻击

新增角色类

namespace _013_桥接模式
{/// <summary>/// 角色基类/// </summary>public  abstract class ICharacter{public string Name { get; set; }public float CurrentHP { get; set; }//当前血量public float MaxHP { get; set; } //最大血量//攻击方法public abstract void Attack(ICharacter character);//掉血方法public void TankDamage(float damage){if(CurrentHP > damage)CurrentHP -= damage;elseCurrentHP = 0;}}
}


namespace _013_桥接模式
{/// <summary>/// 玩家抽象类/// </summary>public abstract class AbstractPlayer:ICharacter{public AbstractPlayer(string name,float maxHP){Name = name;MaxHP = maxHP;CurrentHP = MaxHP;}}
}

namespace _013_桥接模式
{public class Warrior : AbstractPlayer{private IWeapon _weapon;//武器引用public Warrior(string name, float maxHP) : base(name, maxHP){}public void SetWeapon(IWeapon weapon){_weapon = weapon;}public override void Attack(ICharacter character){//面向抽象编程,或者面向接口编程if (_weapon != null){Console.WriteLine($"{Name}使用{_weapon.Name}武器进行攻击!");_weapon.Attack();character.TankDamage(_weapon.attackValue);Console.WriteLine($"{character.Name}掉了{_weapon.attackValue}滴血");}}}}


namespace _013_桥接模式
{/// <summary>/// 怪物类/// </summary>public abstract class Monster : ICharacter{public float AILevel { get; set; }public Monster(string name, float maxHP, float aILevel=1){Name = name;MaxHP = maxHP;CurrentHP = maxHP;AILevel = aILevel;}}
}

namespace _013_桥接模式
{/// <summary>/// 石头怪/// </summary>public class StoneMonster : Monster{public StoneMonster(string name, float maxHP, float aILevel = 1) : base(name, maxHP, aILevel){}public override void Attack(ICharacter character){Console.WriteLine($"{Name}对{character.Name}发起攻击");Console.WriteLine($"{character.Name}掉了10f血");character.TankDamage(10);}}
}

namespace _013_桥接模式
{//抽象武器public abstract class IWeapon{public string Name { set; get; }    //武器名称public float attackValue { set; get; } //攻击力public abstract void Attack();//攻击protected IWeapon(string name, float attackValue){Name = name;this.attackValue = attackValue;}}
}

namespace _013_桥接模式
{public class Bow:IWeapon{private Monster monster;public Bow(string name, float attackValue) : base(name, attackValue){}public override void Attack(){//武器特效逻辑Console.WriteLine($"{Name}搭弓射箭!,发出嗖嗖的声音");//击中敌人后的逻辑Console.WriteLine($"射中敌人,对方很高兴的掉了{attackValue}滴血!");Console.WriteLine($"敌人掉了{attackValue}滴血!");}}
}

namespace _013_桥接模式
{public class Sword:IWeapon{public Sword(string name, float attackValue) : base(name, attackValue){}private Monster monster;public override void Attack(){//武器特效逻辑Console.WriteLine($"{Name}大剑攻击!,发出咣当咣当的声音");//调用敌人的减血方法if(monster!=null){//击中敌人后的逻辑Console.WriteLine($"敌人掉了{attackValue}滴血!");Console.WriteLine($"掉了{attackValue}滴血");}}}
}

namespace _013_桥接模式
{internal class Program{static void Main(string[] args){Warrior warrior = new Warrior("战士",100f);IWeapon sword = new Sword("风霜小剑",30f);IWeapon bow =new Bow("射日长弓",15f);Monster monster = new StoneMonster("石头鬼",100f,1);         warrior.SetWeapon(sword);warrior.Attack(monster);monster.Attack(warrior);}}
}

关键字:外贸网站推广招聘_怎样制作游戏app软件_石家庄新闻头条新闻最新今天_网站维护费一年多少钱

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: