Problem z tablicą obiektów.

0

Witam. Mam klasę dziedziczącą po Panel. Zadaniem obiektu jest "bieganie" po planszy. W tej klasie jest metoda odpowiedzialna za ruch, celem jest losowo wybrany punkt. Problem jest następujący:

  • kiedy tworzę tablicę obiektów, żaden z nich "nie żyje własnym życiem", tzn. wszystkie mają ten sam cel, idą w te same miejsce
  • gdy, dla buttona przypisuje utworzenie jednego obiektu, to za kolejnym kliknięciem tworzy się następny i faktycznie idzie w inne wylosowane miejsce.

Chodzi o to, że dla Form_Load chciałbym mieć kilka takich obiektów i żeby każdy z nich chodził w inne miejsce. Poniżej fragment kodu. z góry dzięki za pomoc.

Bieganie[] ruchomy_element = new Bieganie [3];
            for (int i = 0; i < 3; i++)
            {
                ruchomy_element[i] = new Bieganie();
                ruchomy_element[i].Left = r.Next(100);
                ruchomy_element[i].Top = r.Next(100);
                ruchomy_element[i].Parent = generic.panel1;
        
            }
0

pokaz jak tworzysz obiekt klasy Random

zeby wykonywac ruch obiektu musisz miec dwa punkty z i do
Bieganie.Left i Top to zapewne wspolzedne celu, a jak ustalasz poczatkowe polozenie obiektu?

wg mnie fragment kodu jaki podales losuje Left i Top dla kazdego z elementow tablicy, wiec ich cele powinny byc inne, chyba ze w petli za kazdym razem tworzysz Random z takim samys seed

za malo kodu

0

Dzięki za pomoc. Problem już rozwiązałem. Chodziło o to, że pętla wykonuje się szybciej niż Random, który pobiera liczby - co za tym idzie wstawiłem : System.Threading.Thread.Sleep(100) i pomogło :) Pozdrawiam.

0
malimeo napisał(a)

Chodziło o to, że pętla wykonuje się szybciej niż Random, który pobiera liczby - co za tym idzie wstawiłem : System.Threading.Thread.Sleep(100) i pomogło

eeee, WTF???

generator liczb pseudolosowych w uproszczeniu po zainicjowaniu seed'em (po pl czesto nazywane ziarno) rozpoczyna generowac pewien cykl liczb - to juz nie ma znaczenia jak szybko wykonuje sie program

wiec podejrzewam ze zle poslugujesz sie obiektem klasy Random
powienienes stworzyc sobie jedna instancje tego obiektu np. w klasie formularza lub klasie Biegnij
jesli przy kazdym tworzonym nowo obiekcie ktory ma biegac tworzysz nowy obj. klasy Random (bez unikalnego seed) to faktycznie mozesz zaobserwowac taka sytuacje
lepiej zamiast uzywac Sleep napisz poprawniej program

1 użytkowników online, w tym zalogowanych: 0, gości: 1