Öncelikle Merhaba  Android merakım üzerine Android  programlamada öğrenmek adına bir proje yapmak istedim bir dili proje yaparak daha iyi  anlayabilecegimi düşünenlerdenim.

Oyunun nasıl yazıldıgına gelicek olursak Android Studio da Libgdx eklentisiyle yazılmıştır

Libgdx Eklentisi indirme : https://libgdx.badlogicgames.com/download.html

Oyunun içerigine gelicek olursak Yukardan paralar dökülüyor o paraları yakamaya çalışıyorsunuz yakaladıgınızda skor degeriniz 1  artıyor fakat oyun basit oldugu için yanma  yeniden başlama gibi özellikleri bulunmamaktadır siz kendiniz ekleyebilirsiniz geliştirilebilir veya libgdx eklentisini kullanarak siz kendinizde bir oyun yazabilirsiniz her neyse kodları paylaşalım artık.

 

package com.unsaldeneme.oyun;

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
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.freetype.FreeType;
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;

import java.util.Iterator;


public class Merhaba_oyun extends ApplicationAdapter {
    //tanımladıgım degiskenler
    private OrthographicCamera kamera;
    private SpriteBatch  batch;
    private Texture resimrte;
    private Texture resimpara;
    private Rectangle rctrte;
    private Array<Rectangle> Array_paralar;
    private long sonParazaman;
    private Sound sesRec;
    private BitmapFont font;
    int score;

    @Override
    public void create() {
        //kamerayı çağıracagımız yer
        kamera=new OrthographicCamera();
        kamera.setToOrtho(false,800,480);

        //resimler
        resimrte=new Texture(Gdx.files.internal("rte.png"));
        resimpara=new Texture(Gdx.files.internal("parakutusu.png"));
        sesRec=Gdx.audio.newSound(Gdx.files.internal("oneminute.mp3"));
        Array_paralar=new Array<Rectangle>();
        //SpriteBatch ile ilgili yapılacaklar
        batch=new SpriteBatch();

        //dikdörtgenler
        rctrte=new Rectangle();
        rctrte.width=64;
        rctrte.height=64;
        rctrte.x=800/2-rctrte.width/2;
        rctrte.y=20;

        paraUret();


        font=new BitmapFont();
        font.setColor(0.8f,0,0,1);





    }
    private  void paraUret()
    {
        Rectangle rctPara=new Rectangle();
        rctPara.width=64;
        rctPara.height=64;
        rctPara.x= MathUtils.random(0,800-64);
        rctPara.y=480;
        Array_paralar.add(rctPara);
        sonParazaman= TimeUtils.nanoTime();
    }

    @Override
    public void render() {
        Gdx.gl.glClearColor(0,0,0.2f,1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        //kamera güncellemesi
        kamera.update();

        //tuvali - sayfayı kameraya göre ayarlama
        batch.setProjectionMatrix(kamera.combined);
        batch.begin();
        batch.draw(resimrte,rctrte.x,rctrte.y);
        for (Rectangle rctPara:Array_paralar) {
            batch.draw(resimpara,rctPara.x,rctPara.y);
        }
        font.draw(batch,"Score: "+score,50,450);

        batch.end();
        //dokundugum yere gönderme
        if(Gdx.input.isTouched()){
            //dokundugum yeri almak VEKTÖR 3 le
            Vector3 dokunmaPozisyonu =new Vector3();
            //ekranda dokundugum yerin kordinatlarını verme
            dokunmaPozisyonu.set(Gdx.input.getX(),Gdx.input.getY(),0);
            //dokundugumuzun yerin kordinatını uyarlama
            kamera.unproject(dokunmaPozisyonu);

            rctrte.x=dokunmaPozisyonu.x-rctrte.width/2;
        }

        if(TimeUtils.nanoTime()-sonParazaman>700000000) {
            paraUret();
        }
        Iterator<Rectangle> para=Array_paralar.iterator();
        while(para.hasNext()){
            Rectangle rctPara=para.next();
            rctPara.y -=300*Gdx.graphics.getDeltaTime();
            if(rctPara.y+64<0){
                para.remove();
            }
            if(rctPara.overlaps(rctrte))
            {
                sesRec.play();
                para.remove();
                score=score+1;
            }
        }
    }

    @Override
    public void dispose() {
        resimpara.dispose();
        resimrte.dispose();
        batch.dispose();
        sesRec.dispose();
        font.dispose();

    }
}

DİPNOT : Kodda belirtilen resimleri vermeyecegim siz kendiniz koyup degiştirebilirsiniz resimleri asset klasörünün içine atıp kodda kendi resim isminizle değiştirmeniz yeterli olacaktır.

 

 

1 yorum

Yorum yap

This site uses Akismet to reduce spam. Learn how your comment data is processed.