В сегодняшней статье я расскажу о простых компонентах для написания игр для Android
используя AndEngine. Покажу как добавить sprite и score-текст на экран.
Пожалуй начнем.
Прежде всего нам необходимо заменить Activity на BaseGameActivity и переопределить методы.
После этого наш класс должен выглядеть вот так:
AndEnginePart2Activity.java
Если все получилось, можно продолжать. Теперь непосредственно о загрузке, добавлении компонентов на сцену.
Для начала добавим ещё один класс Monster.java. Функционала в него никакого добавлять не будем, только наследуем его от класса Sprite.
Monster.java
Теперь изменим наш AndEnginePart2Activity.java класс. Выглядеть он будет вот так:
Вот такая структура нашего приложения получилась:
И вот результат наших стараний ( пока что только моих :) ) :
Кому необходимо вот монстр -> Monster
Вот и все. С основами остановимся пока на этом. Удачи в написании игр для Android :)
используя AndEngine. Покажу как добавить sprite и score-текст на экран.
Пожалуй начнем.
Прежде всего нам необходимо заменить Activity на BaseGameActivity и переопределить методы.
После этого наш класс должен выглядеть вот так:
AndEnginePart2Activity.java
packagecom.lunevich.andengine;importorg.anddev.andengine.engine.Engine;importorg.anddev.andengine.entity.scene.Scene;importorg.anddev.andengine.ui.activity.BaseGameActivity;public classAndEnginePart2ActivityextendsBaseGameActivity {// В onLoadEngine мы инициализируем движок@OverridepublicEngine onLoadEngine() {// TODO Auto-generated method stubreturn null; }// В onLoadResources мы будем загружать ресурсы, // необходимые для нашего приложения, картинки, музыка, и т.д...@Overridepublic voidonLoadResources() {// TODO Auto-generated method stub}// В onLoadScene мы создаем сцену@OverridepublicScene onLoadScene() {// TODO Auto-generated method stubreturn null;}@Overridepublic voidonLoadComplete() {// TODO Auto-generated method stub} }
Если все получилось, можно продолжать. Теперь непосредственно о загрузке, добавлении компонентов на сцену.
Для начала добавим ещё один класс Monster.java. Функционала в него никакого добавлять не будем, только наследуем его от класса Sprite.
Monster.java
packagecom.lunevich.andengine;importorg.anddev.andengine.entity.sprite.Sprite;importorg.anddev.andengine.opengl.texture.region.TextureRegion;public classMonsterextendsSprite {publicMonster(floatpX,floatpY, TextureRegion pTextureRegion) {super(pX, pY, pTextureRegion);// TODO Auto-generated constructor stub} }
Теперь изменим наш AndEnginePart2Activity.java класс. Выглядеть он будет вот так:
packagecom.lunevich.andengine;importorg.anddev.andengine.engine.Engine;importorg.anddev.andengine.engine.camera.Camera;importorg.anddev.andengine.engine.handler.IUpdateHandler;importorg.anddev.andengine.engine.options.EngineOptions;importorg.anddev.andengine.engine.options.EngineOptions.ScreenOrientation;importorg.anddev.andengine.engine.options.resolutionpolicy.RatioResolutionPolicy;importorg.anddev.andengine.entity.scene.Scene;importorg.anddev.andengine.entity.scene.background.ColorBackground;importorg.anddev.andengine.entity.text.ChangeableText;importorg.anddev.andengine.entity.util.FPSLogger;importorg.anddev.andengine.opengl.font.Font;importorg.anddev.andengine.opengl.texture.TextureOptions;importorg.anddev.andengine.opengl.texture.atlas.bitmap.BitmapTextureAtlas;importorg.anddev.andengine.opengl.texture.atlas.bitmap.BitmapTextureAtlasTextureRegionFactory;importorg.anddev.andengine.opengl.texture.region.TextureRegion;importorg.anddev.andengine.ui.activity.BaseGameActivity;importandroid.content.Context;importandroid.graphics.Color;importandroid.graphics.Typeface;importandroid.view.Display;importandroid.view.WindowManager;public classAndEnginePart2ActivityextendsBaseGameActivity {privateDisplaydisplay;private static intCAMERA_WIDTH= 0;private static intCAMERA_HEIGHT= 0;privateCamera mCamera;privateScene mScene;privateBitmapTextureAtlasmFontTexture;privateFont mFont;privateBitmapTextureAtlas mBitmapTextureAtlas;privateTextureRegion monsterTexture;privateMonster monster;privateChangeableText scoreText;// В onLoadEngine мы инициализируем движок@OverridepublicEngine onLoadEngine() {// TODO Auto-generated method stubWindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE); display = wm.getDefaultDisplay();// Получаем ширину и высоту нашего экранаCAMERA_WIDTH = display.getWidth(); CAMERA_HEIGHT = display.getHeight();// Создаем камеруthis.mCamera =newCamera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);// Создаем движокreturn newEngine(newEngineOptions(true, ScreenOrientation.LANDSCAPE,newRatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT),this.mCamera)); }// В onLoadResources мы будем загружать ресурсы, // необходимые для нашего приложения, картинки, музыка, и т.д...@Overridepublic voidonLoadResources() {// TODO Auto-generated method stub// Создаем новую текстуру 256х256, помните её размер должен быть кратный 2this.mBitmapTextureAtlas =newBitmapTextureAtlas(256, 256, TextureOptions.BILINEAR_PREMULTIPLYALPHA);// Создаем тектуру для текстаthis.mFontTexture =newBitmapTextureAtlas(256, 256, TextureOptions.BILINEAR);// Загружаем тектуру монстраthis.monsterTexture = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mBitmapTextureAtlas,this, "monster/monster.png", 0, 0);// Создаем шрифтthis.mFont =newFont(this.mFontTexture, Typeface.create(Typeface.DEFAULT, Typeface.BOLD),32,true, Color.BLACK);this.mFont.prepareLetters("1234567890".toCharArray());// Загружаем тектуры и шрифт в памятьthis.mEngine.getTextureManager().loadTexture(this.mBitmapTextureAtlas);this.mEngine.getTextureManager().loadTexture(this.mFontTexture);this.mEngine.getFontManager().loadFont(this.mFont); }// В onLoadScene мы создаем сцену@OverridepublicScene onLoadScene() {// TODO Auto-generated method stubthis.mEngine.registerUpdateHandler(newFPSLogger());// Создаем сценуmScene =newScene();// Устанавливаем цвет фона сценыmScene.setBackground(newColorBackground(0.96f, 0.9215f, 0.8157f));// Создаем нашего монстра и устанавливаем его на определенную позициюmonster =newMonster(CAMERA_WIDTH / 2, CAMERA_HEIGHT -200,this.monsterTexture);// Добавляем монстра на нашу сценуmScene.attachChild(monster);// Создаем score-текстscoreText = new ChangeableText(CAMERA_WIDTH - 220, 20, this.mFont, "Score :", "Score : XXXXX".length());// Добавляем текст на нашу сценуmScene.attachChild(scoreText);// Создаем цикл нашей сцены, в этом примере мы ничего не будет там делатьmScene.registerUpdateHandler(newIUpdateHandler() {@Overridepublic voidonUpdate(floatarg0) {// Расположение этой строки здесь только для примераscoreText.setText("Score : " + AndEnginePart2Activity.this.mEngine.getSecondsElapsedTotal());// ...}@Overridepublic voidreset() {// ...} });returnmScene; }@Overridepublic voidonLoadComplete() {// TODO Auto-generated method stub} }
Вот такая структура нашего приложения получилась:
И вот результат наших стараний ( пока что только моих :) ) :
Вот и все. С основами остановимся пока на этом. Удачи в написании игр для Android :)


Спасибо
ОтветитьУдалить