Jump to page: 1 2
Thread overview
SDL Mini Modülü
Sep 06, 2012
Salih Dinçer
Sep 07, 2012
Salih Dinçer
Oct 15, 2012
Salih Dinçer
Oct 16, 2012
mert
Oct 16, 2012
mert
Oct 16, 2012
mert
Oct 16, 2012
Salih Dinçer
Oct 16, 2012
mert
Oct 16, 2012
mert
Oct 17, 2012
Salih Dinçer
Oct 17, 2012
mert
Oct 17, 2012
mert
Oct 16, 2012
erdem
May 06, 2013
Salih Dinçer
September 07, 2012

Merhaba,

Söz verdiğim gibi, denemelerimi yaptığım sdlmini.d modülü (https://raw.github.com/salihdb/SDLbindings/master/sdlmini.d)nü az önce yükledim. Kullanmak için dosya ismini sağ tıklayıp farklı kaydetmeniz yeterli. İçinde, ekrana rasgele çokgen basıp temizleyen ve ilk ESC'de ekranı durduran, ikincisinde yazılımdan çıkan bir debug kodu mevcut. Ama kendi projelerinizde denemek için şu bir kaç satır yeterli görünüyor:

import sdlmini;

void main() {
   /* with() ile kuruyoruz ki sınıfın tüm olanaklarından sanki içindeymiş gibi faydalanalım,
    * ancak renk yapısını sınıf içine almadım ve eğer black seçerseniz SDL'nin varsayılanı
    * olduğundan değişim olmaz. Ama kurucunun ve tüm işlevlerin varsayılan rengi beyaz!
    * Aşağıda bunu göstermek için gereksiz yere kullandım...:)
    */
   with( new scene(600, 400, "Japon Bayrağı", clr.white) ) {
     do {
          circle( w/2, h/2, cast(int)(h/(5/3.0))/2, clr.red );
          /* keyEvent() işlevi eğer:
           * 0 olursa, sahne ESC beklemek üzere durur (döngüyü dondurur/by-pass)
           * 1 olursa, arada ESC basıldımı diye bakar ve basıldıysa çıkar
           * 2 olursa, arada ESC basılmasına iki defa bakar: ilkinde durur, ikincisinde çıkar (0 durumu)
           */
     } while( escEvent(1) );
   }
   SDL_Quit();
}

Henüz 'keyEvent()' işlevini fazla geliştirmedim. Zaten sdlmini.d içinde tanımlı pek fazla tuş yok. İleriki sürümlerde ihtiyaç duyulabilecek olası işlevler ile birlikte geliştirebiliriz.

Şimdilik içeriğinde, sırasıyla şu işlevler var:

  • std.math sınıfındakiler public;
  • std.random sınıfındakiler public;
  • int SDL_UpperBlit (SDL_Surface *src, SDL_Rect *srcrect, SDL_Surface *dst, SDL_Rect *dstrect);
  • int SDL_SetColorKey (SDL_Surface *surface, uint flag, uint key);
  • int SDL_SetAlpha (SDL_Surface* surface, uint flags, ubyte alpha);
  • int SDL_FillRect (SDL_Surface *dst, SDL_Rect *dstrect, uint color);
  • int SDL_Flip (SDL_Surface *screen);
  • int SDL_Init (uint flags);
  • int SDL_PollEvent (SDL_Event *event);
  • SDL_Surface *SDL_SetVideoMode (int width, int height, int bpp, uint flags);
  • SDL_Surface *SDL_DisplayFormat (SDL_Surface *surface);
  • SDL_Surface *SDL_DisplayFormatAlpha (SDL_Surface *surface);
  • SDL_Surface *SDL_CreateRGBSurface (uint flags, int width, int height, int depth, ...);
  • void SDL_Quit ();
  • void SDL_Delay (uint ms);
  • void SDL_FreeSurface (SDL_Surface *surface);
  • void SDL_UpdateRect (SDL_Surface *screen, int x, int y, uint w, uint h);
  • void SDL_WM_SetCaption (const char *title, const char *icon);
  • class draw (int width, int height, string name, clr color=clr.white);
  • void setBackground (clr color);
  • void setPixel (int x, int y, int c=clr.white);
  • void line (int x0, int y0, int x1, int y1, int c=clr.white);
  • void polygon (double x, double y, double r, int sides, int c=clr.white, int a=0);
  • void curve (int x0, int y0, int x1, int y1, int x2, int y2, int c=clr.white);
  • void yuvarlak (int x, int y, int r, int c=clr.white);
  • bool keyEvent (int type);

Alıntı:

>

-16 Ekim, sınıf ismi draw-> scene olarak değişti ve keyEvent yerine de ayrıyetten escEvent eklendi...
-7 Mayıs, itibariyle keyEvent() sınıfı bitti ve test aşamasına geçildi...

Kolay gelsin...

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 07, 2012

Alıntı (acehreli):

>
  • 'draw' emir halinde 'çiz' anlamına geldiği için 'çizim'in karşılığı oan başka bir isim daha uygun olabilir

Elbette Türkçe'deki 'çiz'i veya başka bir şeyi kullanabiliriz; bu ilk aklıma gelendi. Aynı zamanda 'with()' ile kullanılmadığında şöyle bir anlamı da var:

auto Draw = new draw( /*...*/ );
Draw.polygon( /*...*/ );

Tabi işin anlamından yola çıkarsak, 'setBackground()' işlevi daha çok Window sınıfında olması gerektiriyor...:)

