C++ random location

0

Cześć wszystkim!

Napisałem krótki kod, który sprawia, że przycisk zmienia swoją lokalizację po kliknięciu w niego. W jaki sposób mogę sprawić, aby unikał on " nachodzenia " na pozostałe komponenty jak textBox, obrazki etc? Tak aby pojawiał się tylko w "wolnej przestrzeni".

Szukałem na stacku i innych stronach tego problemu, niestety rozwiązania dla mojego przypadku nie znalazłem.

Może i dla niektórych problem wyda się łopatologiczny, ale takie zadania dostajemy od wykładowców na uczelni, którzy niechętnie nam je tłumaczą ;p


private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) 
{
    button1->Location = Point(rand() % 300, rand() % 300);
 
}


1

Ale co tu tłumaczyć. Musisz zrobić pętlę po wszystkich obiektach z formularza/okna zobaczyć gdzie mają narożniki wyznaczyć prostokąty i losując nowe miejsce losować tyle razy aż nie będzie nachodzić na żaden z obiektów/prostokątów z listy. Prawdopodobnie w listy prostokątów trzeba będzie wykluczyć obiekty typu panel, groupBox itp ... Wszystko zależy jakie były założenia dotyczące okienka lub jakie inne elementy/obiekty są w okienku.

0
katakrowa napisał(a):

Ale co tu tłumaczyć. Musisz zrobić pętlę po wszystkich obiektach z formularza zobaczyć gdzie mają narożniki wyznaczyć prostokąty i losując nowe miejsce losować tyle razy aż nie będzie nachodzić na żaden z obiektów/prostokątów z listy.

Tak też myślałem, natomiast liczyłem, że jest na to jakiś prostszy sposób, aby generowany przycisk automatycznie omijał te "zajęte" pola
Nie studiuję nic związanego z informatyką, dodatkowych materiałów też nie otrzymujemy, więc staram się posiłkować internetem.

0

Może jakiś sposób jest ale nie napisałeś nic o tym w jakim środowisku to robisz więc założyłem, że to aplikacja WindowsForm w C++ Builder lub VisualStudio.

0
katakrowa napisał(a):

Może jakiś sposób jest ale nie napisałeś nic o tym w jakim środowisku to robisz więc założyłem, że to aplikacja WindowsForm w C++ Builder lub VisualStudio.

Zgadza się - Visual Studio C++ WindowsForm

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