Írj egy játékot android c-nek az andengine használatával

Hello mindenkinek.
Ma elmondom neked, hogyan kell egy kis játékot írni az AndEngine segítségével. A nyáj meglehetősen nagynak bizonyult, és nem hordta az olvasót, amíg meg nem állunk az első részében. Az olvasótól csak annyit kell tudnia, hogy java, OOP és képes kezelni az Eclipse és az Android SDK-t. Előretekintve valami hasonlít a Mirrors Maze vagy a Laser Logic felé.






A cikk második része.
A cikk harmadik része.

Hogyan telepíthetem az Eclipse-t, az Android SDK-t, létrehozhatok projekteket és könyvtárakat is csatlakoztathatok, nem fogom, így azonnal eljutunk az üzletbe.

1. lépés: az amatőr számára. Letöltheti az AndEngine forrásait, és Android könyvtárként csatlakozhat a projekthez. Vagy vegye figyelembe a már elkészült példányokat .jar. Mindkét esetben szükséged lesz Mercurial-ra. akkor sem fogunk élni vele.
2. lépés: A projekt létrejön, az összes könyvtár kapcsolódik. Most képekre van szükségünk. Készítünk egy mappát a projektben:

Nos, vagy ahogy tetszik, és dobja el 2 képet. Egy háttér és a lézerünk.
Nincs több kép. Szia.
3. lépés: Nos, mióta elkezdtük a képeket, akkor egy kis osztályt fogunk írni, amelyet inicializálni fogunk.
nyilvános osztály Textúrák

magán textúra mTexture;
magán TextureRegion mLaserGunTextureRegion, mBackgroundTextureRegion;

nyilvános Textúrák (végleges BaseGameActivity aktivitás, végső motor motor) Log.i ("Laser Logic". "onLoadResources");
ez .mTexture = új textúra (1024, 512,
TextureOptions.BILINEAR_PREMULTIPLYALPHA);
ez .mLaserGunTextureRegion = TextureRegionFactory.createFromAsset (
ez a .mTexture, tevékenység, "gfx / laser_gun.png". 800, 0);
ez .mBackgroundTextureRegion = TextureRegionFactory.createFromAsset (
ez a .mTexture, tevékenység, "gfx / laser_logic_background.png". 0, 0);
engine.getTextureManager () loadTexture (ez a .mTexture);
>

nyilvános TextureRegion getBackground () return mBackgroundTextureRegion;
>

nyilvános TextureRegion getLaserGun () return mLaserGunTextureRegion;
>

* Ez a forráskód megjelent a forráskód kiemelővel.

Mi történik általában ebben a kódban? Először létrehozunk mTexture-t, ez lesz az atlaszunk. Nagyon fontos, hogy dimenziói kettő hatáskörének többszöröse, mert az OpenGL nem érti a textúrák más dimenzióit. Következő képeket adunk hozzá atlaszunkhoz. És ügyeljünk arra, hogy ne zavarjanak. A lézerünk számára az átlátszó háttér nagyon fontos, ezért minden esetben PNG-t használunk. A háttérben pedig nem fontos, hogy milyen formátumban tárolja azt. Nos, és minden manipuláció után egy loadTexture () eljárást indítunk, akkor az atlaszt használhatjuk.







4. lépés: A letöltött textúrák, most nézzük meg, mit kaptunk.

a Public Class StageActivity kiterjeszti a BaseGameActivity programot

privát statikus végleges int CAMERA_WIDTH = 800;
privát statikus végleges int CAMERA_HEIGHT = 480;
privát statikus utolsó int NUMBER_OF_LAYERS = 2;

privát kamera mCamera;
magán Textúrák mTextures;

@Override
public void onLoadComplete () <>

@Override
public Engine onLoadEngine () ezt mCamera = új kamera (0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);
végleges EngineOptions options = új EngineOptions (igaz,
ScreenOrientation.LANDSCAPE, az új RatioResolutionPolicy (
getScreenResolutionRatio ()), ez a .mCamera);
vissza az új motor (opciók);
>

@Override
public void onLoadResources () mTextures = új Textúrák (ez .getEngine ());
>

@Override
public Scene onLoadScene () Ln.i ("OnLoadScene");
ez .mEngine.registerUpdateHandler (új FPSLogger ());

végleges Jelenet = új jelenet (NUMBER_OF_LAYERS);
scene.setBackground (új SpriteBackground (új Sprite (0, 0, mTextures
.getBackground ())));
scene.getFirstChild (). attachChild (új Sprite (0, 0, mTextures.getLaserGun ()));
visszatérő jelenet;
>

privát úszó getScreenResolutionRatio () DisplayMetrics dm = új DisplayMetrics ();
getWindowManager () getDefaultDisplay () getMetrics (dm);
return ((úszás) dm.widthPixels) / ((float) dm.heightPixels);
>

* Ez a forráskód megjelent a forráskód kiemelővel.
Ez a mi fő tevékenységünk, remélem, nem kell elmagyarázni, mi az, amit később haladéktalanul örökölnünk kell a BaseGameActivity-ból, különben nem fogunk sikerülni. Ezt követően az IDE 4 módszert kíván újradefiniálni. Ezeket úgy hívják, hogy onLoadEngine-> onLoadResources-> onLoadScene-> onLoadComplete. Kezdjük a lánc kezdetével, inicializáljuk a fényképezőgépet és magát a motort. Különös figyelmet fordítok a getScreenResolutionRatio () metódusra. Köszönet illeti, a kapott kép a teljes képernyőre feszül. Ebben az esetben az arányokat nem tartják be. Vagy el tudjuk hagyni a fényképezőgép arányait, és akkor a játékunk nem fogja az egész képernyőt egyes eszközökön elfoglalni. Természetesen van egy harmadik lehetőség - az inicializálás megírása az összes képernyőmérethez, de természetesen ezt most nem tesszük.

Ezután rakja be a textúráinkat, amelyeket az onLoadScene alkalmazásban használunk. Az FPSLogger - a kereteket a naplókban adja ki. A scene.getFirstChild () furcsa megjelenési formája visszatér a jelenetünk felső rétegére. Természetesen a felső réteg nélkül is megtehetjük, ha objektumokat közvetlenül a jelenethez adunk hozzá, de még mindig kényelmesebb tudni, hogy melyik réteget adjuk hozzá.
Most már láthatjuk, mi történt.

Írj egy játékot android c-nek az andengine használatával

Az első rész elég. A projekt kódját megtalálja a SourceForge-ban.
Köszönöm a figyelmet.




Kapcsolódó cikkek