Jak zrobić poruszający się Shape?


(Mr Hektor) #1

Jak zrobić aby Shape sam się ruszał po formie w tę strone w którą się naciśnie strzałkę? Wiem jak zrobić aby szedł cały czas w lewo:

procedure TForm7.Timer1Timer(Sender: TObject);

begin

Shape1.left :=(Shape1.Left+5) mod Width;

end;

ale on po np. naciśnięciu strzałki w prawo powinien skończyć z poruszaniem się w lewo i iść w prawo. Pomóżcie w tej kwesti :slight_smile:


(inż. Piniol) #2
var kierunek: integer;


procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;


  Shift: TShiftState);


begin


    if (Key=VK_LEFT) then kierunek := 1;

    if (Key=VK_RIGHT) then kierunek := 2;

    if (Key=VK_UP) then kierunek := 3;

    if (Key=VK_DOWN) then kierunek := 4;

end;


procedure TForm7.Timer1Timer(Sender: TObject);

begin //tutaj może trzeba będzie coś zmienić, robiłęm na czuja ;)

   if (kierunek = 1)

      Shape1.left :=(Shape1.Left+5) mod Width;

   if (kierunek = 2)

      Shape1.left :=(Shape1.Left-5) mod Width;

   if (kierunek = 3)

      Shape1.left :=(Shape1.Top+5) mod Width;

   if (kierunek = 4)

      Shape1.left :=(Shape1.Top-5) mod Width;

end;

W zdarzeniu OnCreate dodaj:

kierunek := (Random(4))+1;

(Mr Hektor) #3

No jest już lepiej jak było na początku :smiley: , bo Shape rusza się tak jak powinien w lewo i w prawo, tylko muszę jeszcze pomyśleć na góra i dół, bo wtedy Shape stoi w miejscu. THX


(inż. Piniol) #4
if (kierunek = 3)

      Shape1.Top :=(Shape1.Top+5) mod Width;

   if (kierunek = 4)

      Shape1.Top :=(Shape1.Top-5) mod Width;

I będzie góra/dół, przeoczyłem to :wink:


(Mr Hektor) #5

Ok, thx :slight_smile: