Forum: SDL RSS
SDL dersi için en basiti nasıl?
Sayfa:  1  2  sonraki 
Avatar
Salih Dinçer #1
Üye Ock 2012 tarihinden beri · 1880 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: SDL dersi için en basiti nasıl?
Merhaba Erdem,

Bugün SDL derslerine niyetlendim. Her şeyi kitabına göre yapmalıydım. Yazılanları harfiyen uyguladım. GitHub bölgesini yerel dizinime indirmek için .tar.gz paketini açmayı denedim. Çünkü 'clone' olayında şöyle bir hata aldım:
salih@NB:~/d.ders$ git clone git@github.com:erdemoncel/oyun.git
Cloning into oyun...
The authenticity of host 'github.com (207.97.227.239)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,207.97.227.239' (RSA) to the list of known hosts.
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
Neyse konu bu hata değil ve belki küçük bir püf noktası. Aslında her şey tabiri caizse ağzımıza vermişsin. Ama ben hem balık tutmak istiyorum; hem de oltayı tutup kıpırtıları beklemek kadar basit bir iş icra etmek...:)

Dosyalar çok güzel organize edilemiş; dersler de! Kendi adıma teşekkür ederim. Ancak ben biraz eski kafalı olacağım ki bu kadar çok sınıf, yapı ve dosya ismi (import sdl, vector2, icerik, cizici, matematik, temelsekiller;) beni biraz ürküttü. Çünkü bu dosyaları ben oluşturmadım ve hakim de değilim...:(

Soruma gelince; acaba basit bir uzay gemisi (ship.bmp), soldan sağa doğru, bir foreach() döngüsü içinde pencere sınırına kadar gidip durması çok mu kod istiyor? Yani bana sdl dışında hiç bir bağımlılığı olmayan bir örnek lazım. Öyle bir örnek ki bütün olay main() içinde olup bitsin.

Son olarak bir şey daha isteyeceğim. Bu resim ya flip olsun ya da kendi çevresinde dönerek bu sefer sola doğru baksın. İşte bana bütün bunlar gemimizi hareket ettirmek için yeterli görünüyor. Ama açıkçası bu kadar çok dosya beni biraz ürkütüyor...

Sevgiler, saygılar...
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
erdem (Moderatör) #2
Üye Tem 2009 tarihinden beri · 894 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Salih Dinçer:
Merhaba Erdem,

Bugün SDL derslerine niyetlendim. Her şeyi kitabına göre yapmalıydım. Yazılanları harfiyen uyguladım. GitHub bölgesini yerel dizinime indirmek için .tar.gz paketini açmayı denedim. Çünkü 'clone' olayında şöyle bir hata aldım:
salih@NB:~/d.ders$ git clone git@github.com:erdemoncel/oyun.git
Cloning into oyun...
The authenticity of host 'github.com (207.97.227.239)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,207.97.227.239' (RSA) to the list of known hosts.
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
Neyse konu bu hata değil ve belki küçük bir püf noktası.

Salihcim şimdi baktım. Bu ssh anahtarlarıyla uğraşmak zor geldiği için ben https kullanıyorum.

$ git clone https://github.com/erdemoncel/oyun.git

Diğer kısımlara henüz bakmadım  :-) Hatırlatma için teşekkürler şimdi okubeni dosyalarını düzenledim.
Bu mesaj erdem tarafından değiştirildi; zaman: 2012-08-03, 14:34.
erdem (Moderatör) #3
Üye Tem 2009 tarihinden beri · 894 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj #1
Salih Dinçer:
Dosyalar çok güzel organize edilemiş; dersler de! Kendi adıma teşekkür ederim. Ancak ben biraz eski kafalı olacağım ki bu kadar çok sınıf, yapı ve dosya ismi (import sdl, vector2, icerik, cizici, matematik, temelsekiller;) beni biraz ürküttü.

Evet haklısın  :-/ Maalesef burada ilk hatam projeyi sonuna kadar kodlamadan bir taraftan ders hazırlamak oldu.

