Ana Menü
· Ana Sayfa
· Dosyalar
· Dökümanlar
· Forum
· Günün Resmi
· Haber Arşivi
· WWW Linkleri
· Üye Listesi

     Forumlar

 strncpy ve strncpy_s
 Konu adi : Borland c++ Builder ile Amiral Batti
 Rady10 - YerliOyun
 Kabusta Kaybolmak
 Konsol da programı bekletmek
 Oyun programlama icin hangi programlama dilli ?
 flash! şanlıurfa bilgisayar oyununda(no rapid)
 Sevgilim Olur musun?
 Directx'e başlamak isteyenler bi bakın
 PSP programlama
 Flash tan php
 Bilgisyr oyunu yapmam için üniverstde hangi bölüme girmeliym
 www.arshiv.gen.ms
 Cimg.h ilgilenenler icin
 müttefik oyunu

Konu Disi
 Emraah
 Yeni sitemiz açıldı
 Kalp krizi durumunda ne yapılmalı?
 Oyun sektöründe hangi görevde çalışmak isterdiniz?
 Takım arkadaşı sorunu
 msn de renklı nıck
 pc hata veriyor ! YARDIM!!
 Gülmek isteyenler Buraya
 İnanılmaz hl 2 modu görüntüsü
 Computer Languages History

[ Forumlara Git ]


oyunyapimi.org: Forums

www.oyunyapimi.org :: Başlığı Görüntüle - Grafiği döndürünce oluşan sorunum
 SSSSSS   AramaArama   Kullanıcı GruplarıKullanıcı Grupları   ProfilProfil   LoginLogin 

Grafiği döndürünce oluşan sorunum

 
Yeni Başlık Gönder   Cevap Gönder    www.oyunyapimi.org Forum Ana Sayfası -> Grafik, Modelleme ve Tasarım
Önceki başlık :: Sonraki başlık  
Yazar Mesaj
Sonat



Kayıt: Sep 04, 2005
Mesajlar: 10

MesajTarih: Tue Sep 06, 2005 12:12 am    Mesaj konusu: Grafiği döndürünce oluşan sorunum Alıntıyla Cevap Ver

iki boyutlu bir araba yarışı oyunu yapmak istiyorum. bir arabnın 5 er dereceden 360 derecelik pozisyonalrını çizmek sitiyorum. Fakat sorun şu. DElphix ile sadece tek renk trasnparent belirleye biliyorum.ve eğer çizili arabayı biraz döndürünce grafik programı resmin kenarlarını kırıyor ve burada yarı saydam tonlar oluşturuyor işte bu kısımlar programa yerleştirilince tam transparan belirlenen rengin tonunda olmadığı için beyaz bir çizgi gibi kalıyor. Görüntünün aynısını çevirebilen yada buna alternetif bir çözüm yolu var mıdır? Yardımlarınızı belkiyorum. Şimdiden teşekkürler.
Başa dön
Kullanıcı profilini gör
levent



Kayıt: Mar 13, 2003
Mesajlar: 188
Nereden: İstanbul

MesajTarih: Tue Sep 06, 2005 7:58 am    Mesaj konusu: Alıntıyla Cevap Ver

delphix'te bir surface'i döndürerek basman için DrawWave fonksiyonunu kullanmalısın. Grafik programı ile editlemeye gerek yok.

ayrıca birden fazla rengi transparan olarak belirleyebilmek için bir COLOR_KEY tanımlaman gerekir. ancak COLOR_KEY Delphix paketinin içinde var olan bir type değil. Tanımladığın Surface'lere doğrudan erişim gerekiyor.
Başa dön
Kullanıcı profilini gör Kullanıcının web sitesini ziyaret et
Sonat



Kayıt: Sep 04, 2005
Mesajlar: 10

MesajTarih: Tue Sep 06, 2005 12:06 pm    Mesaj konusu: Alıntıyla Cevap Ver

Cevap için teşekkürler ama bundan sonra aklıma takılan bir şey daha var. Ben sprite kullanıyorum. yani kendim surface ler oluşturmadım. bu durumda bu spriteleri nasıl dçönmdüreceğim. bunlar surface oalrak mı tanımlanıyor. konuya tam hakim olmadığım için saçma sorualrda soruyor olabilirim ama açıklarsanız memlun olurum.
Başa dön
Kullanıcı profilini gör
levent



Kayıt: Mar 13, 2003
Mesajlar: 188
Nereden: İstanbul

MesajTarih: Tue Sep 06, 2005 12:48 pm    Mesaj konusu: Alıntıyla Cevap Ver

kullandığım makinede şu an delphix yüklü değil o yüzden bakamıyorum ama şöyle söyleyeyim, DrawWave fonksiyonu Surface yapısına ait olduğu için, eğer TSprite Class'ının Surface property'si varsa (ki eminim olması lazım) fonksiyonu oradan çağırabilirsin.

yani;

Kod:


Sprite[1].Surface.DrawWave(....);



gibi, ancak şu an test edemediğim için doğru mu yanlış mı bilmiyorum.
Başa dön
Kullanıcı profilini gör Kullanıcının web sitesini ziyaret et
Sonat



Kayıt: Sep 04, 2005
Mesajlar: 10

MesajTarih: Tue Sep 06, 2005 1:04 pm    Mesaj konusu: Alıntıyla Cevap Ver

sprite.Engine.Surface.DrawWave() olarak yazabiliyorum. Burada incelerken DrawRotate diye başka bir fonksiyona rastladım. Faka t sorunum bunlara gerekli parametreleri nasıl vereceğim.

Kod:

Sprite.Engine.Surface.DrawWaveX(0,0,100,100,rect(0,0,100,100),???,true,2,2,2);



Bu yukarıdaki ??? oaln kısma Source: TDirectDrawSurface e bağlı olarak tanımlama yapmamı istiyor fakat ben burada benden tam olarak ne istediğini bilmiyorum
buraya spritenin surface sini tanıtıncada çalışmadı. ne yapacağım bilmiyorum?
Başa dön
Kullanıcı profilini gör
levent



Kayıt: Mar 13, 2003
Mesajlar: 188
Nereden: İstanbul

MesajTarih: Tue Sep 06, 2005 1:11 pm    Mesaj konusu: Alıntıyla Cevap Ver

hmm tabi şimdi bende jeton düştü, dediğim gibi önünde ortam olmayınca çok zor oluyor. ancak senin örnek kodunu görünce olayı anladım. bi kere dediğin gibi Wave'i değil Rotate'i kullanman lazım, benim hatam üzgünüm.

Ayrıca Sprite.Engine.Surface biçiminde yaparsan Sprite'a çizmeye çalışıyorsun gibi olur(bu da ikinci hatam).

doğru çözüm ise:

Kod:


DXDraw1.Surface.DrawRotate(0,0,100,100, Sprite[1].Engine.Surface,....);


şeklinde olmalı.
Başa dön
Kullanıcı profilini gör Kullanıcının web sitesini ziyaret et
Sonat



Kayıt: Sep 04, 2005
Mesajlar: 10

MesajTarih: Tue Sep 06, 2005 1:30 pm    Mesaj konusu: Alıntıyla Cevap Ver

Ne kadar denesemde başarılı olamadım bu nedenle programın tüm kodlarını göndermeye karar verdim. Uygulamaya çallıştığım alan timer alanı.

Kod:

type
  TCarSprite = class(TImageSprite)
  protected
    Select:Boolean;
    procedure DoCollision(Sprite: TSprite; var Done: Boolean); override;
    procedure DoMove(MoveCount: Integer); override;
  end;

procedure TCarSprite.DoCollision(Sprite: TSprite; var Done: Boolean);
begin
// buraya istediğiniz komutları yerleştirin
//burası objelerin birbiriyle temasıyla gerçekleştirir
end;

procedure TCarSprite.DoMove(MoveCount: Integer);
begin
  inherited DoMove(MoveCount);
//buraya hareket için gereli komutları yerleştirin
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  with TBackgroundSprite.Create(DXSpriteEngine1.Engine) do
  begin
    SetMapSize(1,1);
    X:=0;
    Y:=0;
    Image := DxImageList1.Items.Find('yol');
    Z := 0;
    Tile:=True;
  end;

  with TCarSprite.Create(DXSpriteEngine1.Engine) do
  begin
    X:=0;
    Y:=0;
    Image := DxImageList1.Items.Find('araba');
    Z := 1;
    Width := Image.Width;
    Height := Image.Height;
  end;
  art:=0;
end;

procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
var a:TCarSprite;
begin
 DxSpriteEngine1.Dead;
 DxSpriteEngine1.Draw;
 form1.Caption:='Hız: '+inttostr(art*10);
 DxSpriteEngine1.Engine.Items[0].Y:=DxSpriteEngine1.Engine.Items[0].Y+art;
 DxSpriteEngine1.Engine.Items[1].X:=DxSpriteEngine1.Engine.Items[1].X+yon;
 a:=TCarSprite(DxSpriteEngine1.Engine.Items[1]);
 dxdraw1.Surface.DrawRotate(0,0,100,100,rect(0,0,100,100),a.Engine.Surface,2,2,true,20);
 Dxinput1.Update;
 DxDraw1.Flip;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
a:TCarSprite;
begin
with Form1.Dxinput1 do
 begin
  if IsUp in states then
  Begin
    if art<20 then art:=art+1;
  End;
  if IsDown in states then
  Begin
    art:=art-3;
    if art<0 then art:=0;
  End;
  if IsLeft in states then
  Begin
   a:=TCarSprite(Form1.DXSpriteEngine1.Engine.Items[1]);
   a.Image:=DxImageList1.Items.Find('arabasol');
    yon:=-1;
  End;
  if IsRight in states then
  Begin
   a:=TCarSprite(Form1.DXSpriteEngine1.Engine.Items[1]);
   a.Image:=DxImageList1.Items.Find('arabasag');
    yon:=+1;
  End;
 end;
end;

end.
Başa dön
Kullanıcı profilini gör
levent



Kayıt: Mar 13, 2003
Mesajlar: 188
Nereden: İstanbul

MesajTarih: Tue Sep 06, 2005 2:20 pm    Mesaj konusu: Alıntıyla Cevap Ver

Kod:

procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
var a:TCarSprite;
begin
 DxSpriteEngine1.Dead;
 DxSpriteEngine1.Draw; //<< Burası!!!
.
.
.



DxSpriteEngine1.Draw; dediğin an zaten spritelar çiziliyor, 1. ihtimal bu yüzden rotate edilemiyor olabilir. ikinci ihtimal


Kod:

a:=TCarSprite(DxSpriteEngine1.Engine.Items[1]);


burada implicit assign var. bunun yerine şöyle yapman daha doğru olabilir:

Kod:

dxdraw1.Surface.DrawRotate(0,0,100,100,rect(0,0,100,100),DxSpriteEngine1.Engine.Items[1].Surface,2,2,true,20);


sitedeki dökümanlar arasında benim 2 tane delphix dökümanım var özellikle 2.sini incelersen faydalı olabilir.
Başa dön
Kullanıcı profilini gör Kullanıcının web sitesini ziyaret et
Sonat



Kayıt: Sep 04, 2005
Mesajlar: 10

MesajTarih: Tue Sep 06, 2005 2:43 pm    Mesaj konusu: Alıntıyla Cevap Ver

Son olarak kodu aşağıdaki hale ggetirdim yine işe yaramadı. Dediğin gibi dökümanlardan dediğin dosyayı indireceğim. Ayrıca yardımların için saol. Başka bir çözüm varsa aklında forumu takip ediyor olacağım teşekkürler.

