Witam na początku chcę zaznaczyć, że jestem totalnie początkujący jesli chodzi o graficzny interfejs i mam takie oto pytanie : Chcę, zasymulować ruch obiektu (statek) ,który porusza się po trasie ,która składa się z odcinków (dwóch punktów i parametrów lotu) Moj kod:
namespace KontrolaLotow
{
class Punkt
{
public int X { get; private set; }
public int Y { get; private set; }
public void Przesun(int dx, int dy)
{
this.X += dx;
this.Y += dy;
}
public Punkt() { }
public Punkt(int x, int y)
{
this.X = x;
this.Y = y;
}
public Punkt(Punkt punkt)
{
this.X = punkt.X;
this.Y = punkt.Y;
}
}
}
class ParametrLotu
{
public double Wysokosc { get; set; }
public String Kierunek { get; set; }
public double Predkosc { get; set; }
public ParametrLotu() { }
public ParametrLotu(double wysokosc, String kierunek, double predkosc)
{
this.Wysokosc = wysokosc;
this.Kierunek = kierunek;
this.Predkosc = predkosc;
}
public ParametrLotu(ParametrLotu lot)
{
this.Wysokosc = lot.Wysokosc;
this.Kierunek = lot.Kierunek;
this.Predkosc = lot.Predkosc;
}
}
class Odcinek
{
public ParametrLotu Lot { get; private set; }
public Punkt A { get; private set; }
public Punkt B { get; private set; }
public void Przesun(int dx, int dy)
{
A.Przesun(dx, dy);
B.Przesun(dx, dy);
}
public Odcinek() { }
public Odcinek(ParametrLotu lot, Punkt a, Punkt b)
{
this.Lot = lot;
this.A = new Punkt(a);
this.B = new Punkt(b);
}
public Odcinek(Odcinek odcinek)
{
this.Lot = new ParametrLotu(odcinek.Lot);
this.A = new Punkt(odcinek.A);
this.B = new Punkt(odcinek.B);
}
}
class Trasa
{
public List<Odcinek> Sklad { get; private set; }
public Punkt Start { get; set; }
public Punkt Meta { get; set; }
public void DodajOdcinek(Odcinek odcinek)
{
this.Sklad.Add(odcinek);//Dodajemy odcinka
}
public void UsunOdcinek(Odcinek odcinek)
{
foreach (Odcinek o in Sklad)
if (o == odcinek)
this.Sklad.Remove(o);//Usuwa po ID
}
public void ZmienOdcinek(Odcinek odcinek, Punkt b)
{
}
public void PodzielOdcinek(Odcinek odcinek, Punkt a, ParametrLotu lot)
{
}
public List<Line> PrzygotujTrase()
{
List<Line> Zbior = new List<Line>();
foreach (Odcinek o in Sklad)
{
Line linia = new Line();
linia.X1 = o.A.X;
linia.Y1 = o.A.Y;
linia.X2 = o.B.X;
linia.Y2 = o.B.Y;
Zbior.Add(linia);
}
return Zbior;
}
public Trasa() { this.Sklad = new List<Odcinek>(); }
public Trasa(Punkt start, Punkt meta)
{
this.Sklad = new List<Odcinek>();
this.Start = start;
this.Meta = meta;
}
public Trasa(List<Odcinek> sklad, Punkt start, Punkt meta)
{
this.Sklad = new List<Odcinek>(sklad);
this.Sklad = sklad;
this.Start = start;
this.Meta = meta;
}
public Trasa(Trasa trasa)
{
this.Sklad = new List<Odcinek>();
this.Sklad = trasa.Sklad;
this.Start = trasa.Start;
this.Meta = trasa.Meta;
}
}
class Obiekt
{
public String Nazwa { get; private set; }
public void WczytajZnacznik()
{
//if( is Samolot)
}
public virtual String WypiszParametry(Punkt p, float wysokosc) // Dla StopObiekt
{
return "Współrzędne:\nX: " + p.X + " Y:" + p.Y + "\nWysokość:" + wysokosc;
}
public Obiekt() { }
public Obiekt(String nazwa)
{
this.Nazwa = nazwa;
}
public Obiekt(Obiekt obiekt)
{
this.Nazwa = obiekt.Nazwa;
}
}
class Statek : Obiekt
{
public Trasa Droga { get; private set; }
public Statek() { }
public Statek(Trasa droga)
{
this.Droga = droga;
}
}
public partial class MainWindow : Window
{
public MainWindow()
{
// Przykladowa trasa jakiegos Statku
Trasa t = new Trasa();
t.Start = new Punkt(210, 210); t.Meta = new Punkt(116, 116);
Odcinek odc1 = new Odcinek(new ParametrLotu(1000, "Północ", 50), t.Start, new Punkt(150, 150));
Odcinek odc2 = new Odcinek(new ParametrLotu(1000, "Południe", 50), new Punkt(Convert.ToInt32(odc1.Linia.X2), Convert.ToInt32(odc1.Linia.Y2)), new Punkt(130, 130));
Odcinek odc3 = new Odcinek(new ParametrLotu(1000, "Północ", 50), new Punkt(Convert.ToInt32(odc2.Linia.X2), Convert.ToInt32(odc2.Linia.Y2)), t.Meta);
t.DodajOdcinek(odc1);
t.DodajOdcinek(odc2);
t.DodajOdcinek(odc3);
Statek s1 = new Statek(t);
}
}