---恢復內容開始---
程序開發周期
程序的一些重要算法
public void call()//根據電梯所在樓層和所在樓層的距離差,選擇最近的電梯調度 { int[] a = new int[4]; a[0] = (442 - label2.Top) / 19;//電梯一所在樓層 a[1] = (442 - label3.Top) / 19;//電梯二所在樓層 a[2] = (442 - label4.Top) / 19;//電梯三所在樓層 a[3] = (442 - label5.Top) / 19;//電梯四所在樓層 int n = 0; int min = 461; for (int i = 0; i <= 3; i++)//找出距離最近的電梯 if (Math.Abs(a[i] - floor1) < min) { n = i; m=n;//傳值到函數用來判斷請求到的電梯 min = Math.Abs(a[i] - floor1); } if (floor1 - a[n] == 0)//所在樓層相同不動 { switch (n) { case 3: this.timer1.Stop(); break; case 2: this.timer3.Stop(); break; case 1: this.timer5.Stop(); break; case 0: this.timer7.Stop(); break; } } else { if ((floor1 - a[n])> 0)//電梯所在樓層小於請求樓層,向上走 { switch (n) { case 3: this.timer1.Start(); break; case 2: this.timer3.Start(); break; case 1: this.timer5.Start(); break; case 0: this.timer7.Start(); break; } }
/*向下走*/ else { switch (n) { case 3: this.timer2.Start(); break; case 2: this.timer4.Start(); break; case 1: this.timer6.Start(); break; case 0: this.timer8.Start(); break; } } } }
電梯的上升函數
public void timer1_Tick(object sender, EventArgs e)//電梯四上升 { label7.Text = "電梯四";//顯示請求到的電梯 label1.Text = ("" + (461 - label5.Top) / 19 + " ↑");//顯示所在樓層及狀態 if (label5.Top < 53 + 19 * (21 - floor1)) this.timer1.Stop(); label5.Top -= 19;//電梯上升 }
電梯下降函數
private void timer2_Tick(object sender, EventArgs e)//電梯四下降 { label7.Text = "電梯四"; label1.Text = ("" + (424 - label5.Top) / 19 + " ↓"); if (label5.Top >404-19*floor1 ) this.timer2.Stop(); label5.Top += 19; }
運行的一些截圖