Ama diğer taraftan SDL çok temel düzeyde bir grafik kütüphanesi. Örneğin sadece çizgi çizip daha sonra bundan temel şekiller üretebilmem için Bresenham'ın çizgi çizme algoritmasını öğrenmem gerekti.

http://www.cs.toronto.edu/~smalik/418/tutorial2_bresenham.…
http://www.webkinesia.com/games/sdl-turtle.php
http://free.pages.at/easyfilter/bresenham.html

Yani ekrana piksel piksel erişebiliyoruz.

https://github.com/erdemoncel/oyun/blob/master/src/cizici.d

https://github.com/erdemoncel/oyun/blob/master/src/temelse…

Salih Dinçer:
Soruma gelince; acaba basit bir uzay gemisi (ship.bmp), soldan sağa doğru, bir foreach() döngüsü içinde pencere sınırına kadar gidip durması çok mu kod istiyor? Yani bana sdl dışında hiç bir bağımlılığı olmayan bir örnek lazım. Öyle bir örnek ki bütün olay main() içinde olup bitsin.

Aslında belki bu kadar basit bir program için yazmak gerekmeyebilir. Ama evet  ;-) Çünkü örneğin orada oyun nesnesinin oyun ekranının dışından taşmaması için burada da anlattığım gibi bir yöneyi bir eksen etrafında yansıtmak gerekiyor. Benim yazdığım örnekte çok temel yöney işlemleri var.

https://github.com/erdemoncel/oyun/blob/master/src/vector2.d

Ama dediğim gibi grafik programlama ya da oyun programlama programcılığın en zor alanlarından bir tanesi. Ve örnek olarak FIFA türünde 2D bir oyunun yapay zekasını kodlamak için binlerce, onbinlerce kod yazmak gerekiyor. Hatta sadece bir dosyayı örnek olarak göstermek istiyorum. Ki daha önce okuduğum Programming Game AI By Example kitabındaki sadece bir kaynak dosyası  :-p

http://codepad.org/UwAYyPdP

Salih Dinçer:
Son olarak bir şey daha isteyeceğim. Bu resim ya flip olsun ya da kendi çevresinde dönerek bu sefer sola doğru baksın. İşte bana bütün bunlar gemimizi hareket ettirmek için yeterli görünüyor.

Aslında genel olarak görüşlerini haklı buluyorum. Çünkü o kütüphaneyi kodlarken bir nevi 2D oyun motoru gibi kodlamaya başlamıştım. Yani örneklerde gösterilmeyen örneğin sprite türü animasyonlar vs.. falan da olacaktı. Hatta bitseydi şunun gibi 2D bir uzay oyunu olacaktı.

Maalesef artık ilgimi kaybettiğim için devam edemiyorum  :rolleyes: Ama istersen programcı olarak seni ekleyebilirim istediğin gibi kaynak kodu değiştirebilirsin.

Bir de bahsettiğin gibi sadece sdl ve ana program olacak şekilde tamamen oyunu kendin oluşturabilirsin. Bu durumda tek gereken şey C ilintilerinin olduğu sdl.d kaynak dosyası. Bu arada Makefile dosyalarını incelersen aslında farklı örneklerin de olduğunu görebilirsin.

Burada çok basit anlatımlı SDL dersleri var. Bu dersleri takip ederek sdl.d dosyasını kullanarak istediğin gibi oyun ortamını kodlayabilirsin. Bir de alternatif olarak 2D oyun motorları var sanırım. Ama şu an hiç biri aklıma gelmedi. Eğer aklıma gelirse bu başlığa yazarım.

http://lazyfoo.net/SDL_tutorials/index.php
Bu mesaj 2 defa değişti; son değiştiren: erdem; zaman: 2012-08-03, 15:17.
Değişiklik nedeni: SDL dersleri bağlantısını ekledim
erdem (Moderatör) #4
Üye Tem 2009 tarihinden beri · 894 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Bir de SDL'e alternatif olarak Allegro olabilir. Ben bu gün Ubuntu forumlarında gördüm bir arkadaş mantar ezme oyunu yazmış  :-p