Alıntı (acehreli):

>
  • SDL_Quit() tek başına garip duruyor. O bu kapsamda çağrılınca SDL_Init()'in de bu kapsamda olması gerekiyormuş gibi geliyor. Eğer SDL_Init() otomatik olarak çağrılıyorsa neden SDL_Quit() de öyle olmasın gibi düşünceler... :)

Belki iki değil bir çok şey olabilir; düzeltecek/ekleyecek. Belki değil, mini olduğu için genişletmemek gerek...:)

Aslında temel aldığım düşünce "gereksiz bir şey olmamalı" üzerindeydi. Haklısın hocam, 'SDL_Quit()' sanki sınıfın sonlandırıcı işlevi gibi anlamı olduğundan 'Draw.Quit()' olmalı veya sonlandırıcı işlevine (~this) bunu taşıyabiliriz. Hem ikinci söylediğim şey sayesinde tek satırlık bir ayrıntıdan kurtulmuş oluruz. Hoş bu işlevi kullansanız da oluyor, kullanmasında! Çünkü yazılım sonlandığında hafıza geri veriliyor. Ama mutlaka bir faydası vardır...

Gereksiz şey olmasın diye 'setBackground()' işlevini de kaldırmayı düşünüyordum. Çünkü zaten halihazırda 'SDL_FillRect()' işlevi vardı ki onu kullanıyorum. Ama parametreleri çok olduğu için böyle bir üye dahil etmek cazip geldi.

Şimdi sırada yapmaya çalıştığım şu işlevler var: (ilki basit ve koymam gerekirdi!)

  • getPixel();
  • fillPolygon();
  • rotateSurface();
  • resizeSurface();

Sanırım ikinci söylediğim biraz zorlayacak bir algoritma...:)

Başarılar...

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

September 07, 2012

Çok güzel. :)

Gözüme çarpan iki şey:

  • 'draw' emir halinde 'çiz' anlamına geldiği için 'çizim'in karşılığı oan başka bir isim daha uygun olabilir

  • SDL_Quit() tek başına garip duruyor. O bu kapsamda çağrılınca SDL_Init()'in de bu kapsamda olması gerekiyormuş gibi geliyor. Eğer SDL_Init() otomatik olarak çağrılıyorsa neden SDL_Quit() de öyle olmasın gibi düşünceler... :)

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

October 15, 2012

Merhaba...:)

