Programarea jocurilor în C # cu SDL.NET

click fraud protection

Una dintre problemele legate de open source este că, uneori, proiectele par să cadă pe margine sau să se transforme într-un mod confuz. Luați SDL.NET Ignorând site-ul de vânzare, o căutare pe web dezvăluie cs-sdl.sourceforge.net un proiect care pare să se fi oprit în noiembrie 2010. Nu credem că s-a oprit, ci doar arată.

Dacă nu știți C #, mai întâi va trebui să aflați cum să program în C #. Căutând în altă parte, am dat peste cadrul Tao legat pe site-ul Mono care pare să acopere aceeași zonă și să adăugăm suport pentru sunet etc. Dar uitându-se la sourceforge (din nou!), A fost înlocuit de OpenTK dar accentul este OpenGL. Cu toate acestea, include și OpenAL, astfel încât instalarea celor două (cs-sdl și OpenTK) părea a fi calea de urmat.

O parte din instalarea OpenTk a eșuat; NS (shader) pentru că nu avem VS 2008 instalat! Totuși, restul a fost în regulă. Am creat un proiect C # Console și am început să joc cu SDL.NET. Documentația online se găsește aici.

Privind în urmă, putem vedea că cadrul OpenTK nu era necesar ca atare, că SDL.NET a instalat totul, dar la vremea respectivă nu era clar. Încă folosește cadrul Tao Framework, chiar dacă dezvoltarea acestuia a fost înlocuită de OpenTK. Este puțin confuz și sperăm că echipa SDL.NET va scoate în viitor o versiune compatibilă OpenTk.

instagram viewer

Nu este, așa cum ne-am gândit, doar un SDL sub formă de înveliș subțire, ci adaugă o funcționalitate suplimentară considerabilă. Există o serie de clase oferite pentru a furniza următoarele:

Localizați cele două dll SDL.NET (SdlDotNet.dll și Tao. Sdl.dll) precum și dll-urile OpenTK și adăugați-le la referințele proiectului. După instalare, fișierele sunt localizate în fișierele de program \ SdlDotNet \ bin (pe un Windows de 32 biți și fișiere de program (x86) \ SdlDotNet \ bin pe Windows pe 64 de biți. Faceți clic dreapta pe secțiunea Referințe din Exploratorul de soluții, apoi faceți clic pe Adăugare referință și selectați fila Parcurgere. Acesta deschide un dialog Explorer și după localizarea dlls selectați apoi și faceți clic pe ok.

Un ultim lucru, faceți clic pe View \ Properties, astfel încât să deschidă paginile Proprietății și pe prima filă (Aplicație) Modificați tipul de ieșire din Aplicația consolă în Aplicația Windows. Dacă nu faceți acest lucru atunci când programul rulează și deschide fereastra principală SDL, va deschide și o fereastră de consolă.

Suntem gata acum să începem și am creat o scurtă aplicație mai jos. Aceasta blitte dreptunghiuri și cercuri și dimensiuni aleatorii localizate pe suprafața ferestrei la 1.700 trase pe secundă la o rată de cadru de 50 de cadre pe secundă.

Că 1.700 vine de la setarea numărului desenat pe cadru la 17 și afișarea cadrelor pe secundă în subtitlul Ferestre utilizând Video. WindowCaption. Fiecare cadru desenează 17 cercuri și dreptunghiuri, 17 x 2 x 50 = 1.700. Această cifră depinde de placa video, procesor etc. Este o viteză impresionantă.

// De David Bolton, http://cplus.about.com
folosind Sistem;
folosind System. Desen;
folosind SdlDotNet. Grafică;
folosind SdlDotNet. Core;
folosind SdlDotNet. Grafică. primitive;
clasa publică ex1
{
lățime const int = 1024;
private const int Wheight = 768;
Ecran privat de suprafață static;
private static Random r = new Random ();
public static void Main (string [] args)
{
Ecran = Video. SetVideoMode (lățime, Wheight, 32, false, false, false, adevărate);
Evenimente. TargetFps = 50;
Evenimente. Quit + = (QuitEventHandler);
Evenimente. Tick ​​+ = (TickEventHandler);
Evenimente. Alerga() ;
}
private static void QuitEventHandler (obiect expeditor, QuitEventArgs args)
{
Evenimente. QuitApplication ();
}
private static void TickEventHandler (obiect expeditor, TickEventArgs args)
{
for (var i = 0; i <17; i ++)
{
var rect = dreptunghi nou (punct nou (r. nou). Următorul (lățime - 100), r. Următorul (Wheight-100)),
Nou Dimensiune (10 + r. Următorul (lățime - 90), 10 + r. Următorul (Wheight - 90)));
var Col = Culoare. DinArgb (r. Următorul (255), r. Următorul (255), r. Următorul (255));
var CircCol = Culoare. DinArgb (r. Următorul (255), r. Următorul (255), r. Următorul (255));
rază scurtă = (scurtă) (10 + r. Următorul (Wheight - 90));
var Circ = new Circle (Punct nou (r.) Următorul (lățime - 100), r. Următorul (Wheight-100)), raza);
Ecran. Completare (rect, Col);
Circ. Draw (Ecran, CircCol, fals, adevărat);
Ecran. Actualizați() ;
Video. WindowCaption = Evenimente. Cps. ToString ();
}
}
}

Video oferă metode pentru setarea modului video, crearea suprafețelor video, ascunderea și afișarea cursorului mouse-ului și interacțiunea cu OpenGL. Nu că vom face OpenGL o vreme.

Aici obiectul video este folosit pentru a seta dimensiunea și rezoluția ferestrei jocului (ecranul complet este o opțiune). Parametrii pentru SetVideoMode vă permit să schimbați aceste, iar 13 suprasarcini oferă o multitudine de varietăți. Există un fișier .chm (format de ajutor Windows html) în folderul doc care documentează toate clasele și membrii.

Obiectul Evenimente dispune de un instrument de închidere a evenimentelor care vă permite să adăugați logica de închidere și ar trebui să apelați la Evenimente. QuitApplication () pentru ca acesta să răspundă utilizatorului care închide aplicația. Evenimentele. Tick ​​este posibil cel mai important gestionar de evenimente. Apelează gestionatorul de evenimente specificat la fiecare cadru. Acesta este modelul pentru toată dezvoltarea SDL.NET.

Puteți seta rata de cadru dorită și reducerea buclei la 5 și schimbarea Targetfps la 150 am reușit să o rulăm la 164 de cadre pe secundă. TargetFps este o figură de bilet; întârzie să te apropii de această cifră, dar evenimentele. Fps este ceea ce este livrat.

La fel ca versiunea originală a SDL, fără Window, SDL.NET folosește suprafețe pentru redarea pe ecran. O suprafață poate fi construită dintr-un fișier grafic. Există un număr mare de proprietăți și metode care fac posibilă citirea sau scrierea pixelilor desenați elementele grafice primitive, blit alte suprafețe, chiar aruncați o suprafață pe un fișier de disc pentru a lua capturi de ecran.

instagram story viewer