[Resim: http://1.bp.blogspot.com/-WpOePNCcT54/UBAzK6O5i3I/AAAAAAAAA5U/YuyQLrFvEYY/s1600/allegro+final+fight.PNG]

Hiç denemedim ama D ilintileri de varmış.

https://github.com/SiegeLord/DAllegro5
Avatar
Salih Dinçer #5
Üye Ock 2012 tarihinden beri · 1880 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj #3
Cevaplar için teşekkür ederim Erdem...

Ben henüz bunları okumamışken cizici.d sınıfını kullanarak bir hedefTahtası yapmayı başarmış bulunmaktayım...holeyyy...:)
void main() {
    SDL_Init(SDL_INIT_EVERYTHING);
    EkranYüzeyi hedefTahtası = SDL_SetVideoMode(400, 400, 0, SDL_HWSURFACE);
    
    with(new Çizici(hedefTahtası)) {
      foreach(i; 0..120) {  // iç içe daireler
          if(i % 20 == 0 || i % 12 == 0) {
            çiz(200, 200, 100 - i);
          }
      }
      çiz(100, 200, 300, 200); // yatay çizgi
      çiz(200, 100, 200, 300); // dikey çizgi
    }
    hedefTahtası.EkranaBas();
    birazBekle(2000);
}
[Resim: http://img84.imageshack.us/img84/1457/hedef.png]
"erdem":
Bir de bahsettiğin gibi sadece sdl ve ana program olacak şekilde tamamen oyunu kendin oluşturabilirsin. Bu durumda tek gereken şey C ilintilerinin olduğu sdl.d kaynak dosyası. Bu arada Makefile dosyalarını incelersen aslında farklı örneklerin de olduğunu görebilirsin.
Açıkçası senin meydana getirdiğin emeklerini de kullanmak isterim. Yukarıdaki ilk basit denememi senin hazırladığın sınıf olmasaydı sanırım halan daireyi çizmeye çalışıyor olurdum.

"erdem":
Maalesef artık ilgimi kaybettiğim için devam edemiyorum  :rolleyes: Ama istersen programcı olarak seni ekleyebilirim istediğin gibi kaynak kodu değiştirebilirsin.
Katkı sağlamak isterim ama önce sınıfları ve amaçlarını öğrenmeliyim. İlk olarak cizici.d ile başladım ama vektor2.d'yi henüz anlamadığım için onu devre dışı bıraktım. Bir de çizgi çizen algoritmada şöyle küçük bir değişiklik (sadece if ve for uçtu, yerine do while geldi) yapmak hoşuma gitti:
        int dx =  abs(x1 - x0), sx = x0 < x1 ? 1 : -1;
        int dy = -abs(y1 - y0), sy = y0 < y1 ? 1 : -1;
        int err = dx + dy, e2;
 
        do {
            if (e2 >= dy) { err += dy; x0 += sx; }
            if (e2 <= dx) { err += dx; y0 += sy; }
            çiz(x0, y0, renk);
            e2 = 2 * err;
        } while (x0 != x1 && y0 != y1);
Belki çember çizen döngüye de küçük bir rötuş gerekebilir. Yukarıda paylaştığım resme bakarsanız çizgilerin kesiştiği noktayı 1px ile kaçırıyor. Tabi benim hatam da olabilir. Bir şeyleri karıştırmışımdır kesin... :-p


"erdem":
Aslında belki bu kadar basit bir program için yazmak gerekmeyebilir. Ama evet  ;-) Çünkü örneğin orada oyun nesnesinin oyun ekranının dışından taşmaması için burada da anlattığım gibi bir yöneyi bir eksen etrafında yansıtmak gerekiyor. Benim yazdığım örnekte çok temel yöney işlemleri var.

