Məsləhətlər

SDL.NET Tutorial One istifadə edərək C # -də proqramlaşdırma oyunları

SDL.NET Tutorial One istifadə edərək C # -də proqramlaşdırma oyunları

Açıq mənbə ilə əlaqəli problemlərdən biri layihələrin bəzən yol kənarına düşdüyünü və ya çaşdırıcı dönüşlər göstərməsidir. SDL.NET edin. Satış üçün veb saytı görməməzliyə vuraraq, İnternetdə bir axtarış cs-sdl.sourceforge.net, 2010-cu ilin Noyabr ayında dayandırıldığı görünən bir layihə ortaya qoyur. Düşünmürük ki, dayandı, ancaq olduğu kimi görünür.

C # bilmirsinizsə, əvvəlcə C # -də necə proqram qurmağı öyrənməlisiniz. Başqa bir yerə baxdıqda, eyni bölgəni əhatə edən və səs və s. Üçün dəstək əlavə edən kimi görünən Mono veb saytında bağlanmış Tao çərçivəsinə rast gəldik. Amma mənbəyə baxaraq (yenə!), OpenTK ilə əvəz olundu, lakin diqqət mərkəzində OpenGL var. Bununla birlikdə, OpenAL da daxildir, buna görə ikisini (cs-sdl və OpenTK) quraşdırmaq irəliyə gedən yol kimi görünürdü.

OpenTk quraşdırmasının bir hissəsi uğursuz oldu; NS (shader), çünki VS 2008 quraşdırılmamışıq! Ancaq qalan hissəsi tamam oldu. C # Console layihəsini yaratdıq və SDL.NET ilə oynamağa başladıq. Onlayn sənədlərlə buradan tanış ola bilərsiniz.

Geriyə baxsaq, OpenTK çərçivəsinin elə lazım olmadığını, SDL.NET hər şeyi quraşdırdığını, lakin o zaman aydın olmadığını görə bilərik. İnkişafı OpenTK üstün tutduğuna baxmayaraq hələ də Tao Çərçivəsindən istifadə edir. Bir az qarışıqdır və ümid edirik ki, SDL.NET komandası gələcəkdə OpenTk uyğun versiyasını çıxaracaqdır.

Məhz SDL.NET nədir?

Düşündüyümüz kimi, sadəcə nazik bir sarğı yuvarlaq bir SDL deyil, əksinə xeyli əlavə funksionallıq yaradır. Aşağıdakıları təmin etmək üçün bir sıra siniflər var.

  • Taymerlər
  • Sprites, animasiya və Mətn daxil olmaqla təmin edir
  • 2D və OpenGl üçün səthlər təqdim edir
  • Film yükləmə və oynamaq üçün dəstək verir
  • Audio üçün dəstək verir
  • Bezier, çoxbucaqlı (və toxumalar), kvadrat, dairə, xətt, pasta rəsmini təqdim edir
  • Emissiya edənlər və sprites və manipulyatorlarla hissəcik dəstəyi təmin edir.
  • Səthi ortaq bir şəkilBox vasitəsilə Windows formaları ilə əlaqəni təmin edir.

Hazırlıqlar

Bunu qurmaq üçün etməli olduğunuz bir neçə şey var. Budur:

