Witam!
Piszę grę, leci się takim małym statkiem i strzela do przeszkód, jest to taki projekt na zajecia z C++ i mam taki problem a mianowicie nie wiem jak zrobić żeby te kamienie (przeszkody do których mam strzelać) pojawiały się co jakis czas a nie na potęgę jak na tym skrinie:
Punkty 1 i 2 to obiekty które się pojawiaja tak jak na skrinie (pojawiają się one z każdym taktem zegara), trzeba wstawić je w jakiś licznik lub pętlę aby pojawiały się dajmy na to co 500ms (albo jeden częściej od drugiego). Reszta kodu to kolicje działające na zasadzie każdy obiekt z każdym. Po wykryciu jakiej kolwiek kolizji oba obiekty są kasowane punkt 3 w kodzie.
Ja zrboiłam taką pętlę:
Ale to mi się nie podaoba to (jest to zrobione po najmniejszej lini oporu) i najchętniej chciałabym wykorzystać GetTickCount(); lub jakiś podobny licznik czasu.
Regulamin, punkt 10.11 - obrazki można wysłać na serwer elektrody.
Poprawiłem screenshot.
Poprawiłem temat.
[Dr.Vee]
Piszę grę, leci się takim małym statkiem i strzela do przeszkód, jest to taki projekt na zajecia z C++ i mam taki problem a mianowicie nie wiem jak zrobić żeby te kamienie (przeszkody do których mam strzelać) pojawiały się co jakis czas a nie na potęgę jak na tym skrinie:
//---------kolizje-----------------------------------------------------------
void __fastcall TFormMain::TimerTimer(TObject *Sender)
{
Rock = new TRockObject(PanelGame); // 1
Rock2 = new TRock2Object(PanelGame); // 2
for (int i = 0; i < MovingObjectList->Count; ++i)
((TMovingObject*)MovingObjectList->Items[i])->Execute();
for (int i = 0; i < MovingObjectList->Count; ++i) {
TMovingObject* Object1 = (TMovingObject*)MovingObjectList->Items[i];
//if (Object1 == Ship) continue;
for (int j = i + 1; j < MovingObjectList->Count; ++j) {
TMovingObject* Object2 = (TMovingObject*)MovingObjectList->Items[j];
if ((Object2->X + Object2->Width > Object1->X) &&
(Object2->X - Object2->Width < Object1->X + Object1->Width) &&
(Object2->Y + Object2->Height > Object1->Y) &&
(Object2->Y - Object2->Height < Object1->Y + Object1->Height)) {
delete Object1; //3
delete Object2; //3
break;
}
}
}
}
Punkty 1 i 2 to obiekty które się pojawiaja tak jak na skrinie (pojawiają się one z każdym taktem zegara), trzeba wstawić je w jakiś licznik lub pętlę aby pojawiały się dajmy na to co 500ms (albo jeden częściej od drugiego). Reszta kodu to kolicje działające na zasadzie każdy obiekt z każdym. Po wykryciu jakiej kolwiek kolizji oba obiekty są kasowane punkt 3 w kodzie.
Ja zrboiłam taką pętlę:
czas++;
if(czas==150)
{
Rock = new TRockObject(PanelGame);
// Rock2 = new TRock2Object(PanelGame);
czas=0;
}
czas2++;
if(czas2==200)
{
// Rock = new TRockObject(PanelGame);
Rock2 = new TRock2Object(PanelGame);
czas2=0;
}
Ale to mi się nie podaoba to (jest to zrobione po najmniejszej lini oporu) i najchętniej chciałabym wykorzystać GetTickCount(); lub jakiś podobny licznik czasu.
Regulamin, punkt 10.11 - obrazki można wysłać na serwer elektrody.
Poprawiłem screenshot.
Poprawiłem temat.
[Dr.Vee]