https://github.com/erdemoncel/oyun/blob/master/src/vector2.d
Demek bu yapı ekran dışına taşmalar ile ilgileniyor? Benim de dikkatimi çekti. Ekran dışına taşan bir şey aksi yöne yansıyor!

Sevgiler, saygılar...
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
erdem (Moderatör) #6
Üye Tem 2009 tarihinden beri · 894 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Salih Dinçer:
Ben henüz bunları okumamışken cizici.d sınıfını kullanarak bir hedefTahtası yapmayı başarmış bulunmaktayım...holeyyy...:)

Hoş olmuş gerçekten de!

Belki çember çizen döngüye de küçük bir rötuş gerekebilir. Yukarıda paylaştığım resme bakarsanız çizgilerin kesiştiği noktayı 1px ile kaçırıyor. Tabi benim hatam da olabilir. Bir şeyleri karıştırmışımdır kesin... :-p

Çember çizme algoritmasında, ya da kodlarken bir hata olabilir. Çünkü onları eklerken biraz acele etmiştim.

Github kullanıcı adını verirsen hemen seni projeye ekleyebilirim.  Kaynak kod üzerinde istediğin gibi değişiklik yapabilirsin  ;-)  
Hatta senin yazdığın kodu inceledikten sonra oyun ve oyuncu.d dosyalarına aslında gerek olmadığını düşünmeye başladım. Kütüphane temel seviyede çizim işlemleri, resim yükleme, animasyon vs.. sağlamalı. Sonra kullanıcı kaynak kodu sınıfları oyun nesnelerini oluştururken esnek olarak hareket edebilmeli.

https://github.com/erdemoncel/oyun/blob/master/src/vector2.d

Demek bu yapı ekran dışına taşmalar ile ilgileniyor? Benim de dikkatimi çekti. Ekran dışına taşan bir şey aksi yöne yansıyor!

Yaptığımız işlem hız yöneyini x ya da y ekseninde yansıtmak. Aynı kütük içindeki birim testlerinde de görebilirsin. Bu arada SDL'in koordinat ekseni x sağa ve y aşağı bakacak şekilde.
Avatar
Salih Dinçer #7
Üye Ock 2012 tarihinden beri · 1880 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
erdem:
Salih Dinçer:
Belki çember çizen döngüye de küçük bir rötuş gerekebilir. Yukarıda paylaştığım resme bakarsanız çizgilerin kesiştiği noktayı 1px ile kaçırıyor. Tabi benim hatam da olabilir. Bir şeyleri karıştırmışımdır kesin... :-p
Çember çizme algoritmasında, ya da kodlarken bir hata olabilir. Çünkü onları eklerken biraz acele etmiştim.
Yok, yok! Asıl sorun test yapmadan alternatif koddan bahsetmede acele etmem...:)

Çünkü döngüyü bitiren koşulu, hangi akla hizmet yukarıdaki gibi yapmışım bilemiyorum. Tabi onu değiştirince bir satırı da yukarı kaydırmak gerekti. Şimdi birebir aynı şekilde çalışıyor...
        çiz(x0, y0, renk)// Bu satır olmayınca ilk nokta basılmıyor!
        do {
            e2 = 2 * err;
            if (e2 >= dy) { err += dy; x0 += sx; }
            if (e2 <= dx) { err += dx; y0 += sy; }
            çiz(x0, y0, renk);
        } while (!(x0 == x1 && y0 == y1));
Emin olmak için üst üstte iki rengi, farklı şekil (hem beyaz üstüne kırmızı, hem de kırmızı üzerine beyaz) ve koordinatlarda çizgi çizen eski ile yeni kodu karşılaştırdım. İstersen kullanabiliriz çünkü çember çizen işlevde de do while kullanılmış. Bunda da olunca hoş bir uyum oluyor. Tabi dışındaki fazladan satır olmasaydı güzel olurdu hani!

erdem:
Github kullanıcı adını verirsen hemen seni projeye ekleyebilirim.  Kaynak kod üzerinde istediğin gibi değişiklik yapabilirsin  ;-)
Ben şu ana kadar bir GitHub hesabı açmamıştım. Sayende bunu da almış oldum...:)
Kullanıcı adım: salihdb