İki SDL.NET dlls (SdlDotNet.dll və Tao.Sdl.dll), eləcə də OpenTK dlls tapın və layihə arayışlarına əlavə edin. Quraşdırıldıqdan sonra dlls Proqram Faylları SdlDotNet bində (32 bitli Windows və Proqram Faylları (x86) SdlDotNet bində 64 bit Windows-da yerləşir. Həll Explorer-dəki İstinadlar bölməsini sağ vurun və Arayış əlavə et seçin və seçin Explorer sekmesini açır və dlls yerini tapdıqdan sonra seçin və ok düyməsini basın.

SDL.NET SDL dəstini dlls istifadə edir və onları lib qovluğu altında quraşdırır. Onları silməyin!

Son bir şey, Görünüş Xüsusiyyətləri üzərinə vurun ki, Mülk səhifələrini açın və ilk nişanda (Tətbiq) Çıxış növünü Konsol Tətbiqindən Windows Tətbiqinə dəyişdirin. Proqram ilk işlədikdə və SDL əsas pəncərəsini açanda bunu etmirsinizsə, konsol pəncərəsini də açacaqdır.

İndi başlamağa hazırıq və aşağıda qısa bir proqram yaratdım. Bu, təsadüfi ölçülü və düzbucaqlı və dairə şəklini Pəncərə səthində saniyədə 50 kadr sürəti ilə 1700 çəkilmiş dərəcədə vurur.

Bu 1700, hər kvadrat başına çəkilən sayın 17-yə qoyulması və Video.WindowCaption istifadə pəncərə başlığında saniyədə çərçivələrin göstərilməsindən irəli gəlir. Hər bir çərçivə 17 doldurulmuş dairə və düzbucaqlı çəkir, 17 x 2 x 50 = 1,700. Bu rəqəm video kartdan, CPU-dan və s. Asılıdır. Bu təsir edici bir sürətdir.

// Devid Bolton, //cplus.about.com
Sistemdən istifadə;
System.Drawing istifadə edərək;
SdlDotNet.Graphics istifadə;
SdlDotNet.Core istifadə;
SdlDotNet.Graphics.Qiymətləndiricilərdən istifadə;
ictimai sinif ex1
{
xüsusi const int genişliyi = 1024;
xüsusi const int art = 768;
xüsusi statik səth ekranı;
xüsusi statik Random r = yeni Random ();
ictimai statik boşluq Əsas (string args)
{
Ekran = Video.SetVideoMode (eni, boyu, 32, yalan, yalan, yalan, həqiqi);
Hadisələr.TargetFps = 50;
Hadisələr.Quit + = (QuitEventHandler);
Hadisələr.Tick + = (TickEventHandler);
Hadisələr.Run ();
}
Şəxsi statik boşluq QuitEventHandler (obyekt göndərən, QuitEventArgs args)
{
Hadisələr.QuitApplication ();
}
Şəxsi statik boşluq TickEventHandler (obyekt göndərən, TickEventArgs args)
{
üçün (var i = 0; i <17; i ++)
{
var rect = yeni Düzbucaq (yeni nöqtə (r.Next (en-100), r.Next (wheight-100)),
yeni Ölçü (10 + r.Növbəti (eni - 90), 10 + r.Növ (ölçmə - 90)));
var Col = Rəng.FromArgb (r.Next (255), r.Next (255), r.Next (255));
var CircCol = Rəng.FromArgb (r.Next (255), r.Next (255), r.Next (255));
qısamüddətli radius = (qısa) (10 + r. Növbəti (işıqlı - 90));
var Circ = yeni dairə (yeni Point (r.Next (en-100), r.Next (wheight-100)), radius);
Screen.Fill (düz, Col);
Circ.Draw (Ekran, CircCol, yalan, həqiqət);
Screen.Update ();
Video.WindowCaption = Hadisələr.Fps.ToString ();
}
}
}

Obyekt yönümlü inkişaf

SDL.NET çox obyekt yönümlüdür və hər SDL.NET tətbiqində istifadə olunan iki əvvəlcədən təyin edilmiş obyekt var.

Video, video rejimini qurmaq, video səthləri yaratmaq, siçan kursorunu gizlətmək və göstərmək və OpenGL ilə qarşılıqlı əlaqə yaratmaq üçün metodlar təqdim edir. Bir müddətdir OpenGL edəcəyik deyilik.

Hadisələr sinifində istifadəçi girişi və digər müxtəlif hadisələri oxumaq üçün əlavə edilə bilən hadisələr var.

Burada Video obyekti oyun pəncərəsinin ölçüsünü və qətnaməsini təyin etmək üçün istifadə olunur (tam ekran bir seçimdir). SetVideoMode üçün parametrlər bu və 13 yüklənməni dəyişməyə imkan verir. Bütün sinifləri və üzvlərini sənədləşdirən sənəd qovluğunda .chm faylı (Windows html kömək formatı) var.

Hadisələr obyekti, məntiqinizi bağlamağa imkan verən Çıxış hadisələrini tənzimləyicisinə malikdir və tətbiqi bağlayan istifadəçiyə cavab vermək üçün Events.QuitApplication () adlandırmalısınız. Hadisələr.Tick bəlkə də ən vacib hadisə idarəedicisidir. Göstərilən hadisə idarəedicisini hər bir çərçivəyə çağırır. Bu, bütün SDL.NET inkişafı üçün modeldir.

İstədiyiniz çərçivə sürətini və döngəmi 5-ə endirə və Targetfps'i 150-ə dəyişdirərək saniyədə 164 kadr sürətləndirə bilərsiniz. TargetFps bir top parkı rəqəmidir; bu rəqəmə yaxınlaşmağınız üçün gecikmələr qoyur, ancaq hadisələr.Fps çatdırılır.

Səthlər

SDL-in orijinal pəncərəsiz versiyası kimi, SDL.NET ekrana göstərmək üçün səthlərdən istifadə edir. Bir səth qrafik sənədindən tikilə bilər. Ekran görüntülərini almaq üçün bir piksel oxumaq və ya yazmaq, qrafik primitivləri çəkmək, digər səthləri blit etmək, hətta bir səthini disk sənədinə atmaq üçün çox sayda xüsusiyyət və metod var.

SDL> NET oyun yaratmağınız üçün hər şeyi təmin edir. Növbəti bir neçə dərslikdəki müxtəlif xüsusiyyətlərə baxacağıq və sonra oyun yaratmağa keçəcəyik.