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("避開");
}
}
}
輸出結果
作業二:熱水器
燒水器,顯示器,警報器
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();//警報響起後停止燒水
}
}
}
輸出結果