320 kez okundu
Nis
15
Mikroişlemciler dersinin bir gereği olarak, biraz da önümüzdeki hafta olacak vizesi dolayısıyla assembly diline de giriyorum bu makalemle. Yazının konusu, temelde bir çizgi çizdirme uygulaması. Çizgilerle 8×8 kareler oluşturarak bir satranç tahtası görünümü vereceğiz ekrana. Problem oldukça açık, kodlar üzerinde yorum satırlarıyla gerekli açıklamaları yaptım. Ancak önemli bulduğum bazı kod blokları var. Bu önemli noktalara da değindikten sonra kodlara geçeceğim.
Öncelikle şunu belirtmek isterim ki, assembly ile çizgi çizdirmeyi
Devamını oku… »
393 kez okundu
Nis
10
Makalenin konusu, C#’ta çok boyutlu dizilere örnek olabilecek bir koordinat sistemi uygulaması. Programda kullandığım ve C#’ metodlarından Math sınıfında bulunan Sqrt fonksiyonunun kullanımına da değineceğim. Örnek uygulama, kullanıcı tarafından girilen x, y koordinatlarına sahip noktanın, koordinat düzleminde bulunan ve daha önceden belirlenmiş olan 5 noktaya olan uzaklıklarını tek tek hesaplayarak bu uzaklıklara göre noktaları yakından uzağa olacak şekilde sıralyor. Uygulama hakkındaki genel bilgiden sonra kod kısmına da değinelim.
Programın Main fonksiyonunda koordinat düzleminde hazır bulunacak 5 adet noktanın x ve y koordinatları çift boyutlu bir dizide
Devamını oku… »
1.290 kez okundu
Oca
29
Android oyun geliştirme derslerinin onuncusunda hız kavramına ve nesnelere nasıl hız verilebileceğine değineceğim.
Geride kalan tüm makalelerimde sizleri bir şeyin yanılttığını tahmin ediyorum. Bahsettiğim konu, nesneleri sürükleme konusu. Nesneleri sürükleme uygulamalarında sprite’ları parmağımızla hareket ettirdik ama hız vermedik! Lise yıllarından da hatırlayacağınız üzere hız, fiziksel bir olaydır. Yani bizim sprite’ ları kullanarak sürüklediğimiz nesneler birer görüntüden ibarettir. Fiziksel anlamda bir varlık ifade etmezler ki sürükleme uygulamalarında yaptığımız şey nesneye hız vermek değil, sadece yerini değiştirmekti. A noktasında oluşturulan bir nesneyi oradan silip B noktasında oluşturmaktı yaptığımız. Mantığı oturttuktan sonra – en azından ben öyle düşünüyorum=) – hız hangi ortamda, nasıl ve neye verilir sorularının cevaplarına değineyim.
Hız kavramından bahsedilmesi için tabi ki ortamın fiziksel bir ortam olması gerekir. Yani ilk şart
Devamını oku… »
1.043 kez okundu
Oca
28
Android oyun geliştirme derslerinin dokuzuncusunda bir sprite sürükleme uygulaması daha yayınlıyorum takipçilerimden birinin karşılaştığı bir problem üzerine. Öncelikle diğer uygulamada yaptıklarımı ve bu uygulamada nasıl bir yapı kullanacağımı anlatmak istiyorum.
Aslına bakılırsa ilk uygulama da aynı işi yapıyor. Fakat buradan ulaşacağınız diğer uygulamada, sahnenin onSceneTouchEvent metodunu kullandık ki bu metod ekranın her yerinde geçerli olacağından global bir kullanım alanı sunuyor bize. Bu yapıda karşılaşacağımız sorunlardan bir tanesi, sahnede(Scene) kontrol edilmesi ve bir şekilde hareket etmesi gereken ikiden çok nesne varsa, her birinin kontrolünün ayrı ayrı bu yapıda sağlanması çok zor olacaktır. İşte bu makalemin konusu bu problemi çözmeye yöneliktir.
Kodlama kısmına geçmeden önce nesnelerin her birini ayrı ayrı kontrol etmeyi amaçlayan uygulamanın gerçekleştirilmesi sırasında nasıl bir yol izlenmesi gerektiğine kısaca değineyim. Yukarda bahsettiğim sahne nesnesi için yazılmış olan onSceneTouchEvent metoduna eşdeğer onAreaTouched metodunu her bir sprite’ a ayrı ayrı yazmak sorunu çözecektir. Uygulamaya göz attığınızda daha iyi anlayacaksınız, buyrun:
Devamını oku… »
1.295 kez okundu
Oca
24
Android oyun geliştirme derslerinin sekizincisinde fizik uygulamalarında kullanılan body kavramının türlerine hem şekil bakımından hem de dinamiklik-statiklik bakımından değineceğim.
Hızlı bir giriş ile şekil bakımından ne tür body şekilleri olduğuna bakalım. Daha önceki örnekten küçük kod alıntıları üzerinden ne tür şekiller olduğuna bakarsak, daha açık ve net bir anlatım olacağı kanaatindeyim. Şekiller ve oluşturulduğu kod bloklarının tamımını verdikten sonra açıklamaları yapmak istiyorum. Öncelikli olarak ilk body şekli, BoxBody‘dir. Oluşturulma kodu aşağıdaki gibidir:
1
| body1 = PhysicsFactory.createBoxBody(this.physicsWorld, spriteResim1, BodyType.DynamicBody, FIXTURE_DEF); |
İkincisi CircleBody:
1
| body1 = PhysicsFactory.createCircleBody(this.physicsWorld, spriteResim1, BodyType.DynamicBody, FIXTURE_DEF); |
Üçüncüsü PolygonBody:
1 2 3
| Vector2 []vector = new Vector2[5];
//Burada vector dizisine vektörler eklenir
body1 = PhysicsFactory.createPolygonBody(this.physicsWorld, spriteResim1, vector, BodyType.DynamicBody, FIXTURE_DEF); |
Dördüncüsü TrianglulatedBody:
Devamını oku… »
1.045 kez okundu
Oca
18
Android ile oyun programalama dersinin yedincisinde Daha önce anlattığım PhysicsWorld ve Body kavramlarının kullanımlarını örnek bir uygulama ile açıklayamaya çalışacağım.
Bir önceki yazıda ana mantığı anlatmıştım. Bu yüzden tekrar aynı şeylerden bahsetmenin pek anlamlı olacağını düşünmüyorum. Bu yüzden örnek uygulamayı anlatmak istiyorum. Örnek uygulamada bir PhysicsWorld oluşturdum. Bu PhysicsWorld’ ün özelliklerinin belirtilebileceği bir de FixtureDef nesnesi tanımladım. Bu nesnenin yapıcı metodu sırasıyla yoğunluk, esneklik ve ortamın sürtünme katsayısını içine parametre olarak alır. Aşağıdaki gibi tanımlanır.
1
| private final FixtureDef wallFixtureDef = PhysicsFactory.createFixtureDef(1, 0.8f, 0.5f); |
1
| this.physicsWorld= new PhysicsWorld(new Vector2(SensorManager.GRAVITY_EARTH, 0), false); |
Yine yukarda oluşturulan PhysicsWorld nesnesi ise içine parametre olarak bir
Devamını oku… »
1.126 kez okundu
Oca
13
Android oyun programlama derslerinin altıncısında daha önce kurulumunu anlattığım fizik motorunun kullanımını, özelliklerini, programcıya sağladığı kolaylıkları ve ne gibi fonksiyonları gerçekleştirdiğine değineceğim. Bir sonraki derste de uygulamalı olarak burada anlattığım işlemleri gerçekleştireceğim.
NOT: Fizik motorunun ne olduğunu, androidde kullandığım fizik motorunun özelliklerini ve kurulumunu buradan öğrenebilirsiniz.
Oyunlarda bildiğiniz üzere nesneler vardır. Bu nesnelerin birbirleriyle etkileşmesi gerekir. Şöyle ki; iki cismin birbiriyle çarpışmasıyla cisimlerin yöneleceği doğrultunun, çarpışmadan önceki hız, yön ve ağırlık bilgilerine göre hesaplanması gerekir. İşte bu gibi olaylarda fizik motorları programcının yapacağından daha iyi performansla
Devamını oku… »