(6-1) + x insanoğlundan (bu başlığı en az 6 üye ziyaret etmiş!) hiç mi ses seda çıkmaz? Yani bu başlığa bakıp hmm deyip başka işlerinize geçtiyseniz ben, biz burada boşa yazıyoruz. Emeğe saygıyı da geçtim yani kimseden hiç bir iltifat beklemiyorum. Ama gel gör ki insanın geliştirme şevki kalmıyor...:(

Buna inat yeniden geliştirmeye başlayacağım ama bu başlıkta 1-2 kişinin yazışması olacaksa bunları hiç bir zaman paylaşmayacağım. GitHub'da da bulamayacaksınız, hiç sevmesem de kendime saklayacağım...:)

Şimdi bir dizi güncelleme yapmam gerekli ve bir gün Derelict'den daha iyi şeyler yapabileceğimi de düşünüyorum. Tabi Türk programcıları birbirlerine ilgileri bu düzeyde olursa sanırım hiç birimizden bir pok olmaz. Sözüm meclisten dışarı çünkü çevremizde kendini bir pok zannedenler var ve muhtemelen onlar zannetikleri veya zannedildikeri (pok) gibiler...:)

Forumlara bakıyorum da soru sorup kaybolan ve belki de çoğu öğrencilik evresinde olan insanlar var. İnsan hiç mi gerip dönüp teşekkür etmez veya aldığı notu yayınlayıp kodun işe yararlılığına değer biçmez. Sonuçta bu forumlarda yazılanlar site yayında kaldığı müddetçe bir çok kişi faydalanıyor; tarihin tozlu sahnelerinde kaybolmuyorsa...

Neyse, içimi dökeyim dedim! Amacım kimseyi kırmak değil ve kimseye de laf sokmak istemedim. Ama ciddi bir sorun var biz Türklerde, bunu aşmamız lazım! Hoş aşacak çok şeyimiz var...:(

Sevgiler, saygılar...

Dip Not: keyEvent() işlevi üzerine çok yük yüklemeye başladım. Bu durumda escEvent() ismine çevirmeyi düşünüyorum. Çünkü yukarıda verdiğim ilk kod çok çok basit ve basit uygulamalar yazarken çok kullanışlı görünüyor. İlerleyen günlerde karmaşık işlevler ile karışmaması için işlevin ilk kopyasını escEvent() yaptığımı bildiririm. Ne dersin Ali hocam? Sorum sana çünkü kimse bir şey demiyor...:(

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

October 16, 2012

Evet ben CS 188 ile uğraşıyordum ama bıraktım. Zevkli ve zor olmasına rağmen grafik algoritmaları ve veri yapıları konularında eksikliklerim olduğu için kursu bıraktım. Daha sonra geniş bir zamanda hem de algoritma ve veri yapıları dersini aldıktan sonra bu konuları çalışmanın zevkli olacağını düşünüyorum.

Şimdilik tekrar elektroniğe geri dönüş yaptım.

Ben Türkiye şartlarında bir oyun yazıp ya da grafik programcısı olarak tanılan bilinen çok az kişi biliyorum. Mesela Tale Worlds'ü geliştirenler ve Pusu'nun yapımcıları zamanında oyunyapimi.org sitesinde takılıyorlardı.

Yani bir John Carmack amca olmak biraz zor :-)

Babamın bir lafı var. 'Yaptığın işi ilkönce kendin beğeneceksin' der. O yüzden bir işi yaparken, yaptığım iş hoşuma gidiyorsa, o işi yapmaktan zevk alıyorsam gerisi çok da önemli değil.

Zaten bilgisayar mühendisliğinde, programcılık okuyan arkadaşlardan böyle bir konuda fikir danışmak, bir şey sormak için elektronik postalar alıyorum. O zaman diyorum ki demek ki insanların programlama öğrenmesinde ufak da olsa bir katkımız da olsa ne mutlu.

Ali beyi zaten hiç söylemiyorum. O zaten bildiklerini bizle paylaşıyor, biz de başkalarıyla paylaşıyoruz.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

October 16, 2012

Alıntı:

>

Buna inat yeniden geliştirmeye başlayacağım ama bu başlıkta 1-2 kişinin yazışması olacaksa bunları hiç bir zaman paylaşmayacağım. GitHub'da da bulamayacaksınız, hiç sevmesem de kendime saklayacağım...:)

Salih,
her bir çalışmanı dikkatle izliyoruz ve çoğundan da faydalanıyoruz, böyle düşünmemeni öneririm.
Foruma katılım biraz da o an ile içinde bulunduğumuz sürecin diyalektiği şeklinde gelişiyor. O nedenle bazı konularla izleyiciler/katılımcılar tahmin ettiğimizden daha uzun sürede etkileşebiliyor.

Sdl ile ilgili çalışmalar şu an bazı katıulımcılarımızın ilgisini çekmiyor olabilir. Diğer bir çok konu da da bu durum böyle olabilir. Bunun nedenlerinden birisi de bir çoğumuzun henüz öğrenci olarak bu platformu takip ediyor olmamızla ilgilidir.

Bu belki gtkD için de, ilerlemiş konuların örnekleri için de böyledir. Örneğin ben kaç yıldır buradayım ama henüz senin tartışmaya açtığın konuların çok çok gerisinden takip ediyorum dili. Muhtemelen bir çok üyemiz de böyle bir aralıkta konuları takip ediyordur.

Bu durum senin çalışmalarını ve çabalarını kösteklememeli aksine biz yetişip geliştikçe o çabalarından ziyadesiyle faydalanıyoruz, bunu da bilmelisin.

Daha geniş bir zaman dilimine ihtiyaç duyuyoruzdur belki, aksi değil.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

October 16, 2012

Bu arada hazır sen de bu konuyu açmışken, cidden eksikliğini hissettiğim bir konu var. Geçenlerde ali hocam'a da konuyu açmıştım kod örnekleri sunalım diye. O da beni ilgili http://ddili.org/ornek_kod/ bölüme yönlendirmişti; Örnek Kodlar bölümüne.

O zamandan beri gerçekte neyimn eksikliğini hissettiğimin ayırdına varmaya çalışıyorum ve sanırım: Öncelikle o bölüm en basit haliyle olabildiğince yalın kod örnekleri ile geliştirilmeli ve bunun yanında ders arası bölümünde mümkün olduğunca aşamalı ilerleyen kod örnekleri sunabilmeliyiz. Bir başlık altında bir kişi bir örneği alır, onu adım adım geliştirerek hem öğrendiklerini uygular, hem ardından geleceklere referanslar bırakır. Çünkü şimdiki durumda ben bile aradığım sadeliğe sahip kod parçasını uzun forum taramaları yapmadan bulamıyorum. O arada da aklımdaki soruya olan ilgim kayboluveriyor.

Sanırım son bir ayda en azından elli kez class, bir o kadar da struct sorgusunu sisteme vermişimdir. Yanıt hep aynı 24 adet forum sayfası, ama çoğunda da aradığım örneklerden yok. Yanlış anlaşılmasın bu taramalar da öğretici. Ancak dediğim gibi sonuca giderken oldukça da yoruyor.

Ali hocam izin verirse ve sistemimiz de uygunsa ders arası bölümünde alt başlık olarak böyle bir alanı başlatarak ön ayak olmak istiyorum açıkçası. Ve lütfen örnek kodlar bölümümüzü de olabildiğince yalın kodlarla geliştirebildiğimiz kadar geliştirelim derim.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

October 16, 2012

Bence büyük iş başarıyorsun. Ne kadar çok kod çıkartmışsın. :) Ama insanlar biraz kendi hallerine çekildiler herhalde. SDL ile zaten en çok Erdem ilgileniyor. Onun da kursa boğulmuş olduğunu biliyoruz.

Ben şimdilik biraz da bilinçli olarak SDL'le oynamak istemiyorum. :-/

keyEvent'e baktım. Belki henüz anlamadığım nedenleri vardır bana karmaşık göründü. Özellikle şunları farkettim:

  • keyEvent'in davranışının int türündeki bir parametreye bağlı olması kullanışlı olmayabilir. Kodda keyEvent(2) görüldüğünde ne olduğu kolay anlaşılmıyorum. Esc'e iki kere mi basılmalı? Yoksa basılıp sonra kaldırılmalı mı? Gibi sorular belirebilir... :)

  • Bu kodu goto kullanmadan yazmayı denedin mi? Bana daha temiz olacakmış gibi geliyor.

  • Birden fazla return satırı da karışıklık doğurabilir. Acaba işlev basitçe tek akış biçiminde kodlanabilir mi.

  • İkinci SDL_PollEvent'ten sonra yalnızca event.type'a bakıyorsun çünkü herhalde bir önceki event SDL_KEYDOWN olduğuna göre olsa olsa Esc tuşu kaldırılmıştır diye düşünüyorsun. Acaba SDL_PollEvent nasıl çalışıyor? Arada atladığı event'ler olabilir mi? Örneğin o ikinci SDL_PollEvent yapılmadan hemen önce Esc tuşu kalksa ve hemen başka bir tuşa basılsa. (?) Bu sefer onun kalkmasını mı yakalayacağız. Tabii bu soru yalnızca event.key.keysym.sym'e bakılmadığını farkettiğim için belirdi. Yoksa olayı anladığımdan değil. :)