Kod:

procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
var a:TCarSprite;
begin

 form1.Caption:='Hız: '+inttostr(art*10);
 DxSpriteEngine1.Engine.Items[0].Y:=DxSpriteEngine1.Engine.Items[0].Y+art;
 DxSpriteEngine1.Engine.Items[1].X:=DxSpriteEngine1.Engine.Items[1].X+yon;
 a:=TCarSprite(DxSpriteEngine1.Engine.Items[1]);
 dxdraw1.Surface.DrawRotate(0,0,100,100,rect(0,0,100,100),a.Engine.Surface,20,20,true,20);
 DxSpriteEngine1.Dead;
 DxSpriteEngine1.Draw;
 Dxinput1.Update;
 DxDraw1.Flip;
end;
Başa dön
Kullanıcı profilini gör
levent



Kayıt: Mar 13, 2003
Mesajlar: 188
Nereden: İstanbul

MesajTarih: Tue Sep 06, 2005 3:44 pm    Mesaj konusu: Alıntıyla Cevap Ver

kodun son halinden;

Kod:

 DxSpriteEngine1.Dead;
 DxSpriteEngine1.Draw;


kısımlarını çıkartmayı dene.

bir de şu biçimde deneyebilirsin:

Kod:

dxdraw1.Surface.DrawRotate(0,0,100,100,rect(0,0,100,100),[b]DxSpriteEngine1.Engine.Items[1].Surface[/b],2,2,true,20);
Başa dön
Kullanıcı profilini gör Kullanıcının web sitesini ziyaret et
Sonat



Kayıt: Sep 04, 2005
Mesajlar: 10

MesajTarih: Tue Sep 13, 2005 9:38 pm    Mesaj konusu: Alıntıyla Cevap Ver

Kod:

DXImageList1.Items[0].DrawRotate(DXDraw1.Surface,10,10,100,100,0,0.5,0.5,Rychlost);


ile ekrana döndürerek çizdire biliyorum. fakat bunu dxspriteengine ile ansıl yapabilirim bilmiyorum. aslında dxspriteengine kullanmamın tek nedeni hepsini aynı anda kontrol eebiliyor olmama falan. yoksa bunu başka çareleri var mıdır ve varsa nelerdir? paylaşırsanız sevinrim.

Eğer yukarıdaki kod gibi döndüremme gerekn bir sürü araba olduğunu düşünürsek bu durumda her araba için bu kodu kullanmam gerekiyor ve çok ararışık belkide içinden çıkılmaz bir yöndetem olur. detaylı bir bilgi verirseniz sevinirim.
Teşekkrüler.[/list]
Başa dön
Kullanıcı profilini gör
Mesajları göster:   
Yeni Başlık Gönder   Cevap Gönder    www.oyunyapimi.org Forum Ana Sayfası -> Grafik, Modelleme ve Tasarım Tüm saatler GMT +2 Saat
1. sayfa (Toplam 1 sayfa)

 
Forum Seçin:  
Bu forumda yeni konular açamazsınız
Bu forumdaki mesajlara cevap veremezsiniz
Bu forumdaki mesajlarınızı değiştiremezsiniz
Bu forumdaki mesajlarınızı silemezsiniz
Bu forumdaki anketlerde oy kullanamazsınız


Powered by phpBB 2.x.x © 200x phpBB Group
Türkçe Çeviri : Onur Turgay & Erdem Çorapçıoğlu
Türkçe Düzenleme: Alexis Canver
Version 2.x.x of PHP-Nuke Port by Tom Nitzschner © 200x www.toms-home.com




Web site powered by PHP-Nuke
Web site engine\'s code is Copyright © 2002 by PHP-Nuke. All Rights Reserved. PHP-Nuke is Free Software released under the GNU/GPL license.
Sayfa Üretimi: 0.297 Saniye