完成模拟英雄联盟1V1对战的回合制文字游戏
具体要求如下:
-
英雄初始没有学习技能,也没有装备
-
英雄每回合可以
1 选择学习⼀个技能【每个英雄最多学习4个技能】
或给学过的技能升⼀级【每个技能最⾼3级,默认1级】 -
升级后的技能伤害有所提⾼
特殊效果可以酌情设计【眩晕、沉默等】(选做) -
英雄每回合可以选择行动⼀次(三种行动可选,但会因为所处状态有所限制)
1、【普通攻击】(若被眩晕,则不可做此操作)
普通攻击造成伤害
造成伤害之后,还会获得相应的⾦钱2、或【技能攻击】(若被眩晕或者沉默,则不可做此操作)
技能攻击造成伤害
造成伤害之后,还会获得相应的⾦钱
技能攻击还可以使对⽅【(选做)】
【眩晕(每三回合能使⽤⼀次)】下回合对⽅不能攻击
【沉默(每两回合能使⽤⼀次)】下回合对⽅不能释放技能
【其他技能攻击模式可⾃⾏设计】3、 或购买⼀件装备(任意状态皆可做此操作)
-
购买装备需要⽀付⾦钱
-
每个英雄最多购买6件装备
-
两个英雄回合交替,直⾄⼀⽅英雄死亡
需求分析:
首先,我们肯定需要一个英雄类,一个装备类,一个技能类,一个商店类,一个装备类型的枚举,一个英雄状态的枚举,一个初始化操作的程序入口(main)。当然还可以细分装备的种类等等,博主这里偷懒就没有做细分,武器装备和消耗品都放在一起,读者可以自行添加(通过子类继承装备类重写可以实现)
下面开始上代码:
一、装备类
using System;
namespace textGame
{
/// <summary>
/// 装备类
/// </summary>
class Equipment
{
/// <summary>
/// 装备名称
/// </summary>
public string name;
/// <summary>
/// 攻击加成
/// </summary>
public int adUp;
/// <summary>
/// 法强加成
/// </summary>
public int apUP;
/// <summary>
/// 护甲加成
/// </summary>
public int armorUp;
/// <summary>
/// 魔抗加成
/// </summary>
public int magicResistanceUp;
/// <summary>
/// 购买价格
/// </summary>
public int buyPrice;
/// <summary>
/// 出售价格
/// </summary>
public int sellPrice;
/// <summary>
/// 装备类型
/// </summary>
public EquipmentType type;
/// <summary>
/// 回复血量
/// </summary>
public int hp;
public Equipment(string name, int adUp, int apUP, int armorUp, int magicResistanceUp, int buyPrice, int sellPrice, EquipmentType type, int hp)
{
this.name = name;
this.adUp = adUp;
this.apUP = apUP;
this.armorUp = armorUp;
this.magicResistanceUp = magicResistanceUp;
this.buyPrice = buyPrice;
this.sellPrice = sellPrice;
this.type = type;
this.hp = hp;
}
/// <summary>
/// 装备详情介绍方法
/// </summary>
public void Introduce()
{
if (type == EquipmentType.Normal)
{
Console.WriteLine($"-------【装备名称】:{name}-------");
Console.WriteLine($"【装备花费:{buyPrice}】");
Console.WriteLine($"【装备类型:普通类型】");
Console.WriteLine($"【攻击加成:{adUp}】");
Console.WriteLine($"【法术加成:{apUP}】");
Console.WriteLine($"【护甲加成:{armorUp}】");
Console.WriteLine($"【魔抗加成:{magicResistanceUp}】");
Console.WriteLine("---------------------------------------------");
}
else
{
Console.WriteLine($"-------【装备名称】:{name}-------");
Console.WriteLine($"【装备花费:{buyPrice}】");
Console.WriteLine($"【装备类型:消耗品】");
Console.WriteLine($"【装备回复生命值:{hp}】");
Console.WriteLine("---------------------------------------------");
}
}
}
}
二、装备类型枚举
namespace textGame
{
/// <summary>
/// 装备类型的枚举
/// </summary>
enum EquipmentType
{
/// <summary>
/// 普通类型
/// </summary>
Normal,
/// <summary>
/// 消耗品
/// </summary>
Consumables
}
}
三、技能类
using System;
namespace textGame
{
/// <summary>
/// 技能类
/// </summary>
class Skill
{
/// <summary>
/// 技能名称
/// </summary>
public string name;
/// <summary>
/// 技能等级
/// </summary>
public int level;
/// <summary>
/// 技能附加状态
/// </summary>
public State state;
/// <summary>
/// 是否学习了该技能
/// </summary>
public bool isStudy;
/// <summary>
/// 技能伤害
/// </summary>
public int dmg;
/// <summary>
/// 技能CD
/// </summary>
public int cd;
/// <summary>
/// 记录技能cd情况
/// </summary>
public int cdCount;
/// <summary>
/// 技能升级
/// </summary>
public bool LevelUp()
{
if (isStudy == true)
{
if (level < 3)
{
level++;
Console.WriteLine($"技能{name}升级成功!");
return true;
}
else
{
Console.WriteLine("技能已满级!");
return false;
}
}
else
{
Console.WriteLine("该技能尚未学习,无法升级!");
return false;
}
}
/// <summary>
/// 学习技能
/// </summary>
public bool StudySkill()
{
//判断是否学习过
if (isStudy == false)