Odnośnie programu Licznik, do pracy z czasem i datą służy klasa TDateTime, ale co tam niech będzie;)
Jeśli chodzi o Arkanoid to:
if (kolizja(b,Image1) && Image1->Visible==true)
nie ma potrzeby sprawdzać czy jest kolizja jeśli Image jest niewidoczny, zbędny jest też zapis '==true'.
if (Image1->Visible && kolizja(b,Image1))
a skoro jednym z warunków kolizji jest widoczność objektu(Image), to sprawdzenie tego mogłoby być w funkcji kolizja.
bool kolizja(TImage *pilka, TImage *cegla)
{
if( cegla->Visible
&& pilka->Left >= cegla->Left-pilka->Width
&& pilka->Left <= cegla->Left+cegla->Width
&& pilka->Top >= cegla->Top-pilka->Height
&& pilka->Top <= cegla->Top+cegla->Height)
{
return true;
}
return false;
}
wtedy if-y skracają się do formy
if (kolizja(b,Image1))
Gdyby wszystkie cegły były w jakiejś tablicy, tak jak powinny być, to cały zestaw if-ów zastąpiłaby prosta pętla.
for(int i = 0; i < ilosc_cegiel; ++i)
{
if(kolizja(b,cegly[i]))
{
x=-x;
y=-y;
do_wygranej--;
cegly[i]->Visible=false;
}
}