Ö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.
Yaptığımız oyunda arka planı nasıl hareket ettirebiliriz?