示例#1
0
        private void rysujObiektNaziemny(ObiektNaziemny on, Dystans d, Graphics g)
        {
            const int a = 20;
            Point     pw = pozycjaWzgledna(on.X, on.Y);
            int       x = pw.X, y = pw.Y;
            Pen       p = new Pen(d == Dystans.Bezpieczny ? Color.White : Color.Red);

            p.Width = 1;
            g.DrawRectangle(p, x - a / 2, y - a / 2, a, a);
            g.DrawLine(p, x - a / 2, y - a / 2, x + a / 2, y + a / 2);
            g.DrawLine(p, x - a / 2, y + a / 2, x + a / 2, y - a / 2);
            StringFormat sf = new StringFormat();

            sf.Alignment     = StringAlignment.Center;
            sf.LineAlignment = StringAlignment.Center;
            g.DrawString(on.Nazwa, Font, d != Dystans.Kolizja ? Brushes.White : Brushes.Red, new Rectangle(x, y - a / 2 - 15, 0, 0), sf);
        }
示例#2
0
        private void button1_Click(object sender, EventArgs e)
        {
            if (radioButton1.Checked && idTextBox.Text.Length == 0)
            {
                MessageBox.Show("Podaj nazwę obiektu!");
                return;
            }
            double x, y;

            if (!double.TryParse(xTextBox.Text, out x) || !double.TryParse(yTextBox.Text, out y))
            {
                MessageBox.Show("Nieprawidłowe współrzędne!");
                return;
            }
            Obiekt o;

            if (radioButton1.Checked)
            {
                o = new ObiektNaziemny(idTextBox.Text, x, y);
            }
            else
            {
                double wysokosc, predkosc, kierunek;
                if (!double.TryParse(wysokoscTextBox.Text, out wysokosc) || wysokosc < 0)
                {
                    MessageBox.Show("Nieprawidłowa wartość wysokości!");
                    return;
                }
                if (!double.TryParse(predkoscTextBox.Text, out predkosc) || predkosc < 0)
                {
                    MessageBox.Show("Nieprawidłowa wartość prędkości!");
                    return;
                }
                if (!double.TryParse(kierunekTextBox.Text, out kierunek))
                {
                    MessageBox.Show("Nieprawdiłowy kierunek!");
                    return;
                }
                o = new Samolot((owner.NextId), x, y, wysokosc, predkosc, kierunek);
            }
            owner.DodajObiekt(o);
            Close();
        }
示例#3
0
        private void rysuj(Graphics g)
        {
            Dystans[] d = new Dystans[radar.Obiekty.Count];
            for (int i = 0; i < d.Length; i++)
            {
                d[i] = Dystans.Bezpieczny;
            }
            for (int i = 0; i < radar.Obiekty.Count; i++)
            {
                Samolot s = radar.Obiekty[i] as Samolot;
                if (s == null || d[i] == Dystans.Kolizja)
                {
                    continue;
                }
                for (int j = 0; j < radar.Obiekty.Count; j++)
                {
                    if (radar.Kolizja(s, radar.Obiekty[j]))
                    {
                        d[i] = Dystans.Kolizja;
                        d[j] = Dystans.Kolizja;
                        break;
                    }
                    else if (radar.NiebezpiecznyDystans(s, radar.Obiekty[j]))
                    {
                        d[i] = Dystans.Niebezpieczny;
                        d[j] = Dystans.Niebezpieczny;
                    }
                }
            }
            g.Clear(Color.Black);
            for (int i = 0; i < radar.Obiekty.Count; i++)
            {
                if (radar.Obiekty[i] is ObiektNaziemny)
                {
                    ObiektNaziemny on = radar.Obiekty[i] as ObiektNaziemny;
                    rysujObiektNaziemny(on, d[i], g);
                }
                else if (radar.Obiekty[i] is Samolot)
                {
                    Samolot s = radar.Obiekty[i] as Samolot;
                    rysujSamolot(s, d[i], g);
                }
            }
            g.DrawLines(Pens.White, new Point[] { new Point(10, 40), new Point(5, 40), new Point(5, rozmiarEkranu.Height - 40), new Point(10, rozmiarEkranu.Height - 40) });
            g.DrawLine(Pens.White, 5, rozmiarEkranu.Height / 2, 10, rozmiarEkranu.Height / 2);
            g.DrawLines(Pens.White, new Point[] { new Point(40, 10), new Point(40, 5), new Point(rozmiarEkranu.Width - 40, 5), new Point(rozmiarEkranu.Width - 40, 10) });
            g.DrawLine(Pens.White, rozmiarEkranu.Width / 2, 5, rozmiarEkranu.Width / 2, 10);
            StringFormat sf = new StringFormat();

            sf.Alignment     = StringAlignment.Near;
            sf.LineAlignment = StringAlignment.Center;
            Point pb1 = pozycjaBezwzgledna(40, 40), pb2 = pozycjaBezwzgledna(rozmiarEkranu.Width / 2, rozmiarEkranu.Height / 2), pb3 = pozycjaBezwzgledna(rozmiarEkranu.Width - 40, rozmiarEkranu.Height - 40);

            g.DrawString(pb1.Y.ToString(), Font, Brushes.White, new Rectangle(12, 40, 0, 0), sf);
            g.DrawString(pb2.Y.ToString(), Font, Brushes.White, new Rectangle(12, rozmiarEkranu.Height / 2, 0, 0), sf);
            g.DrawString(pb3.Y.ToString(), Font, Brushes.White, new Rectangle(12, rozmiarEkranu.Height - 40, 0, 0), sf);
            sf.Alignment     = StringAlignment.Center;
            sf.LineAlignment = StringAlignment.Near;
            g.DrawString(pb1.X.ToString(), Font, Brushes.White, new Rectangle(40, 12, 0, 0), sf);
            g.DrawString(pb2.X.ToString(), Font, Brushes.White, new Rectangle(rozmiarEkranu.Width / 2, 12, 0, 0), sf);
            g.DrawString(pb3.X.ToString(), Font, Brushes.White, new Rectangle(rozmiarEkranu.Width - 40, 12, 0, 0), sf);
        }