C#掌握台模仿電梯任務道理。本站提示廣大學習愛好者:(C#掌握台模仿電梯任務道理)文章只能為提供參考,不一定能成為您想要的結果。以下是C#掌握台模仿電梯任務道理正文
天天高低樓都是乘坐電梯的,就想電梯的任務道理是甚麼呢?因而本身寫了個掌握台法式來模仿一下電梯的任務道理!
采取面向對象的編程思惟!將電梯拆解為兩部門;
第一部門就是每一個樓層的掌握器(每一個樓層都有叫梯按鈕的哈,一個向上一個向下)
第二部門就電梯間了。電梯間裡有樓層按鈕,你想上誰人樓層便可以按哪一個按鈕了!
技巧難點:狀況刷新、敕令次序、電梯運轉
焦點代碼一:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Elevator { /// <summary> /// 樓層類,每一個樓層有向上叫梯敕令和向下叫梯敕令 /// </summary> public class Floor { Elevator elevator; /// <summary> /// 樓層號 /// </summary> private int _iFloorNo; public int IFloorNo { get { return _iFloorNo; } set { _iFloorNo = value; } } /// <summary> /// 下行需求 /// </summary> private bool _boolUp = false; /// <summary> /// 下行需求 /// </summary> private bool _boolDown = false; private bool _boolStop = false; public bool BoolStop { get { return _boolStop; } set { _boolStop = value; } } #region 結構函數 public Floor(int f,Elevator e) { _iFloorNo = f; elevator = e; } public Floor(int f) { _iFloorNo = f; } public Floor() { } #endregion /// <summary> /// 獲得本層能否停靠,能否為敕令層 /// </summary> /// <returns>停靠true;過false;</returns> public bool GetStatus() { return _boolDown || _boolUp; } /// <summary> /// 下行前往1;下行前往-1;本層為目標地前往0; /// </summary> /// <returns></returns> public int GetStatusFlag() { if (_boolDown) { return -1; } else if(_boolUp) { return 1; } else if(_boolStop) { return 0; } else { return -999; } } /// <summary> /// 上樓敕令 /// </summary> public void CommandUp() { _boolUp = true; elevator.GoToCommandFloor(); } /// <summary> /// 下樓敕令 /// </summary> public void CommandDown() { _boolDown = true; elevator.GoToCommandFloor(); } /// <summary> /// 樓層達到狀況刷新 /// </summary> public void Refresh() { _boolUp = false; _boolDown = false; _boolStop = false; } /// <summary> /// 樓層比擬看樓層號 /// </summary> /// <param name="floor"></param> /// <returns></returns> public int Compare(Floor floor) { int result = 1; if (this._iFloorNo > floor._iFloorNo) { result = 1; } else if (this._iFloorNo < floor._iFloorNo) { result = -1; } else { result = 0; } return result; } } }
焦點代碼二:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; namespace Elevator { /// <summary> /// 電梯類,有樓層選擇辦法 /// </summary> public class Elevator { #region 屬性 /// <summary> /// 以後樓層 /// </summary> public Floor _floorCurrent ; /// <summary> /// 全體樓層 /// </summary> public List<Floor> _floorAll = new List<Floor>(); #endregion /// <summary> /// 我想在所輸出參數樓層停滯 /// </summary> /// <param name="floor">想要停滯的樓層</param> public void CommandStop(Floor floor) { floor.BoolStop = true; GoToTargetFloor(); } /// <summary> /// 電梯向上運轉,運轉到floor層 /// </summary> /// <param name="floor"></param> public void GoUp(Floor floor) { if (_floorCurrent.Compare(floor) < 0) { Thread.Sleep(300); Console.WriteLine("下行:" + _floorCurrent.IFloorNo); int index = _floorAll.IndexOf(_floorCurrent); _floorCurrent = _floorAll[index + 1]; GoUp(floor); } else { Thread.Sleep(500); Reach(floor); } } /// <summary> /// 電梯向下運轉 /// </summary> public void GoDown(Floor floor) { if (_floorCurrent.Compare(floor) > 0) { Thread.Sleep(300); Console.WriteLine("下行:" + _floorCurrent.IFloorNo); int index = _floorAll.IndexOf(_floorCurrent); _floorCurrent = _floorAll[index - 1]; GoDown(floor); } else { Thread.Sleep(500); Reach(floor); } } /// <summary> /// 前去敕令層,輪回列表能否有敕令層 /// </summary> public void GoToCommandFloor() { foreach (var item in _floorAll) { if (item.GetStatus()) { if (_floorCurrent.Compare(item) < 0) { GoUp(item); } else if (_floorCurrent.Compare(item) > 0) { GoDown(item); } } } } /// <summary> /// 前去目的樓層 /// </summary> public void GoToTargetFloor() { foreach (var item in _floorAll) { if (item.GetStatusFlag()==0) { if (_floorCurrent.Compare(item) < 0) { GoUp(item); } else if (_floorCurrent.Compare(item) > 0) { GoDown(item); } } } } /// <summary> /// 達到樓層敕令 /// </summary> public void Reach(Floor f) { Console.WriteLine("電梯門翻開,停靠層:"+f.IFloorNo); f.Refresh(); } } }
焦點代碼三:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; namespace Elevator { class Program { static void Main(string[] args) { Elevator elevator = new Elevator(); List<Floor> lfloor = new List<Floor>(); Floor f1 = new Floor(1, elevator); Floor f2 = new Floor(2, elevator); Floor f3 = new Floor(3, elevator); Floor f4 = new Floor(4, elevator); Floor f5 = new Floor(5, elevator); Floor f6 = new Floor(6, elevator); Floor f7 = new Floor(7, elevator); Floor f8 = new Floor(8, elevator); Floor f9 = new Floor(9, elevator); Floor f10 = new Floor(10, elevator); lfloor.Add(f1); lfloor.Add(f2); lfloor.Add(f3); lfloor.Add(f4); lfloor.Add(f5); lfloor.Add(f6); lfloor.Add(f7); lfloor.Add(f8); lfloor.Add(f9); lfloor.Add(f10); elevator._floorAll = lfloor; //設置以後樓層 elevator._floorCurrent = f1; //2樓叫梯 想下樓 f2.CommandDown(); //目的樓層為1樓 elevator.CommandStop(f1); //4樓叫梯 f4.CommandUp(); //目的樓層為8樓 elevator.CommandStop(f8); Console.ReadLine(); } } }
以上所述就是本文的全體內容了,願望對年夜家闇練控制C#可以或許有所贊助。