VEP verseny
Az utóbbi időben ezerrel dolgoztam a sulis és egyéb projektjeimen, ezek közül szeretnék bemutatni egyet az előbbiek közül:
Codename Z: Incomplete Operation
A Vizuális Eseményvezérelt Programozás nevű óra keretében kaptuk a feladatot, hogy írjunk egy játékot, úgyhogy írtam egyet. Persze azért ebben rengeteg órányi munka és legfőképp korábbi tapasztalat van, szóval így könyű (könnyebb), hogy nem idén látok először programkódot. A játékkal meg is nyertem az első díjat a tárgyhoz tartozó programozási versenyen, amin minden osztályból a legjobb féléves munkák indultak.
Maga a játék szörnyen egyszerű, A pontból B pontba el kell jutni egy darabban, közben zombik és trollface-ek hada próbál megállítani minket, és ha ez nem lenne elég, a létesítmény automata biztonsági rendszere is az ellenségünk! De nem kell kétségbe esni, a pálya tele van lőszerrel és elsősegélycsomagokkal.
Felülnézetben fedezhetjük fel ezt a veszélyes világot, ahol fontos szerepet játszanak a fények. Ez már az elején nyilvánvalóvá vált, hogy fények nélkül túl üres lenne a pálya, így viszont jelentős szerepet kap a történet során az elemlámpa, melyet az F gombbal tudunk ki és be kapcsolni (Xbox Controller esetén B). A pálya több részén is koromsötétben kell utat találnunk, és közben visszaverni az ellenfeleket, de szerencsére ahogy mi sem látunk a sötétben, ők sem! Viszont ha túl közel kerülsz hozzájuk, megérzik a jelenléted!
Az irányítás:
(Az Xbox Controller-t automatikusan felismeri indításkor, ha be van dugva. Felismer más gamepadokat is, de a gombok kiosztása azoknál eltérő lehet)
És persze nem utolsó sorban itt van a lényeg, maga a játék:
http://vbstudio.hu/games/codenamez-incomplete-operation
A programhoz a következőknek kell telepítve lenniük:
- Microsoft .NET Framework 2.0
- Visual C++ Redistributable x86
- DirectX 9.0 vagy újabb (csak az Xbox Controllerhez kell, a program elindul nélküle is)
Az utóbbi kettő, ha van játék a gépeden, akkor már valószínűleg telepítve van.
Jó szórakozást! ;)
Most, hogy a lényeget már letöltötted, jön a kevésbé érdekes rész, a technikai infó :D
Hogy a félreértéseket elkerüljük, most előre kijelentem: a játék nem használ DirectX-et a megjelenítésre! OpenGL-t sem. Az egész játék a .NET 2.0 rendszer GDI+ API-ját használja a grafikák kirajzolására. Részben ezt, és részben közvetlenül végez számításokat a memóriában. Ez az összetettebb képszámolásoknál kell, a fények kirajzolásánál, illetve az ütközéstérkép olvasásánál, mert ezeknél rendkívűl fontos a sebesség, és a beépített Bitmap.GetPixel() nem képes ezt a teljesítményt szolgáltatni. Ennek az oka egyszerűen az, hogy a GetPixel() minden híváskor lezárja a bitmapot a memóriában, kiolvassa azt az egy pixelt, aztán fölszabadítja, és ezután a kiolvasott pixelnek még létrehoz külön egy Color objektumot. A közvetlen memória írásnál és olvasásnál csak egyszer zárja le a bitmapot, és addig nem szabadítja fel, amíg az összes pixelműveletet el nem végezte, a pixeleket pedig byte formájában olvassa ki pointer-ek segítségével.
A program egyetlen egy helyen használ DirectX-et, mégpedig a joystick kezeléséhez.
A hangokat az irrKlang hang library biztosítja. Csak ajánlani tudom, mert bárki számára szörnyen egyszerű a használata. Az alábbi linken érhető el:
http://www.ambiera.com/irrklang/