Spēļu programmēšana C #, izmantojot SDL.NET

Viena no atklātā pirmkoda problēmām ir tā, ka projekti dažreiz šķiet nederīgi vai apņemas sajaukt. Veikt SDL.NET. Ignorējot vietni, kas tiek pārdota, atklājas meklēšana tīmeklī cs-sdl.sourceforge.net projekts, kas, šķiet, apstājās 2010. gada novembrī. Mēs nedomājam, ka tas ir apstājies, bet tikai izskatās, ka ir.

Ja jūs nezināt C #, jums vispirms būs jāiemācās to izdarīt programma C #. Skatoties citur, mēs saskārāmies ar Tao ietvaru, kas ir saistīts ar Mono vietni, kas, šķiet, aptver to pašu apgabalu un pievienojot atbalstu skaņai utt. Bet, skatoties uz Sourceforge (atkal!), Tas ir aizstāts ar OpenTK bet uzmanības centrā ir OpenGL. Tomēr tajā ietilpst arī OpenAL, tāpēc divu (cs-sdl un OpenTK) instalēšana šķita tālākais ceļš.

Daļa OpenTk instalēšanas neizdevās; NS (shader), jo mums nav instalēta VS 2008! Tomēr pārējais bija ok. Mēs izveidojām C # konsoles projektu un sākām spēlēt ar SDL.NET. Tiešsaistes dokumentāciju var atrast šeit.

Atskatoties atpakaļ, mēs redzam, ka OpenTK ietvars kā tāds nebija vajadzīgs, ka SDL.NET instalēja visu, bet tas tolaik nebija skaidrs. Tas joprojām izmanto Tao ietvaru, kaut arī tā attīstību ir aizstājusi OpenTK. Tas ir nedaudz mulsinoši, un mēs ceram, ka SDL.NET komanda nākotnē parādīs ar OpenTk saderīgu versiju.

instagram viewer

Tas, kā mēs domājām, nav tikai plāns SDL apvalks, bet sniedz ievērojamu papildu funkcionalitāti. Piedāvātas vairākas klases, lai nodrošinātu:

Atrodiet divus SDL.NET DLL (SdlDotNet.dll un Tao. Sdl.dll), kā arī OpenTK DLL, un pievienojiet tos projekta atsaucēm. Pēc instalēšanas dll atrodas mapē Program Files \ SdlDotNet \ bin (32 bitu Windows un Program Files (x86) \ SdlDotNet \ bin 64 bitu Windows). Ar peles labo pogu noklikšķiniet uz sadaļu Atsauces risinājumu pārlūkā, pēc tam noklikšķiniet uz Pievienot atsauci un atlasiet cilni Pārlūkot. Tiek atvērts Explorer dialoglodziņš un pēc DLL atrašanas atlasiet pēc tam un noklikšķiniet uz ok.

Visbeidzot, noklikšķiniet uz Skatīt \ Rekvizīti, lai tas atvērtu lapas Īpašums un pirmajā cilnē (Lietojumprogramma) Mainiet izvades veidu no konsoles lietojumprogrammas uz Windows lietojumprogrammu. Ja jūs to nedarāt, kad programma pirmo reizi palaiž un atver SDL galveno logu, tā atvērs arī konsoles logu.

Tagad mēs esam gatavi sākt un zemāk esmu izveidojis īsu lietojumprogrammu. Tas nolaiž nejauša lieluma un taisnstūrus un apļus uz loga virsmas ar ātrumu 1700, kas ievilkts sekundē ar kadru ātrumu 50 kadri sekundē.

Šis 1700 rodas, iestatot uz kadru novilkto numuru uz 17 un parādot kadrus sekundē loga parakstā, izmantojot video. WindowCaption. Katrā rāmī tas uzzīmē 17 piepildītus apļus un taisnstūrus, 17 x 2 x 50 = 1,700. Šis skaitlis ir atkarīgs no videokartes, CPU utt. Tas ir iespaidīgs ātrums.

