Witam ma taką funkcję w klasie Gra:
public void rysuj_statki()
{
for (int i = 0; i < mapa.GetLength(0); i++)
{
for (int j = 0; j < mapa.GetLength(1); j++)
{
if (sprawdz_statek(i, j))
{
mapa[i, j].BackgroundImage = Properties.Resources.ship;
}
}
}
}
Zadaniem tej funkcji jest narysowanie obiektów na głównej formie.
Problem w tym że chcę to metodę wywołać z poziomu innej klasy.
Jak wywołuję metodę, np. w konstruktorze głównej formy :
Gra gamestate = new Gra();
public Form1()
{
InitializeComponent();
gamestate.rysuj_statki();
}
Wszystko ładnie działa. Ale jak napisałem chcę ją wywołać z innej klasy dla zdarzenia Click :
Gra gamestate = new Gra();
public int x; // zmienna przechowująca indeks i
public int y; // zmienna przechowująca indeks j
public Plansza()
{
this.Width = 25;
this.Height = 25;
this.BorderStyle = BorderStyle.FixedSingle;
this.BackgroundImage = Properties.Resources.kratka;
this.BackgroundImageLayout = ImageLayout.Stretch;
MouseClick+=new MouseEventHandler(Plansza_MouseClick);
}
public virtual void Plansza_MouseClick(object sender, MouseEventArgs e)
{
gamestate.rysuj_statki();
}
Wtedy kompiluje się, ale gdy kliknę na obiekt klasy, program wykrzacza się bo w funkcji rysuj_statki() nie ma ustawionej instancji obiektu. Więc dopisuję:
mapa[i,j] = new Plansza()
Program kompiluje się, ale nic się nie dzieje. Obiekty nie są rysowane. A zatem co jest nie tak ? Trzeba napisać jakieś odwołanie ? referencję ? Jeżeli tak to jaką ? z góry dziękuję za pomoc