ITPub博客

首页 > 应用开发 > IT综合 > 设计模式之C#实现(一)--AbstractFactory之五(转)

设计模式之C#实现(一)--AbstractFactory之五(转)

原创 IT综合 作者:hphubei 时间:2007-07-08 15:05:13 0 删除 编辑
namespace Maze{

using System.Collections;



public class MapSite{

public virtual void Enter(){}

}



public enum Direction {North,South,East,West}



public class Room : MapSite{

public string Print(){

string result = "";

for(int i = 0 ;i<=3;i++){

switch(i){

case (int)Direction.East:{

result += "East is:"+this.GetSide(Direction.East)+" ";

break;

}

case (int)Direction.North:{

result += "North is:"+this.GetSide(Direction.North)+" ";

break;

}

case (int)Direction.South:{

result += "South is:"+this.GetSide(Direction.South)+" ";

break;

}

case (int)Direction.West:{

result += "West is:"+this.GetSide(Direction.West)+" ";

break;

}

}

}

return result;

}



public Room(int n){

this.m_roomNumber = n;

}



public MapSite GetSide(Direction dir){

return this.m_sides[(int)dir];

}



public void SetSide(Direction dir,MapSite mapSite){

this.m_sides[(int)dir] = mapSite;

}



public override void Enter(){}

private MapSite[] m_sides = new MapSite[4];

int m_roomNumber;

}



public class Wall : MapSite{

public Wall(){}

public override void Enter(){}

}



public class Door : MapSite{

public Door(Room oneRoom,Room otherRoom){}

public override void Enter(){}

public Room oneRoom{

get{return this.m_oneRoom;}

set{this.m_oneRoom = value;}

}

private Room m_oneRoom;

public Room otherRoom{

get{return this.m_otherRoom;}

set{this.m_otherRoom = value;}

}

private Room m_otherRoom;

private bool m_isOpen;

public bool IsOpen{

get{return this.m_isOpen;}

set{this.m_isOpen = value;}

}

}



public class MazeClass{

public MazeClass(){}



public string Print(){

string result = "";

for(int i = 0; i<=this.m_Maze.Count-1;i++){

result +=this.RoomNumber(i).Print()+" ";

}

return result;

}



public void AddRoom(Room room){

m_Maze.Add(room);

}



public Room RoomNumber(int roomNumber){

return (Room)this.m_Maze[roomNumber];

}



private ArrayList m_Maze = new ArrayList();



}

}



private void Form1_Load(object sender, System.EventArgs e) {

AbstractFactory factory = new MazeFactory();

MazeGame game = new MazeGame();

MazeClass aMaze = game.MazeCreate(factory);

this.richTextBox1.AppendText(aMaze.Print());



}



以下为输出结果:

North is:Maze.Wall South is:Maze.Wall East is:Maze.Door West is:Maze.Wall

North is:Maze.Wall South is:Maze.Wall East is:Maze.Wall West is:Maze.Door[@more@]

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/79548/viewspace-925307/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    181
  • 访问量
    274756