erdem:
Yaptığımız işlem hız yöneyini x ya da y ekseninde yansıtmak. Aynı kütük içindeki birim testlerinde de görebilirsin. Bu arada SDL'in koordinat ekseni x sağa ve y aşağı bakacak şekilde.
Yöney, tam olarak vector'ün Türkçesi mi demek?
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
erdem (Moderatör) #8
Üye Tem 2009 tarihinden beri · 894 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Salih Dinçer:
Ben şu ana kadar bir GitHub hesabı açmamıştım. Sayende bunu da almış oldum...:)
Kullanıcı adım: salihdb

Tamam ekledim bile!  :-) Çember çizme kodunu da istediğin gibi değiştirebilirsin.

Yöney, tam olarak vector'ün Türkçesi mi demek?

Evet. Vektör olarak da kullanılıyor aslında.
erdem (Moderatör) #9
Üye Tem 2009 tarihinden beri · 894 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Bir de çok ilginç bir şey buldum. Burada bir C kodu çember çiziyor. Ama ben ilk planda bir grafik kütüphanesi kullanmadan nasıl çizdiğini anlamamıştım.

https://banu.com/blog/7/drawing-circles/

Ama sonra farkettim ki bunu kullandığı resim biçemi olan Netpbm sayesinde yapabiliyor.

http://en.wikipedia.org/wiki/Netpbm_format

P1
# This is an example bitmap of the letter "J"
6 10
0 0 0 0 1 0
0 0 0 0 1 0
0 0 0 0 1 0
0 0 0 0 1 0
0 0 0 0 1 0
0 0 0 0 1 0
1 0 0 0 1 0
0 1 1 1 0 0
0 0 0 0 0 0
0 0 0 0 0 0


Örneğin bu 0 ve 1'leri bir metin dosyasına kaydettiğimizde J harfine dönüşüyor. Çok ilginç gerçekten de sonra Emacs'la da görüntülenebiliyor.
Avatar
Salih Dinçer #10
Üye Ock 2012 tarihinden beri · 1880 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Hah, ben de yazı olayını soracaktım!

SDL'nin bir font veritabanı var mı? Yani ek bir şeye ihtiyaç duymadan ekrana yazı yazabiliyor muyuz? Aslında oyun yazarların bahsettiğin gibi kendine özgü yazıları oluyor. Hatta ActionScript3 ile yazılan oyunlarda bile kayıt edilmiş PNG görüntüleri kullanıldığını hatırlıyorum. Resmi haritalayarak ekrana yazı ve bilimum simge yazıyorlardı...:)
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
erdem (Moderatör) #11
Üye Tem 2009 tarihinden beri · 894 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
SDL'in yazı tiplerini kullanabilmek için SDL TTF kütüphanesini kurmak gerekiyor.

$ sudo apt-get install libsdl-ttf2.0-dev

Henüz bunlar sdl.d içinde yok. Ama usr/include/SDL dizininde bulunan SDL_ttf.h kütüphanesi için C ilintilerini yazıp bunları sdl.d'ye ekleyebilirsin.

Ama bu yukarda verdiğim örnek çok ilginç. Hiç bir kütüphaneye ihtiyaç duymadan pbm biçiminde resim dosyası oluşturabiliyor.

Örneğin bu adreste bulunan circle1.c dosyasını derlersen bir tane çember oluşturuyor. Çok güzel bir olay hatta aynı kodun D versiyonunu yazabiliriz. Ama ben şimdilik paralel port ile ilgili örneği tamamlamayı düşünüyorum. Bir haftadır hala yazamadım  :-)
Avatar
Salih Dinçer #12
Üye Ock 2012 tarihinden beri · 1880 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Merhaba Erdem,

