SDL.NET kullanarak oyunları programlama C #

click fraud protection

Açık kaynak ile ilgili sorunlardan biri, projelerin bazen yol kenarında düştüğü veya kafa karıştırıcı dönüşler yaptığıdır. SDL.NET'i alın. Web sitesini satılık olarak görmezden gelirsek, web'de yapılan bir arama ortaya çıkar cs-sdl.sourceforge.net Kasım 2010'da durmuş gibi görünen bir proje. Durduğunu düşünmüyoruz ama sadece öyle görünüyor.

C # bilmiyorsanız, önce nasıl yapılacağını öğrenmeniz gerekir C # programında. Başka bir yere baktığımızda, Mono web sitesinde aynı alanı kapsayan ve ses için destek ekleyen Tao çerçevesiyle karşılaştık. Ama sourceforge'a baktığımızda (yine!), OpenTK ama odak noktası OpenGL. Bununla birlikte, OpenAL de içerir, bu nedenle iki (cs-sdl ve OpenTK) kurulumu ileriye doğru görünüyordu.

OpenTk kurulumunun bir kısmı başarısız oldu; NS (gölgelendirici) çünkü VS 2008 yüklü değil! Ancak, geri kalanı Tamam. Bir C # Konsol projesi oluşturduk ve SDL.NET ile oynamaya başladık. Çevrimiçi belgelere buradan ulaşabilirsiniz.

Geriye dönüp baktığımızda, OpenTK çerçevesine ihtiyaç duyulmadığını, SDL.NET'in her şeyi kurduğunu, ancak o zaman net olmadığını görebiliriz. Gelişimi OpenTK'nın yerini almasına rağmen hala Tao Framework kullanıyor. Biraz kafa karıştırıcı ve umuyoruz ki SDL.NET ekibi gelecekte OpenTk uyumlu bir sürüm getirecektir.

instagram viewer

Düşündüğümüz gibi, sadece ince bir sargı yuvarlak SDL değil, ancak önemli ölçüde ekstra işlevsellik ekliyor. Aşağıdakileri sağlamak için bir takım sınıflar verilmiştir:

İki SDL.NET dll (SdlDotNet.dll ve Tao) bulun. Sdl.dll) ve OpenTK dll'lerini seçin ve bunları proje referanslarına ekleyin. Kurulumdan sonra, dll dosyaları 64 bit Windows'ta Program Files \ SdlDotNet \ bin (32 bit Windows ve Program Files (x86) \ SdlDotNet \ bin) içinde bulunur. Çözüm Gezgini'nde Başvurular bölümüne sağ tıklayın, ardından Referans Ekle'ye tıklayın ve Gözat sekmesini seçin. Bu bir Explorer iletişim kutusu açar ve dll'leri bulduktan sonra Tamam'ı seçin.

Son bir şey, Özellik sayfalarını açmak için Görünüm \ Özellikler'e tıklayın ve ilk sekmede (Uygulama) Çıktı türünü Konsol Uygulamasından Windows Uygulamasına değiştirin. Program ilk çalıştığında ve SDL ana Penceresini açtığında bunu yapmazsanız, bir konsol Penceresi de açılır.

Şimdi başlamaya hazırız ve aşağıda kısa bir uygulama oluşturdum. Bu, rasgele boyutlandırılmış ve Pencere yüzeyinde bulunan dikdörtgenleri ve daireleri saniyede 50 kare kare hızında saniyede 1.700 çizilir.

1.700 kare başına çizilen sayıyı 17'ye ayarlamak ve Video kullanarak Pencere başlığında saniyedeki kare sayısını görüntülemek anlamına gelir. WindowCaption. Her çerçevede 17 dolu daire ve dikdörtgen çizer, 17 x 2 x 50 = 1.700. Bu rakam ekran kartına, CPU'ya vb. Bağlıdır. Etkileyici bir hız.

