24 Şubat 2013 Pazar

Greenfoot Yerçekimi

Basit bir yerçekimi sistemi yazarak bir oyun yaptım. http://cl.ly/0o3l3F2p380e adresinden oyunun dosyalarını indirebilir ve inceleyebilirsiniz. Şimdi Oyuncu.java dosyasından başlayalım.
import greenfoot.*;
public class Oyuncu extends Actor
{
    // 1. bolum
    private static final int ivme = 1;
    private int baslangic_hizi = 0;
    public Oyuncu()
    {
        setImage("egg.png");
    }
    // 2. bolum
    public void act() 
    {
        kontroller();
        if(maksimumCevre())
        {
            baslangic_hizi = 0;
        }
        else
        {
            baslangic_hizi = baslangic_hizi+ivme;
            setLocation(getX(),getY()+baslangic_hizi);
        }
    }
    // 3.bolum
    private boolean maksimumCevre()
    {
        if(getY() < 1 || getY() >= getWorld().getHeight() - 30)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    private void kontroller()
    {
        if(Greenfoot.isKeyDown("left") || Greenfoot.isKeyDown("a"))
        {
            setImage("eggsol.png");
            setLocation(getX()-3,getY());
        }
        if(Greenfoot.isKeyDown("right") || Greenfoot.isKeyDown("d"))
        {
            setImage("egg.png");
            setLocation(getX()+3,getY());
        }
        if(Greenfoot.isKeyDown("up")  || Greenfoot.isKeyDown("w"))
        {
            setLocation(getX(),getY()-14);
        }
    }
}
Birinci bölüm: Bu bölümde değişkenlerimizi tanımladık ve Oyuncu sınıfının resmini egg.png olarak ayarladık.

İkinci bölüm: Burada maksimumCevre metodu ile y ekseninin sonuna gelip gelmediğimizi kontrol ediyoruz. Y ekseninin sonuna geldiysek baslangic_hizi değişkenini 0 yapıyor. Y eksenine gelmediysek yerçekimi devam ediyor.

Üçüncü bölüm: Bu bölümde ise maksimumCevre metodunu açıklamak istiyorum. Öncelikle bu bir boolean metoddur. Eğer y koordinatlarımız "dünyanın" uzunluğundan büyükse true değer gönderir, değilse false değer gönderir.

Anlatacaklarım bu kadar kolay gelsin.

Hiç yorum yok:

Yorum Gönder