İlintiyi sdl.d'ye ekledim ama çalıştırmada başarılı olamadım! Kafamı karıştıran bazı şeyler vardı. Örneğin hiç bir elemanı olmayan TTF_font'a anlam veremedim. Ben de hata vermesin diye hiç bir elemanı olmayan yapı ekledim. Ayrıca hata atan/yaklayan iki takma isim gördüm. Bunlara da anlam veremedim...:)
/* The internal structure containing font information */
typedef struct _TTF_Font TTF_Font;
. . .
/* We'll use SDL for reporting errors */
#define TTF_SetError    SDL_SetError
#define TTF_GetError    SDL_GetError
Ben de son iki satırı gizledim...

Bu ilintiyi en sona (664. satır) şu başlıkla ekledim:

extern(C)   // dmd sdl -debug -L-lSDL -L-lSDL_ttf

Ayrıca ferdi şekilde derleyebilmek için basit bir debug subroutine'i yazdım. Bir kaç düzeltmeyi ve eklemeyi de saymazsak bu kadar. Son olarak bir şey dikkatimi çekti SDL_Surface*'in iki tane takma ismi var. Bence Grafik2D'yi silelim ama sınıflarda anlamı arttırıyorsa sen bilirsin.

Renk yapısına bir kaç renk daha eklesek mi? Ben turkuaz ve siyah olmak üzere iki tane ekledim ama temel renkler dışında sarı ve gri tonları gibi renkler hoş olabilir. Neyse bunlar küçük ayrıntılar. Asıl meseleye (ekrana yazı yazamamaya) gelirsek...:)

Önce herhangi bir TTF font'u bulup aynı dizine kopyaladım ve aşağıdakine benzer şekilde yükledim. Burada sorun yok!
class Oyun : TemelOyun
{
    :    :    :
    TTF_Font * font;
 
    this(int genişlik, int yükseklik, int çözünürlük = 0) {
        :    :    :
        font =  TTF_OpenFont("arial.ttf", 16);
    }
}
Ayrıca her şey kitabına göre olsun diye destructor'e de şu satırları ekledim:
        TTF_CloseFont(font);
        font = null;
        TTF_Quit();
Son olarak bize bir işlev lazımdı o da şu olsa gerek:
    public int ekranaYaz (SDL_Surface* screen, TTF_Font* font, const char* text)
    {
        auto color = SDL_Color(255, 255, 255, 0);
        SDL_Surface* text_surface;
 
        text_surface = TTF_RenderText_Solid(font, text, color);
        if (text_surface != null)
        {
            SDL_BlitSurface(text_surface, null, screen, null);
            SDL_FreeSurface(text_surface);
            return 1;
        } else {
            // report error
            return 0;
        }
    }
Ancak hata da vermiyor, çalışmıyor da... :rolleyes:

Herhalde eksik bir şeyler olsa gerek. Sanırım yazıyı taşıyan bir nesne olması gerekiyor. Bu nesnenin de konum bilgisi gibi ama başta belirttiğim gibi boş yapıyı nasıl dolduracağız? Örneğin şu işlev ile şekillendirebiliriz ama tek başına kullandığımda program çöküyor...
       //TTF_SetFontStyle(font, TTF_STYLE_NORMAL); 
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
Bu mesaj Salih Dinçer tarafından değiştirildi; zaman: 2012-08-04, 16:57.
erdem (Moderatör) #13
Üye Tem 2009 tarihinden beri · 894 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj #10
Salih Dinçer:
İlintiyi sdl.d'ye ekledim ama çalıştırmada başarılı olamadım! Kafamı karıştıran bazı şeyler vardı. Örneğin hiç bir elemanı olmayan TTF_font'a anlam veremedim.

Aslında o yapılar boş değil. Ama sadece yapının bildirim kısmı var. Yapının detayları da c kaynak dosyalarındadır sanırım.

Salih Dinçer:
Bence Grafik2D'yi silelim ama sınıflarda anlamı arttırıyorsa sen bilirsin.

Onu sanki cizici.d'de grafik çiz demek bana daha doğal göründüğü için eklemiştim.