// Autors: Deivids Boltons, http://cplus.about.com
izmantojot Sistēmu;
izmantojot sistēmu. Zīmējums;
izmantojot SdlDotNet. Grafika;
izmantojot SdlDotNet. Kodols;
izmantojot SdlDotNet. Grafika. Primitīvas;
sabiedrības klase ex1
{
privāts const int platums = 1024;
privāts const intight = 768;
privāts statisks virsmas ekrāns;
privāts statisks nejaušs r = jauns nejaušs ();
public static void Main (virkne [] args)
{
Ekrāns = video. SetVideoMode (platums, ritenis, 32, nepatiess, nepatiess, nepatiess, patiess);
Notikumi. TargetFps = 50;
Notikumi. Atmest + = (QuitEventHandler);
Notikumi. Atzīmējiet + = (TickEventHandler);
Notikumi. Skrien ();
}
privāts statisks void QuitEventHandler (objekta sūtītājs, QuitEventArgs args)
{
Notikumi. QuitApplication ();
}
privāts statisks void TickEventHandler (objekta sūtītājs, TickEventArgs args)
{
par (var i = 0; i <17; i ++)
{
var rect = jauns taisnstūris (jauns punkts (r. Nākamais (platums - 100), r. Nākamais (100 riteņi)
jauns izmērs (10 + r. Nākamais (platums - 90), 10 + r. Nākamais (ritenis - 90)));
var Col = krāsa. FromArgb (r. Nākamais (255), r. Nākamais (255), r. Nākamais (255);
var CircCol = krāsa. FromArgb (r. Nākamais (255), r. Nākamais (255), r. Nākamais (255);
īss rādiuss = (īss) (10 + r. Nākamais (riteņiem - 90));
var Circ = jauns aplis (jauns punkts (r. Nākamais (platums - 100), r. Nākamais (ritenis-100)), rādiuss);
Ekrāns. Aizpildiet (taisni, Kol);
Aplis Draw (Screen, CircCol, false, true);
Ekrāns. Atjaunināt() ;
Video. WindowCaption = Notikumi. Fps. ToString ();
}
}
}

Video nodrošina metodes video režīma iestatīšanai, video virsmu izveidošanai, peles kursora paslēpšanai un parādīšanai, kā arī mijiedarbībai ar OpenGL. Ne tas, ka mēs kādu laiku darīsim OpenGL.

Šeit video objekts tiek izmantots, lai iestatītu spēles loga izmēru un izšķirtspēju (opcija ir pilnekrāna režīms). SetVideoMode parametri ļauj mainīt šos parametrus, un 13 pārslodzes nodrošina daudz dažādu iespēju. Doc mapē ir .chm fails (Windows html palīdzības formāts), kurā tiek dokumentētas visas klases un dalībnieki.

Objektam Notikumi ir apstrādātāju Iziet no notikumiem, kas ļauj pievienot slēgšanas loģiku un jums vajadzētu piezvanīt uz Notikumi. QuitApplication (), lai tā reaģētu uz lietotāju, kurš aizver lietojumprogrammu. Notikumi. Iespējams, ka ķeksīte ir vissvarīgākais notikumu apstrādātājs. Tas izsauc norādīto notikumu apstrādātāju katram kadram. Šis ir SDL.NET attīstības modelis.

Jūs varat iestatīt vēlamo kadru ātrumu un manu, samazinot cilpu līdz 5 un mainot Targetfps uz 150, mēs to ieguvām ar ātrumu 164 kadri sekundē. TargetFps ir bumbiņu laukuma figūra; tā kavējas, lai jūs pietuvinātu šim skaitlim, bet ne notikumiem. Fps ir tas, kas tiek piegādāts.

Tāpat kā sākotnējā SDL versija, kas nav Windowed, arī SDL.NET izmanto virsmas, kuras tiek parādītas ekrānā. No grafikas faila var izveidot virsmu. Ir liels skaits īpašību un metožu, kas ļauj nolasīt vai rakstīt arī pikseļus uzzīmējiet grafikas primitīvus, salieciet citas virsmas, pat nometiet virsmu diska failam uzņemšanai ekrānuzņēmumi.

instagram story viewer