Było blisko…

1 kryzys za  nami oby ostatni 😀

ładna pogoda szkoła i wciągniecie się w grę sprawiły ze czasu na projekt było mało do tego doszły problemy z kodem, ale mam teraz miesiąc praktyk przez co ilość czasu się zwiększy

co do projektu zacząłem od menu i udało mi się  przysiąc skupić i  ukończyć je

bandicam 2017-03-13 21-59-13-439

może wynik nie jest powalający ale jest to dopiero koncepcja i po uzyskaniu takiego efektu pokazał się banan a to jest najważniejsze 😀

teraz trochę kodu :

warstwa fizyczna( struktura obiektu) dzieli sie na 2 czesci

  1. pasek menu

class menu
{
   public:
 RectangleShape ramka;
   vector < tytul_menu > elementy;
};

2.elementy menu

class tytul_menu
{
public:

bool wysuniete, ptaszek;
Text tytul;

//element menu może posiadać kolejne elementy
vector < tytul_menu > elementy;

//
FloatRect kolizja;
RectangleShape ramka;
RectangleShape tlo;
RectangleShape zaznaczenie;
};

co do konstruktorów to nic specjalnego ot zwykle instrukcje konfigurujace elementy dla zainteresowanych :

kod konstruktorów

oraz warstwa logiczna(odpowiedzialna za kolizje )

tu był wielki problem i nadal jest ponieważ wygląd kodu nie zadowala i brak wsparcia dla bardziej zaawansowanego menu z więcej niż 1 podmenu jednak na dzień dzisiejszy mamy to

for (size_t i = 0; i < elementy->glowne_menu->elementy.size(); i++)
{

if (elementy->glowne_menu->elementy[i].kolizja.contains(mysz2))
{

elementy->glowne_menu->elementy[i].wysuniete = true;
elementy->glowne_menu->elementy[i].tlo.setFillColor(Color::Red);
kolizja_menu = true;
}else
{

elementy->glowne_menu->elementy[i].tlo.setFillColor(Color::Blue);

}

        if (jeżeli elementy są wysunięte i mysz nie jest na pasku menu)
{

             for (size_t j; j = 0; j < elementy->glowne_menu->elementy[i].elementy.size(); j++)
{
if (elementy->glowne_menu->elementy[i].elementy[j].kolizja.contains(mysz2))
{

elementy->glowne_menu->elementy[i].elementy[j].wysuniete = true;
elementy->glowne_menu->elementy[i].elementy[j].tlo.setFillColor(Color::Red);
kolizja_menu = true;

j = elementy->glowne_menu->elementy[i].elementy.size();
}else
{
elementy->glowne_menu->elementy[i].elementy[j].wysuniete = false;                                     elementy->glowne_menu->elementy[i].elementy[j].tlo.setFillColor(Color::Blue);
kolizja_menu = false;
}

}

}
if (!kolizja_menu && !elementy->glowne_menu->elementy[i].kolizja.contains(mysz2))
{
elementy->glowne_menu->elementy[i].wysuniete = false;
}

bardziej czytelna wersja