Shape nesnesinden tekrar tekrar üretmek
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 4
- Kayıt: 16 Eki 2010 05:31
Shape nesnesinden tekrar tekrar üretmek
Arkadaşlar kod ile bir shape nesnesi tanımladım. Klavyeden space tuşuna bastığımda bu nesne forma yerleşicek ve timer'a bağlı olarak hareket edicek. Klavyeden tuş alma kısmında problemim yok. Tuşa her bastığımda bu shape'den tekrar tekrar üretilecel, üretilen shape'lerde timer'a bağlı olarak Top'ları azalıcak . Sizce nasıl bir yol izlemeliyim?
En son casanowa123 tarafından 27 Ara 2010 09:00 tarihinde düzenlendi, toplamda 3 kere düzenlendi.
Re: Her tuşa basıldığında bir Shape nesnesi üretmek
Blok oyunu mu yapmaya çalışıyorsun ?
Formuna bir tane Panel koyup bu kodu çalıştırabilirsin Panel1 olacak ismi.
Kod: Tümünü seç
procedure TForm3.ShapeOlustur;
var
shape : TShape;
begin
Randomize;
shape := TShape.Create(Self);
shape.Top := 0;
shape.Brush.Color := Random(10000000);
shape.Left := Random(300);
shape.Shape := stCircle;
shape.Width := 20;
shape.Height := 20;
shape.Parent := Form3;
end;
Formuna bir tane Panel koyup bu kodu çalıştırabilirsin Panel1 olacak ismi.
Kod: Tümünü seç
procedure TForm3.Asagi();
var
i: integer;
Spoz: Integer;
pPoz: Integer;
begin
for i := 0 to ComponentCount - 1 do
begin
if Components[i] is TShape then
begin
Spoz := TShape(Components[i]).Left + TShape(Components[i]).width;
pPoz := Panel1.Left + Panel1.Width;
TShape(Components[i]).Top := TShape(Components[i]).Top + 25;
if (Spoz>Panel1.Left) and (Spoz<Ppoz) and ((TShape(Components[i]).Top + TShape(Components[i]).Height) > Panel1.Top) or
((TShape(Components[i]).Left < ppoz)) and ((TShape(Components[i]).Top + TShape(Components[i]).Height) > Panel1.Top)
then
begin
TShape(Components[i]).Free;
Break;
end;
if (TShape(Components[i]).Top + TShape(Components[i]).Height) > (Panel1.Top + Panel1.Height) then
begin
Panel1.Caption := 'Oyun Bitti Kaybettiniz !!!';
GameOver := true;
end;
end;
end;
end;
-
- Üye
- Mesajlar: 4
- Kayıt: 16 Eki 2010 05:31
Re: Her tuşa basıldığında bir Shape nesnesi üretmek
orhancc ilginiz için teşekkür ederim. Prosedürleri timer olayına bağlayıp kendi projeme göre 1-2 ufak değişiklik yaptım.Kodlar istediğim gibi çalışıyor.
-
- Üye
- Mesajlar: 4
- Kayıt: 16 Eki 2010 05:31
Re: Shape nesnesinden tekrar tekrar üretmek
yukarıdaki kodlar yardımıyla iki adet nesne ürettim. Birisi TImage,diğeri TShape(umermi). image ile shape karşılaşınca ikiside yok olacak.
Shape oluşturma kodum:
karşılaştıklarında yok olan kod ise :
ama karşılaştıklarından sonra program saçmalıyor ve
hatasını veriyor. Yarımcı olurmusunuz?
Shape oluşturma kodum:
Kod: Tümünü seç
umermi := TShape.Create(self);
umermi.Top := ucak.Top-17;
umermi.Left:= ucak.Left+8;
umermi.Height:= 10;
umermi.Width:= 10;
umermi.shape:= stEllipse;
umermi.Tag :=2;
umermi.Parent:= self;
Kod: Tümünü seç
begin
if (TImage(Components[i]).Top >= umermi.Top) and (TImage(Components[i]).left + TImage(Components[i]).Width >= umermi.Left) and (TImage(Components[i]).Left <= umermi.Left + umermi.Width) and (TImage(Components[i]).Top+(TImage(Components[i]).Height) - umermi.Top > 1)
then
begin
TImage(Components[i]).Free;
umermi.Free;
Break;
end;
ama karşılaştıklarından sonra program saçmalıyor ve

hatasını veriyor. Yarımcı olurmusunuz?