作业一:
1.英雄:大招1000,防御力为300,当英雄对怪物进行攻击时,怪物会做出反应;
2.怪物:攻击力500,防御力400,当怪物对英雄进行攻击时,英雄会做出反应;
3..如果a攻击力大于b的防御力,那a攻击b时,b会受伤害,否则就是避开
4.一个英雄对象,4只怪物,怪物编号不同;
class Hero
{
//声明委托
public delegate void HeroHandler(int a);
//攻击事件
public static event HeroHandler Hhit;
private string name;//英雄名字
private int attack = 1000;//攻击力为1000
private int defense = 300;//防御力为300
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
public int Attack
{
get
{
return attack;
}
set
{
attack = value;
}
}
public int Defense
{
get
{
return defense;
}
set
{
defense = value;
}
}
public Hero(string name ) {
this.Name = name;
Monster.Mhit += Reaction;//怪物攻击绑定反应事件
}
/// <summary>
/// 攻击方法
/// </summary>
public void Att() {
//如果事件不为空 英雄被怪物攻击做出反应
if (Hhit!=null) {
Hhit(this.Attack);
}
}
/// <summary>
/// 被攻击做出反应
/// </summary>
/// <param name="monattack"></param>
public void Reaction(int monattack) {
if (monattack > Defense)//如果接收到的怪物的攻击大自身防御做出反应
{
Console.WriteLine("英雄"+Name+"受到伤害");
}
else {
Console.WriteLine("避开");
}
}
}
class Monster
{
public delegate void MonHandler(int a);
public static event MonHandler Mhit;
private int id;//怪物编号
private int attack = 500;
private int defense = 400;
public int Id
{
get
{
return id;
}
set
{
id = value;
}
}
public int Attack
{
get
{
return attack;
}
set
{
attack = value;
}
}
public int Defense
{
get
{
return defense;
}
set
{
defense = value;
}
}
public Monster(int id) {
this.Id = id;
Hero.Hhit += Reaction;
}
/// <summary>
/// 攻击
/// </summary>
/// <param name="attack"></param>
public void Att()
{
if (Mhit != null)
{
Mhit(this.Attack);
}
}
/// <summary>
/// 受到攻击做出的反应
/// </summary>
/// <param name="herattack"></param>
public void Reaction(int herattack) {
if (herattack > Defense)
{
Console.WriteLine("怪物"+Id+"受到伤害");
}
else {
Console.WriteLine("避开");
}
}
}
输出结果
作业二:热水器
烧水器,显示器,警报器
扫描二维码关注公众号,回复:
2685973 查看本文章
1.烧水器:负责烧水,温度会发生改变
2.随着温度发生改变,显示器显示的内容就发生改变;
3.当温度到达100时,发出警报声,停止烧水;
/// <summary>
/// 烧水器类
/// </summary>
class Boiler
{
public Boiler() {
//与警报器绑定烧水停止事件
Alarm.callHandler += Stop;
}
public delegate void WaterBhandler(int a);
public static WaterBhandler Wathandler;
private int tem = 35;//温度
public int Tem
{
get
{
return tem;
}
set
{
tem = value;
}
}
/// <summary>
/// 将水倒入开始烧水
/// </summary>
/// <param name="tem"></param>
public void WaterB() {
Console.WriteLine("倒入温度为{0}的水",Tem);
Console.WriteLine("正在烧水...");
Tem += 65;//加热65度
//如果事件不为空
if (Wathandler!=null) {
Wathandler(Tem);//将温度传递给显示器和警报器
}
}
/// <summary>
/// 停止烧水
/// </summary>
public void Stop() {
if (Alarm.callHandler!=null) {
Console.WriteLine("停止烧水");
}
}
}
/// <summary>
/// 显示器类
/// </summary>
class Display
{
public Display() {
//与烧水器绑定
Boiler.Wathandler += Show;
}
/// <summary>
///
///同步显示温度 </summary>
/// <param name="tem"></param>
public void Show(int tem) {
Console.WriteLine("显示温度"+tem);
}
}
/// <summary>
/// 警报器类
/// </summary>
class Alarm
{
public delegate void CallHandler();
public static CallHandler callHandler;
public Alarm() {
//与烧水器绑定
Boiler.Wathandler += Call;
}
/// <summary>
/// 当温度达到100时警报响起
/// </summary>
/// <param name="tem"></param>
public void Call(int tem) {
if (tem>=100) {
Console.WriteLine("警报响起dilidili");
callHandler();//警报响起后停止烧水
}
}
}
输出结果