Witam.
Gdy próbuje modyfikować zmienna globalna w jakiejś funkcji i potem ta funkcje wywołać w innej funkcji obsługującej jakieś zdarzenie to za każdym razem funkcja liczy od zera, zamiast zapamiętywać poprzedni stan. Dlaczego się tak dzieje?
int _wsp1, _wsp2,rzuty; // zmienne globalne
// .... Jakis tam wczesniejszy kod nie operujacy na zmeinnych globalnych
private void rzut_Click(object sender, EventArgs e)
{
Random rnd = new Random();
rzuty = rnd.Next(1, 7);
switch (rzuty)
{
case 1:
Kosc.Image = Image.FromFile("gfx/1.png");
break;
case 2:
Kosc.Image = Image.FromFile("gfx/2.png");
break;
case 3:
Kosc.Image = Image.FromFile("gfx/3.png");
break;
case 4:
Kosc.Image = Image.FromFile("gfx/4.png");
break;
case 5:
Kosc.Image = Image.FromFile("gfx/5.png");
break;
case 6:
Kosc.Image = Image.FromFile("gfx/6.png");
break;
}
Kosc.Show();
b_rzut.Enabled = false;
timer.Enabled = true;
}
private void timer1_Tick(object sender, EventArgs e)
{
if (gracz1.IsYourTurn == true) ruch(_wsp1, p_gracz_1);
else ruch(_wsp2, p_gracz_2);
}
public void ruch(int _wsp,PictureBox gracz) // ta funkcja zawsze liczy od zera zamiast zapamiętywać wartość
{
_wsp = _wsp + rzuty;
if (_wsp >= GPS.Count)
{
int _dziesiatki = _wsp / 10;
_wsp -= _dziesiatki * 10;
}
gracz.Location = new Point(GPS[_wsp].X, GPS[_wsp].Y);
_wsp = 5;
Kosc.Hide();
timer.Enabled = false;
b_rzut.Enabled = true;
}