Belki de işlevin belge açıklamaları olmadığı için bu kadar soru soruyorum. :)

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

October 16, 2012

Hoş olur. Az evvel Salih ile de konuştuk konuyu. Yararlı olacağını düşünüyoruz. Böyle farklı seviyelerden de başlayabilen kod örnekleri sunarsak örneğin: ileride arayüzleri de kullanacak basit bir tasarımı işlev halinden alıp aşama aşama belirli bir ivmeyle geliştirelim. Hatta Ali hocam siz hariç; Zafer, Salih, Kadir, Erdem artık kimler katılmak isterse her birimiz bir başlıkta örneklerimizi geliştire geliştire sunalım.
Hatırlarsınız bir kahraman örneği vermiştim bir aralar da onu birlikte güzelce geliştirmiştik: http://ddili.org/forum/thread/512
O örnek daha basitinden alınıp son haline getirilebilir gibi düşünüyorum. En basitinden giderek karmaşığa ve elbette dershanedeki konu sıralamasına da uyaraktan (Önemli!)

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

October 16, 2012

Güzel fikir. "Merhaba dünya"dan başlayan ve gittikçe daha zor olanaklar kullanmaya başlayan bir kod bankası.

Böyle kodları bana gönderirsen hemen siteye koyarım. Eğer istersen forumda konu olarak gösterirsen belki birlikte gözden geçirmiş de oluruz.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

« First   ‹ Prev
1 2