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. ]