barti82 Napisano Luty 2, 2006 Zgłoś Share Napisano Luty 2, 2006 Mam do napisania pewna aplikacje w Borlandzie i stanalem na malym problemie. Otoz wybierajac z palety additional ikone Shape (konkretnie circle) umieszczajac ja w oknie aplikacji w petli zmieniam jej polozenie (wlasciwosci Top i Left) Jednakze w trakcie wykonywania aplikacji widoczny jest jedynie stan poczatkowy i koncowy a nie widac etapow posrednich - czyli jak wyglada przebieg Shape'a krok po kroku, dodam ze funkcja Sleep() nie zmienia niczego Bardzo prosze o pomoc, kazdy pomysl mile widziany, z gory dziekuje! Link do komentarza Udostępnij na innych stronach More sharing options...
Iskar Napisano Luty 2, 2006 Zgłoś Share Napisano Luty 2, 2006 Zawsze o ile to możliwe zamieszczaj kod źródłowy - będzie nam łatwiej pomóc. Co do problemu - użyj komponentu TTimer, ustaw Interaval na np. 1000, a w OnTimer daj Shape->Left = Shape->Left + 10 ; Link do komentarza Udostępnij na innych stronach More sharing options...
bojkar Napisano Luty 2, 2006 Zgłoś Share Napisano Luty 2, 2006 PEwnie nie masz main loopa czyli wykonujesz to tylko raz. Do tego bez podwojnego bufforingu to bedzie CI migac przy animacji. Zrob main loopa + podwojne buforowanie i bedzie SI. Link do komentarza Udostępnij na innych stronach More sharing options...
barti82 Napisano Luty 3, 2006 Autor Zgłoś Share Napisano Luty 3, 2006 No widze, ze musze zamiescic fragment interesujacego mnie kodu bo nie umiem skorzystac z Waszych podpowiedzi, moze teraz cos konkretnego mi doradzicie:Pascalvoid __fastcall TForm1::Button1Click(TObject *Sender){int z;float p;Shape->Top = 0;randomize();while (Shape->Top != 500){ z = rand() % 1000; p = z/1000.0; if (p<0.100) { Shape->Left = Shape->Left +1; } if ((p>=0.100) && (p<0.200)) { Shape->Left = Shape->Left -1; } if (p>=0.200) { Shape->Top = Shape->Top +1; }}}Po kliknieciu przyciskiem ma wystartowac generator liczb pseudolosowych, ktorego wartosc podzielona przez 1000 daje mi wartosc prawdopodobienstwa i w zaleznosci od wartosci tego prawdopodobeinstwa kulka ma sie poruszac w jedna ze stron tlyko ze wlasnie robi to od razu do stanu konczacego petle a ja chce by przesuwala sie po kawalku i nei wiem jak to osiagnac Z gory dziekuje za pomoc// uztwaj znaczników [syntax="c++"] - drazek Link do komentarza Udostępnij na innych stronach More sharing options...
Iskar Napisano Luty 3, 2006 Zgłoś Share Napisano Luty 3, 2006 randomize() ; zawsze dajesz tylko raz w programie, więc wrzuć to do OnCreate formy. Jedno z możliwych rozwiązań:Pascal//---------------------------------------------------------------------------void __fastcall TForm1::Button1Click(TObject *Sender){ int los ; while (Shape1->Top != 500) { los = rand() % 10 ; if (!los) Shape1->Left = Shape1->Left + 1 ; else if (los == 1) Shape1->Left = Shape1->Left - 1 ; else Shape1->Top = Shape1->Top + 1 ; Application->ProcessMessages() ; Sleep(100) ; }}//--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender){ randomize() ; Form1->DoubleBuffered = true ; }//--------------------------------------------------------------------------- // spoko ;-) Link do komentarza Udostępnij na innych stronach More sharing options...
barti82 Napisano Luty 4, 2006 Autor Zgłoś Share Napisano Luty 4, 2006 Bardzo Ci dziekuje Iskar! Nie mialem pojecia o takiej funkcji jak Process Messages(), bo dopiero poczatkujacy jestem, ale Twoja wskazowka posnela moja prace do przodu i jeszcze raz wielkie Dzieki! Pozdrawiam Link do komentarza Udostępnij na innych stronach More sharing options...
Polecane posty
Zarchiwizowany
Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.