https://github.com/erdemoncel/oyun/blob/master/src/cizici.d

Salih Dinçer:
Renk yapısına bir kaç renk daha eklesek mi? Ben turkuaz ve siyah olmak üzere iki tane ekledim ama temel renkler dışında sarı ve gri tonları gibi renkler hoş olabilir. Neyse bunlar küçük ayrıntılar.

Tabi istediğin kadar renk ekleyebilirsin  :-)

Salih Dinçer:
Hatta ActionScript3 ile yazılan oyunlarda bile kayıt edilmiş PNG görüntüleri kullanıldığını hatırlıyorum. Resmi haritalayarak ekrana yazı ve bilimum simge yazıyorlardı...:)

Bir de bu kütüphaneyi de yeni gördüm. Resim dosyalarını png ya da jpeg olarak kodlayabiliyormuş.

https://github.com/callumenator/imaged

Dikkat ettim de burada simpledisplay.d de oluşturduğu renk yapısı bizimkinin aynısı  :-D
Bu mesaj erdem tarafından değiştirildi; zaman: 2012-08-04, 17:30.
Değişiklik nedeni: Renk yapısı ile ilgili yorumu ekledim
Avatar
Salih Dinçer #14
Üye Ock 2012 tarihinden beri · 1880 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
erdem:
Salih Dinçer:
İlintiyi sdl.d'ye ekledim ama çalıştırmada başarılı olamadım! Kafamı karıştıran bazı şeyler vardı. Örneğin hiç bir elemanı olmayan TTF_font'a anlam veremedim.
Aslında o yapılar boş değil. Ama sadece yapının bildirim kısmı var. Yapının detayları da c kaynak dosyalarındadır sanırım.
Evet, kaynak koduna şimdi baktım da yapının üyeleri belli. İşin ilginci, sanırım FreeType ilintisi de yazmamız gerekebilir...:)

erdem:
Bir de bu kütüphaneyi de yeni gördüm. Resim dosyalarını png ya da jpeg olarak kodlayabiliyormuş.

https://github.com/callumenator/imaged

Dikkat ettim de burada simpledisplay.d de oluşturduğu renk yapısı bizimkinin aynısı  :-D
Derledim çalışıyor...:)

Bu SDL'nin de simple'ı ve bazı basit işlerde kullanabilir ve kaynak kodundaki olaylardan (örneğin import io = std.stdio; diye bir olay varmış!) bir şeyler öğrenebiliriz. Gerçi derleme boyutu aşırı büyük görünüyor. Tabi işletim sisteminin kütüphanelerini saymazsak aracı kullanmıyor herhalde ondan.

SDL'yi çok sevdim çünkü dosya boyutu da genelde 300 KB. civarında. Kütüphaneleri desen bir elin parmakları sayısınca. GtkD'ye göre öz ve kolay geliştirme ortamı sunuyor. Oyun harici şeylerin de yapılabileceğini düşünüyorum.
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
Bu mesaj 2 defa değişti; son değiştiren: Salih Dinçer; zaman: 2012-08-04, 18:33.
Değişiklik nedeni: Windows uyumluluğu ile alakalı bölüm değişti...
erdem (Moderatör) #15
Üye Tem 2009 tarihinden beri · 894 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Sonunda biraz uğraşarak da olsa bir test dosyası oluşturarak çalıştırabildim  :-)

[Resim: http://ehobi.org/resim/resim/merhabad.png]

TTF kütüphanesini denemek için make font demek yeterli. Oluşturduğum dosya da demos dizininde yazitipi.d dosyası. Eğer hala denemediysen make pong diyerek başka bir programı da deneyebilirsin.

Bu arada sana hak verdim. Gerçekten kod şu an benim için bile karman çorman olmuş :-D

Eğer uğraşmak istiyorsan oldukça elden geçirmen gerekecek :)
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Sayfa:  1  2  sonraki 
Forum: SDL RSS
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-03-25, 14:45:28 (UTC -07:00)