// David Bolton tarafından, http://cplus.about.com
Sistem kullanma;
Sistem kullanarak. Çizim;
SdlDotNet kullanarak. Grafik;
SdlDotNet kullanarak. Çekirdek;
SdlDotNet kullanarak. Grafik. Primitives;
genel sınıf ex1
{
özel sabit int genişlik = 1024;
ağırlık = 768;
özel statik Yüzey Ekranı;
özel statik Rastgele r = yeni Rastgele ();
public static void Main (dize [] argümanları)
{
Ekran = Video. SetVideoMode (genişlik, ağırlık, 32, yanlış, yanlış, yanlış, doğru);
Etkinlikler. TargetFps = 50;
Etkinlikler. Quit + = (QuitEventHandler);
Etkinlikler. Kene + = (TickEventHandler);
Etkinlikler. Çalıştırmak() ;
}
özel statik void QuitEventHandler (nesne gönderen, QuitEventArgs argümanları)
{
Etkinlikler. QuitApplication ();
}
özel statik geçersiz TickEventHandler (nesne gönderen, TickEventArgs args)
{
için (var i = 0; i <17; i ++)
{
var rect = yeni Dikdörtgen (yeni Nokta (r. Sonraki (genişlik - 100), r. Sonraki (wheight-100)),
yeni Boyut (10 + r. Sonraki (genişlik - 90), 10 + r. Sonraki (ağırlık - 90)));
var Col = Renk. Argb (r. Sonraki (255), r. Sonraki (255), r. Sonraki (255));
var CircCol = Renk. Argb (r. Sonraki (255), r. Sonraki (255), r. Sonraki (255));
kısa yarıçap = (kısa) (10 + r. Sonraki (ağırlık - 90));
var Circ = yeni Çember (yeni Nokta (r. Sonraki (genişlik - 100), r. Sonraki (ağırlık-100)), yarıçap);
Ekran. Dolgu (rekt, Col);
Circ. Draw (Ekran, CircCol, yanlış, doğru);
Ekran. Güncelleme() ;
Video. WindowCaption = Olaylar. Fps. ToString ();
}
}
}

Video, video modunu ayarlamak, video yüzeyleri oluşturmak, fare imlecini gizlemek ve göstermek ve OpenGL ile etkileşim kurmak için yöntemler sağlar. Bir süredir OpenGL yapacağımızdan değil.

Burada Video nesnesi, oyun Penceresinin boyutunu ve çözünürlüğünü ayarlamak için kullanılır (tam ekran bir seçenektir). SetVideoMode parametreleri bunları değiştirmenize izin verir ve 13 aşırı yükleme çok çeşitli sağlar. Doc klasöründe tüm sınıfları ve üyeleri belgeleyen bir .chm dosyası (Windows html yardım biçimi) vardır.

Events nesnesinin, kapanış mantığı eklemenize izin veren bir Quit events handler vardır ve Events'i çağırmalısınız. QuitApplication (), uygulamayı kapatan kullanıcıya yanıt vermek için. Olaylar. Kene muhtemelen en önemli olay işleyicisidir. Her kareyi belirtilen olay işleyiciyi çağırır. Bu, tüm SDL.NET geliştirme modelidir.

İstediğiniz kare hızını ayarlayabilirsiniz ve döngüyü 5'e düşürüp Hedeffps'i 150'ye değiştirerek saniyede 164 kare hızında çalıştırmayı başardık. TargetFps bir basketbol sahası figürüdür; sizi bu rakama ancak Olaylara yakınlaştırmak için gecikmelere neden olur. Fps teslim edilen şeydir.

SDL'nin orijinal Penceresiz sürümü gibi, SDL.NET de ekrana renderleme yapmak için yüzeyler kullanır. Bir grafik dosyasından bir yüzey oluşturulabilir. Piksellerin yanı sıra okumayı veya yazmayı mümkün kılan çok sayıda özellik ve yöntem vardır. grafik ilkelleri çizin, diğer yüzeyleri karıştırın, hatta bir yüzeyi almak için bir disk dosyasına dökün Ekran görüntüleri.

instagram story viewer