
做一個這樣的管制圖,要求所有小飛機要沿著航線運動,且控制間隔時間,位置坐標隨大佬制定,有大佬給出解答么,在線等。。。。。
uj5u.com熱心網友回復:
private void button1_Click(object sender, EventArgs e){
Graphics g1 = this.CreateGraphics();
Pen pen2 = new Pen(Brushes.OrangeRed);
string s1 = "AAAAAAA\n82sgaf";
string s2 = "BBBBBBB\nod42s";
//string s3 = "CCCCCCC\ndgh3546";
int k = 115;//橫向航線的距離 除以二
int j = 100;//飛機間距
int m = 30;//重繪頻率
for (int s = 0; s <= 0; s++)//回圈一邊
{
//飛機1 飛向轉彎點
for (int i = 1; i <= 200; i++)
{
int a = 2 * i;
int b = 2 * i;
int c = i + 200;
int d = 600 - i;
draw();
g1.DrawArc(pen2, a, b, 10, 10, 0, 360);//飛機1
g1.DrawString(s1, Font, Brushes.Black, a + 10, b);//航班資訊1
//g1.DrawArc(pen2, c, d, 10, 10, 0, 360);//飛機3
//g1.DrawString(s3, Font, Brushes.Gray, c + 10, d);//3
//飛機2 出現
if (i > j)
{
g1.DrawArc(pen2, 2 * (i - j), 2 * (i - j), 10, 10, 0, 360);
g1.DrawString(s2, Font, Brushes.Black, 2 * (i - j) + 10, 2 * (i - j));//字
}
Thread.Sleep(m);
}
//飛機1 在橫向飛行 至結束
for (int i = 1; i <= k; i++)
{
int c = 400 + 2 * i;
draw();
g1.DrawArc(pen2, c, 400, 10, 10, 0, 360);
g1.DrawString(s1, Font, Brushes.Black, c + 10, 400);//字
//飛機2 繼續飛行 直到轉彎點
if (i - j <= 0)//向轉彎點飛行
{
g1.DrawArc(pen2, 2 * (i + 200 - j), 2 * (i + 200 - j), 10, 10, 0, 360);
g1.DrawString(s2, Font, Brushes.Black, 2 * (i + 200 - j) + 10, 2 * (i + 200 - j));//字
}
if (i - j > 0)//轉彎點之后 橫向飛行
{
g1.DrawArc(pen2, 2 * (i + 200 - j), 400, 10, 10, 0, 360);
g1.DrawString(s2, Font, Brushes.Black, 2 * (i + 200 - j) + 10, 400);//字
}
Thread.Sleep(m);
}
//飛機1飛行完成,飛機二還沒到轉彎點,繼續斜向飛行
if (k - j < 0)
{
for (int i = 1; i <= j - k; i++)
{
int a = 400 - (j - k) * 2 + 2 * i;
draw();
g1.DrawArc(pen2, a, a, 10, 10, 0, 360);
g1.DrawString(s2, Font, Brushes.Black, a + 10, a);//字
Thread.Sleep(30);
}
//飛機二 橫向飛行
for (int i = 1; i < k; i++)
{
draw();
g1.DrawArc(pen2, 400 + i * 2, 400, 10, 10, 0, 360);
g1.DrawString(s2, Font, Brushes.Black, 400 + i * 2 + 10, 400);//字
Thread.Sleep(m);
}
}
//飛機1飛行完成,飛機二到轉彎點,繼續橫向飛行
else
{
for (int i = 1; i < j; i++)
{
draw();
g1.DrawArc(pen2, 630 - j * 2 + i * 2, 400, 10, 10, 0, 360);
g1.DrawString(s2, Font, Brushes.Black, 630 - j * 2 + i * 2 + 10, 400);//字
Thread.Sleep(m);
}
}
}
//留底圖
draw();
}
//方法
//跑道和航線
public void draw()
{
Graphics g1 = this.CreateGraphics();
Pen pen = new Pen(Brushes.Black);
Pen pen1 = new Pen(Brushes.LightSkyBlue);
Size size = new System.Drawing.Size(180, 10);
Rectangle rec = new Rectangle(new Point(450, 400), size);
Point p1 = new Point(0, 0);
Point p2 = new Point(405, 405);
Point p3 = new Point(450, 405);
Point p4 = new Point(200, 600);
g1.Clear(this.BackColor);
g1.DrawRectangle(pen, rec);
g1.DrawLine(pen1, p1, p2);
g1.DrawLine(pen1, p3, p2);
g1.DrawLine(pen1, p4, p2);
}
自己瞎摸索的 但是多架飛機一起進場還有時間控制就不怎么會了
有大神指教么???
uj5u.com熱心網友回復:
可以參考下游戲引擎怎么做的Timer1.Tick+=(s,e) => Update
Update(){
//統一計算各個飛機的坐標,然后更新界面
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/130330.html
標籤:C#
上一篇:C#foreach用法
