Вторник, 20.11.2018, 18:51
Поиск
Никнэйм
Сертификат на никнейм Olelucoye, зарегистрирован на Тимофеев Константин Михайлович
Зарегистрируй свой никнейм
Обратная связь
olelucoye.tk@yandex.ru
Реклама AdSense
Реклама
Друзья сайта
  • Лига медицинского права
  • Гостиница "Зай"
  • FAQ по системе
  • Инструкции для uCoz
  • Главная » Статьи » libGDX

    Игра Flower. Ловим капли. Листинг главного класса.

    Полный листинг класса FlowerGame.

    import java.util.Iterator;
    import com.badlogic.gdx.ApplicationAdapter;
    import com.badlogic.gdx.Gdx;
    import com.badlogic.gdx.Input.Keys;
    import com.badlogic.gdx.audio.Music;
    import com.badlogic.gdx.audio.Sound;
    import com.badlogic.gdx.graphics.GL20;
    import com.badlogic.gdx.graphics.OrthographicCamera;
    import com.badlogic.gdx.graphics.Texture;
    import com.badlogic.gdx.graphics.g2d.BitmapFont;
    import com.badlogic.gdx.graphics.g2d.SpriteBatch;
    import com.badlogic.gdx.graphics.g2d.TextureAtlas;
    import com.badlogic.gdx.graphics.g2d.TextureRegion;
    import com.badlogic.gdx.math.MathUtils;
    import com.badlogic.gdx.math.Rectangle;
    import com.badlogic.gdx.math.Vector3;
    import com.badlogic.gdx.utils.Array;
    import com.badlogic.gdx.utils.TimeUtils;
    public class FlowerGame extends ApplicationAdapter {
        SpriteBatch batch;
        Texture dropImage;
        Texture gameOver;
        Texture win;
        Sound dropSound;
        Music rainMusic;
        OrthographicCamera camera;
        Rectangle bucket, raindrop;
        Vector3 touchPos;
        Array<Rectangle> raindrops;
        long lastDropTime;
        TextureAtlas potatlas;
        TextureRegion[] pots;
        int progress = 0;
        int dropCatched = 0;
        int dropOver = 0;
          
        @Override
        public void create () {
            batch = new SpriteBatch();
            font = new BitmapFont();
            dropImage = new Texture("drop.png");
            gameOver = new Texture("game_over.png");
            win = new Texture("win.png");
            
            potatlas = new TextureAtlas(Gdx.files.internal("pots/potatlas.atlas"));
            pots = new TextureRegion[7];
            pots[0] = potatlas.findRegion("pot0");
            pots[1] = potatlas.findRegion("pot1");
            pots[2] = potatlas.findRegion("pot2");
            pots[3] = potatlas.findRegion("pot3");
            pots[4] = potatlas.findRegion("pot4");
            pots[5] = potatlas.findRegion("pot5");
            pots[6] = potatlas.findRegion("pot6");
            dropSound = Gdx.audio.newSound(Gdx.files.internal("drop.wav"));
            rainMusic = Gdx.audio.newMusic(Gdx.files.internal("rain.mp3"));
            rainMusic.setLooping(true);
            rainMusic.play();
            
            camera = new OrthographicCamera();
            camera.setToOrtho(false, 800, 480);
            
            bucket = new Rectangle();
            bucket.x = 800/2 - 64/2;
            bucket.y = 20;
            bucket.width = 64;
            bucket.height = 64;
            
            touchPos = new Vector3();
            
            raindrop = new Rectangle();
            
            raindrops = new Array<Rectangle>();
            spawnRaindrop();
        }
        @Override
        public void render () {
            Gdx.gl.glClearColor(0, 0, 0.2f, 1);
            Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
            camera.update();
            batch.setProjectionMatrix(camera.combined);
            batch.begin();
            batch.draw(pots[progress], bucket.x, bucket.y);
            
            for(Rectangle drop: raindrops){
                batch.draw(dropImage, drop.x, drop.y);
            }
            if(progress == 6)batch.draw(win, 800/2-512/2, 480/2-128/2);
            if(dropOver == 5)batch.draw(gameOver, 800/2-512/2, 480/2-128/2);
            batch.end();
            
            if(Gdx.input.isTouched()){
                touchPos.set(Gdx.input.getX(), Gdx.input.getY(), 0);
                camera.unproject(touchPos);
                bucket.x = touchPos.x - 64/2;
            }
            if(Gdx.input.isKeyPressed(Keys.LEFT)) bucket.x -= 200 * Gdx.graphics.getDeltaTime();
            if(Gdx.input.isKeyPressed(Keys.RIGHT)) bucket.x += 200 * Gdx.graphics.getDeltaTime();
            if(bucket.x <0)bucket.x = 0;
            if(bucket.x > 800 - 64)bucket.x = 800 - 64;
            if(progress < 6 & dropOver <5){
                if(TimeUtils.nanoTime() - lastDropTime > 1000000000)spawnRaindrop();
                
                Iterator<Rectangle> iter = raindrops.iterator();
                while(iter.hasNext()){
                    raindrop = iter.next();
                    raindrop.y -= 200 * Gdx.graphics.getDeltaTime();
                    if(raindrop.y + 64 < 0){
                        iter.remove();
                        dropOver++;
                    }
                    if(raindrop.overlaps(bucket)){
                        dropCatched++;
                        if(dropCatched == 10){
                            dropCatched = 0;
                            progress++;
                            
                        }
                        dropSound.play();
                        iter.remove();
                    }
                }
            }
        }
        
        private void spawnRaindrop(){
            Rectangle raindrop = new Rectangle();
            raindrop.x = MathUtils.random(0, 800-64);
            raindrop.y = 480;
            raindrop.width = 32;
            raindrop.height = 32;
            raindrops.add(raindrop);
            lastDropTime = TimeUtils.nanoTime();
        }
        
        @Override
        public void dispose(){
            dropImage.dispose();
            dropSound.dispose();
            rainMusic.dispose();
            batch.dispose();
            potatlas.dispose();
        }
    }

    Категория: libGDX | Добавил: Olelucoye (28.03.2015)
    Просмотров: 842
    | Рейтинг: 0.0/0
    Всего комментариев: 0
    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]
    Меню сайта
    Категории раздела
    Андроид разработка [23]
    libGDX [24]
    Мои андроид проекты [6]
    Excel [7]
    Железяки [5]
    Скрипты в блокноте [4]
    Разное [1]
    Форма входа
    Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0
    Яндекс Метрика
    Яндекс.Метрика