29 Ocak 2013 Salı

Işın Bisikleti Oyunu

Merhaba arkadaşlar. Kendi bilgilerim ve http://greenfoot.org adresinden aldığım yardımlarla yaptığım basit bir oyunun sistemini sizlere anlatmak istiyorum. Öncelikle oyunun açık kaynağını http://yadi.sk/d/sMqXmQND2AvXv adresinden indirerek dosyalara ulaşabilirsiniz. Şimdi gelelim kodlara:

import greenfoot.*;
import java.awt.Color;
public class Oyuncu1 extends Actor
{
    private boolean sol;
    private boolean sag;
    // bolum 1
    public Oyuncu1()
    {
        GreenfootImage g = getImage();
        g.drawRect(0,0,30,30);
        g.setColor(Color.BLUE);
        g.fill();
    }
    public void act() 
    {
        // bolum 2
        move(2);
        Oyuncu1Cizgi o = new Oyuncu1Cizgi();
        getWorld().addObject(o,getX(),getY());
        kontroller();
        if(carpisma())
        {
            getWorld().removeObjects(getWorld().getObjects(Oyuncu1Cizgi.class));
            getWorld().removeObject(this);
        }
    }    
    // bolum 3
    private boolean carpisma()
    {
        Actor Oyuncu2;
        Actor Oyuncu2Cizgi;
        Oyuncu2 = getOneObjectAtOffset(0,0,Oyuncu2.class);
        Oyuncu2Cizgi = getOneObjectAtOffset(0,0,Oyuncu2Cizgi.class);
        if(Oyuncu2 != null || Oyuncu2Cizgi != null)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    // bolum 4
    private void kontroller()
    {
        if(!sol && !Greenfoot.isKeyDown("left"))
        {
            sol = true;
        }
        if(sol && Greenfoot.isKeyDown("left"))
        {
            turn(-90);
            sol = false;
        }
        if(!sag && !Greenfoot.isKeyDown("right"))
        {
            sag = true;
        }
        if(sag && Greenfoot.isKeyDown("right"))
        {
            turn(90);
            sag = false;
        }
    }
}
Birinci Bölüm: İlk bölümümüzde sınıfımızın nasıl görüneceğini tanımladık. drawRect metodu ile bir kare çizdik, çizilen kareyi setColor metodu ile mavi yaptık ve son olarak fill metodu ile ekrana çizdirdik.
İkinci Bölüm: Bu bölüm daha çok dışardaki sınıflar ve içerdeki metodlar ile ilişkili. Burada move metodu ile hareket etmesini ve gittiği her yere Oyuncu1Cizgi sınıfını oluşturmasını istedik, ve diğer metodlarımızı çağırdık.
Üçüncü Bölüm: Burada Greenfoot'un Actor sınıfının getOneObjectAtOffset adlı metodunu kullanarak çarpışma kontrolü yaptırdık. Eğer çarpışma varsa true yoksa false değer geri döndürmesini istedik.
Dördüncü Bölüm: Burada ise sınıfımızı kontrol etmemizi sağlayacak kodlar var. isKeyDown metodu işi biraz "seriye" bağladığından dolayı burada sol ve sag adlı boolean değerlerimize değer atayarak bu sorunu gidermeyi denedik. Eğer sol yön tuşuna basılmıyorsa ve sol = true değilse koşul gerçekleşmiş yani sol = true olacaktı. Bu sayede basıldığı ve sol değerinin true olduğu zaman ise sol = false olacaktı ve böylece seri bir şekilde hareket edemeyecekti.
Evet oyunun sistemleri bu kadardı, umarım iyi bir şekilde anlatabilmişimdir. Sorunuz olursa çekinmeden sorabilirsiniz. Kolay gelsin.

Hiç yorum yok:

Yorum Gönder