31 Ağustos 2013 Cumartesi

Android Oyun Programlama Dersleri - Gün 3 - Daha Çok Temel








Android oyun programlama derslerimin 3. gününe hoş geldiniz. Bu gün java konusuna devam ederek değişkenlere yakından bakacağız. Bu konunun sizler için çok faydalı olacağını düşünüyorum. Lütfen atlamadan takip etmeye çalışın.

GÜN 3, DERS 1-0 : Değişkenlere yakından bakış

Daha önce yarattığımız telefon isimli sınıfı hatırlıyorsunuzdur. Hatırlamayanlar için :

public class Telefon{

 // Telefonun özelliklerini tanımlayan değişkenler yaratalım

 int agirlik = 0;
 boolean acildi = false;
 String renk = "turuncu";


      // Bu metod telefonun açılmasını kontrol edecek

 void TelefonuAc(boolean acildi){  
  if(acildi == true){
   acildi = false;
  }else{
   acildi = true;
  }
 }
}

ilk yarattığım üç değişken (agirlik, acildi, renk isimli değişkenler) integer, boolean ve String türünde yaratılmıştır. Bu gün bunların detaylarına bakacağız.

Temelde 4 tip değişken vardır (Değişken = Variable ! Unutmayın değişken, tür yada sınıf değil, değişken ! yani değişebilen şey...)

Temelde 4 tip değişken vardır :

Bir objenin yeniden yaratılmış kopyaları yani instance objeler. Örneğin yukarıdaki Telefon sınıfından türeteceğiniz bir obje, bu sınıfın kopyası yada instance versiyonu olacaktır. Dolayısı ile her üretilen telefon nesnesinin kendi agirlik, acildi, renk değişkenleri oluşacaktır. Ancak biz onları bir kez tanımladık ! Bu değişkenlere değer verdiğinizde sadece o telefon nesnesini etkileyecekler, diğer telefon objelerindeki ikiz kardeşleri bu durumdan etkilenmeyecektir.

Bu durumda şöyle diyebiliriz, bu 4 tip değişken ,

1. Instance Variable (Kopya Değişkenler) : Bir değişken static olarak tanımlanmadığı sürece kopya değişken olarak varsayılacaktır. bu durumda bu kopya değişkenlerden her biri kendi değerini alabilir.

2. Class Variable (Sınıf Değişkeni) : Değişken tanımlamasında static kelimesi kullanıldığında basitce bu değişkenden sadece bir tane olabilir demiş olursunuz. Kullandığınız sınıf birden fazla nesne yaratmış olsa dahi bu değişken tekil olmaya devam edecektir.

public class Telefon{

 // Telefonun özelliklerini tanımlayan değişkenler yaratalım

 static double versiyonNumarasi = 3.1;
 int agirlik = 0;
 boolean acildi = false;
 String renk = "turuncu";


      // Bu metod telefonun açılmasını kontrol edecek

 void TelefonuAc(boolean acildi){  
  if(acildi == true){
   acildi = false;
  }else{
   acildi = true;
  }
 }
}

Örneğin bu telefon sınıfından türetilecek tüm telefon objelerinin versiyon numarası tekil olacaktır. Java (veya başka bir programlama dili) ile gerçek dünyadaki olaylara yakın örnekler kurabiliriz.

Bunu daha gerçekçi bir örnek ile açıklayalım :

Diyelim ki ; Samsung bu gün bizim telefon sınıfımızı kullanarak 10 Android Telefon üretmiş olsun. Yarın 10 kullanıcı bu 10 telefonu satın aldığında telefonları tanıyabilmek için şu şekilde etiketleyelim : Telefon1, Telefon2, Telefon3 ............

Eğer Samsung bir yenileme (update) yayınlarsa bu durumda tüm telefonların versiyon numaralarının güncellenmesini isteyeceğiz. (Gerçekçi bir örnek oldu !)

Bunu java kodu ile anlatmamız gerekirse :

static void TelefonlariGuncelle(){
    versiyonNumarasi = 3.2;
}

(Not : Burada eşittir işareti matematiksel olarak düşündüğünüzde kafanızı karıştırabilir. Eşittir işareti java, c ve türevi programlama dillerinde eşitlik anlamına gelmez, eşit olsun anlamına gelir. Yani versiyonNumarasi 3.2 ye eşit olsun veya versiyonNumarasi 3.2 değerini alsın şeklinde düşünebilirsiniz.)

Dikkat ettiyseniz versiyonNumarasi değişkenimizi static olarak tanımlamıştık. Bu durumda bu değişkeni bir kez değiştirdiğimizde yani değerini yeniden tanımladığımızda tüm kopyalarının değeri tanımlanmış olacaktır. Ancak bir telefon sahibinin başka birinin telefonunu açıp kapatmasına izin vermek istemeyeceğimiz için acildi isimli değişkeni static olarak tanımlamadık.

Peki hangi telefonun açık hangisinin kapalı olacağını nasıl ayarlayacağız  ?
Çok basit, telefonları etiketlemiştik hatırladınız mı ? Bu etiketleri kullanacağız :

static void acmaKapamaDugmesineBasildi(){
 if(Telefon1.acildi == true){
  Telefon1.acildi = false;
 }else{
  Telefon1.acildi = true;
 }
}

Son değişken tipimizi hatırlarsak ( String renk = "Turuncu"; ) bu bir metinsel değişkendir. İçerisinde metinsel ifadeler tutabilir. Diyelimki bu değişken asla ama asla değişmeyecek. Bu durumda özel bir ek ile bunu javaya söylememiz gerekir ; final . Yani asla değişmeyecek olan değişkenlerimizi şu şekilde tanımlayabiliriz. final String renk = "Turuncu";

Burada 4 değişken tipinden bahsediyorduk. Hadi 3. değişken tipine bakalım ;

3. Local Variable (Yerel Değişken) : Bir metod içinde yarattığınız değişken o metot içerisine tanımlı olacaktır. Aynı ada sahip olsa bile o metod dışında yaratılan değişkeni hiç bir şekilde etkilemez. Bu tip değişkenlere yerel değişken deriz. Aynı şekilde Bir sınıf içinde yaratılan değişken de başka sınıfları etkilemez. Bu durumda o değişken o sınıfın yerel değişkeni (Local Variable) dir.

public class yerelDegiskenler{

 // Bu bir sınıf yerel değişkeni, tüm sınıf içinde erişilebilir

 static double pi = 3.14;

 public static void main(String[] args){
  // Bu bir metod yerel değişkeni.
  // Bunun anlami bu cap degeri sadece
                // bu metod içinde tanımlı dışaridakileri etkileyemez.

  double cap = 2.0;
  cap = (cap * cap) * pi;
 }

 static void ikinciMetod(){
  double cap = 18.0;
  cap = cap + pi;
 }
}

Buradaki örnekte gördüğümüz gibi;
1. pi bir sınıf değişkeni olarak tanımlanmış
2. main metodu içinde bir cap değişkeni tanımlanmış.
3. ikinciMetod içinde başka bir cap değiskeni tanımlanmış.

UNUTMAYIN : Bir metod içinde tanımladığınız ve kullandığınız değişken o metod için geçerlidir. Diğer metodları veya sınıf değişkenlerini etkilemez !

ve son değişken tipi olarak :

4. Parameter Variables (Parametre Değişkenleri) : Bir yerel değişkeni başka bir metod içinde kullanmak veya değerini değiştirmek için kullanılan parametre değişken tipidir. Değişkenlerin ve değerlerinin metodlar hatta sınıflar ve hatta uygulamalar arasında değiştirilebilmesini, kullanılabilmesini sağlarlar.

public class yerelDegiskenler{
 // Bu bir sınıf yerel değişkeni, tüm sınıf içinde erişilebilir
 static double pi = 3.14;

 public static void main(String[] args){
  // Bu bir metod yerel değişkeni.
  // Bunun anlami bu cap degeri sadece bu metod 
  // içinde tanımlı dışaridakileri etkileyemez.
  double cap = 2.0;
  cap = (cap * cap) * pi;

  // hadi buradan ikinci metodu çağırarak ona cap degerini gönderelim

  ikinciMetod(cap);

 }

 // simdi cap degiskenini metod icinde değil
 // parametre olarak tanimladik

 static void ikinciMetod(double cap){
  cap = cap + 5;
 }
}

Bu örnekte olduğu gibi bir metodu çağırdığınızda java sizden bir parametre isteyecektir. Tanımlanan özelliklerdeki parametre yerel bir değişken olarak o metod içinde işlenebilir ve onu çağıran sınıf veya metoda geri gönderilebilir.

Bir metodu çağırmak için şu kodu kullanıyorduk : metodAdi(); Eğer bu metod bir veya birden fazla parametre istiyorsa java hata vererek size bu durumu anlatacak ve parametre isteyecektir. Bu hatayı console panelinde görebilirsiniz. :



Peki biz ikinciMetod isimli metodu çağırdığımızda neler oluyor ?
main metod içinde tanımlanmış ve değer almış olan cap degiskeni parametre ile ikinciMetod fonksiyonuna geçiyor. (Hatırlarsanız metodlara fonksiyon da diyebiliyoruz, METOD = FONKSİYON) ikinciMetod fonksiyonu içinde tekrar yeniden işlenerek değer alıyor. Sonuç olarak hala iki farklı yerel cap değişkeni var, bir tane değil !

Bunun anlamı nedir ?
main fonksiyonu içindeki cap değişkeninin değeri : 12,56 dır.
ikinciMetod fonksiyonu içindeki cap değeri ise : 17,56 dır.
Karışık mı geldi ? Son paragrafları birkaç kez okuyun. Daha anlaşılır hale gelecektir.

4. günde görüşmek dileğiyle....








Dip Not : Sizinde fark ettiğiniz gibi bir ders hazırlamak gerçekten zor. Bu yüzden internette Türkçe kaynak bulmak gerçekten zor hale geliyor. Bir dersin hazırlanma süresi sizin onu okuma sürenizden defalarca kez fazla. Derslerin devamı ve ücretsiz kalması için desteğinizi lütfen esirgemeyin.

Destek olmak için :

1. Bağışta bulunabilirsiniz. Sağ taraftaki "PAYPAL DONATE" butonunu kullanarak bağış yapabilirsiniz.
2. Derslere yorum yazabilirsiniz. Farkettiğiniz hataları, Eleştirilerinizi veya takdirinizi belirtmekten çekinmeyin.
3. Dersleri facebook, twitter gibi sosyal medya ortamlarında ilgisini çekeceğini düşündüğünüz arkadaşlarınız ile paylaşın.
4. Emeğime saygı gösterin ve metni kopyalayıp forumlara yapıştırmayın. Bunun yerine dersin linkini yayınlayın. Merak etmeyin o forumu okuyabilen insanlar bu sayfayı da okuyabilirler...

Teşekkürler.

25 Ağustos 2013 Pazar

Android Oyun Programlama Dersleri - Gün 2 - Temel Java








Android oyun programlama derslerinin ikinci gününe hoşgeldiniz. Umarım bu yazı dizisini takip ederek sizin için çok faydalı olacağına inandığım bazı ip uçları ve yöntemlerden yararlanacaksınız. 

GÜN 2, DERS 1-0 : Java İncelemesi

Bu gün birlikte ilk java sınıfımızı yacağız. bazılarınız için bu ilk kez program yaratmak anlamına geliyor...

Ama önce Eclipse hakkında söylemek istediklerim var.

Geçen derste Eclipse hoşgeldiniz ekranında bizi karşılamıştı. Bu ekranı sürekli olarak görmenize gerek yok. Eclipse içindeki "Wellcome" tabını kapatarak bu ekrandan kurtulabilirsiniz. 


Artık Eclipse editörünü her açtığınızda karşınıza gelecek olan ekran ile tanıştınız, Eclipse : Workbench (Eclipse Çalışma Alanı). Bir sürü panel ve komut gözünüzü korkutmasın. Hangisinin ne işe yaradığını ve nasıl kullanıldığını anlatmaya çalışacağım. Şimdilik aşağıdaki maddelere bir göz atalım.

1. Eclipse farklı görevler ve çalışma şekilleri için farklı görünümlere bürünebilir. Bu görünümlere Perspective denilmektedir. Şu anda kullanılan perspective JAVA olmalı. Eğer Java değilse aşağıdaki komut seti ile Java olarak ayarlayabilirsiniz.

Window > Open Perspective > Other > Java.



2. Ekranın en altındaki panele bakın, orada "Console" adında bir sekme varsa devam edin.
Sekme yoksa Window > Show View > Console komutu ile görünmesini sağlayabilirsiniz.


Artık Eclipse kullanarak programlama yapmaya hazırız !

"Package Explorer" başlıklı panele bir göz atın. Ekranın sol tarafında olmalı. Bu panel sizin Eclipse projelerinizi takip edeceğiniz, organize edeceğiniz Paket Göstericisi. Artık kodlamaya hazırsanız başlayalım !

1. File > New > Java Project komutunu verin.
2. Projeniz için bir isim verin (İsimde boşluk ve Türkçe karakter kullanmamanız gerektiğini söylememe gerek yoktur umarım.)


3. Finish yazan butona basın. Böylece yeni projenizi "Package Explorer" alanında görmeye başlamanız gerekiyor.
4. "Package Explorer" içindeki projenize çift tıklayın. Aşağıdaki gibi bir ekran görüntüsü olmalı.


5. src klasörüne sağ tuş ile tıklayın, New > Class komutunu vererek yeni bir Java Class dosyası yaratın. Bu dosyaya bir isim vermelisiniz ve genelde bu isim "MerhabaDunya" olur.(Programcı Jargonuna göre isim vermek zorunda değilsiniz ama genelde iki kelimeden oluşan dosya isimlerinde ilk ve ikinci kelimelerin ilk harflerini büyük yazarız. Ayrıca ilk programa MerhabaDunya isimini koymak Hakkı ÖCAL hocamızın bize öğrettiği ilk şeydir.


6. ve nihayet aşağıdaki ekranı görüyor olmalısınız.


Hızlıca java yazım kurallarına yada gramerine bir göz atalım.

1. Bordo renkli "public class" kelimeleri kendilerinden sonra gelen "MerhabaDunya" adında bir sınıf oluşturulduğunu anlatır. Bu sınıf public yani diğer sınıflar tarafından ulaşılabilir bir sınıftır.

2. Süslü parantezler sınıfın başlangıç ve bitiş noktalarını belirlerler. Tüm sınıfınız bu iki parantez arasında olmalıdır. Java dili yazarken çift tırnak ( " " ), tek tırnak ( ' ' ), süslü parantez ( { } ) ve noktalı virgül ( ; ) karakterlerini çok yoğun olarak kullanırız. Bir miktar pratik yaptığınızda süslü parantezler ve noktalı virgül artık farkında bile olamadan her satır sonunda gerekli yere eklemeye başlayacağınız birer refleks haline gelecektir.

Peki nedir bu sınıf ?

Sınıfları anlamak için önce objeleri anlamamız gerekir.

Programlama dilinde objeler gerçek dünyadaki objeler gibidir. 

Gerçek dünyada objeler belirli özellikleri tanımlanabilir. Örneğin telefonunuz bir objedir ve çalışma durumu : Açık / Kapalı olarak tanımlanabilir. Objelerin alt özellikleri de olabilir. Telefonunuz açık ve bir müzik çalıyor, Açık ve Şarj oluyor durumda olabilir.

Programlama dilindeki objeler buna çok yakındır. Durumları, alt durumları, özellikleri bulunur. Hatta değişkenleri, fonksiyonları v.b.

Bir sınıf objenin temel özelliklerini tanımlayan plan/proje dosyası gibidir. Sınıflar ile objeler yaratılır, özellikleri ve durumları eklenir.

Daha önce yarattığımız "MerhabaDunya" sınıfı iyi bir örnek sayılmaz. Bu sebeple aşağıda size bir Telefon Sınıfı yaratarak demek istediğimi anlatmaya çalıştım.

public class Telefon{

     // Telefonun özelliklerini tanımlayan değişkenler yaratalım
     int agirlik = 0;
     boolean acildi = false;
     String color = "turuncu";

     // Bu metod telefonun açılması durumunu kontrol edecek
     void TelefonuAc(boolean acildi){
          if(acildi == true){
               acildi = false;
          }else{
               acildi = true;
          }
     }

}

(Bu mükemmel bir program örneği değil. Yukarıdaki kodun büyük ihtimalle hiçbir anlamı yok ancak size yazım kurallarını ve obje mimarisini anlatır diye umuyorum)

Hadi bu sınıfı inceleyelim ; Parantezlere özellikle dikkat etmenizi istiyorum. Kaç tane parantez açıldı ise o kadar parantez kapatılmıştır. Hiyerarşiyi daha iyi anlayabilmek için yazımda tab boşlukları kullanılmıştır. Böylece kodu okumak daha kolay hale gelir. Parantezler bilgisayar dünyasında çok önemli karakterlerdir. Yazım sıraları, yazılış şekilleri görevlerini değişken hale getirir. Örneğin burada süslü parantezlerin bir tanesi eksik kaldığında yazılım hata verecektir.

Eğer daha önce hiç programlama ile uğraşmadıysanız bu durum size çok karmaşık gelecektir. Sonuçta bu yeni bir dildir. Bugün ingilizce veya portekizce öğrenmeniz ile java öğrenmeniz arasında hiç bir fark yok..

Biraz daha açıklayıcı olmaya çalışalım :

// ile başlayan satırlar açıklama satırlarıdır. Yazılım kodunun içine notlar almanızı sağlarlar. Bu notları kendinize hatırlamak için alabileceğiniz gibi programcıların da kodu okuduklarında anlamalarına yardımcı olacak notlar alabilirsiniz. // ile başlayan satırlar dil yorumlayıcısı tarafından kod olarak yorumlanmazlar.

ilk açıklama satırından sonra 3 durum (bizim dilimizde cümle) görüyorsunuz. noktalı virgül ile bitiyorlar. Bunlara kod satırı diyebilirsiniz.

     int agirlik = 0;
     boolean acildi = false;
     String color = "turuncu";

Bunlar değişkenlerdir. Değişkenler basitçe içinde belirli bir tipte veri tutabilen kaplar gibidir. Burada sizlere temel programlama konusunu anlatmak istemiyorum. O yüzden ilerlemeye devam edeceğiz.

Büyük ihtimalle her satırın noktalı virgül ile bittiğini fark etmişsinizdir. Java dilinde noktalı virgül satır sonu anlamına gelmekte, yeni bir komut satırının başlayacağını, mevcut satırın bittiğini ifade etmektedir.

Burada büyük dikkat gerektiren başka bir konu ise java dilinin case sensitive bir dil olmasıdır. Yani java büyük ve küçük harf duyarlıdır. Bir çok acemi programcı asla bulamadıkları hataları bu yüzden almaktadır.

Yani "MerhabaDunya" ile "merhabadunya", "Merhabadunya" ve "merhabaDunya" farklı nesnelerdir.

Neyse, java hakkında sık sorulan sorular ve cevaplarına şu bağlantı ile ulaşabilirsiniz.

http://www.javacoffeebreak.com/faq/

GÜN 2, DERS 1-1 : İsimlendirme Hakkında Hızlı Ders

Java kullanırken sınıf, nesne ve değişkenlere isimler vermek zorundasınız. İsimlerin ne olacağına ve nasıl yazılacağına siz karar vereceksiniz. (Türkçe karakter ve boşluk kullanamazsınız. Bazı özel karakterleri kullanamazsınız. Program sizi zaten uyaracaktır) buna rağmen bazı özel kelimeleri isim olarak kullamazsınız. (Ör : public, static, int, void gibi komutları isim olarak kullanamazsınız.)

Sınıflar genelde şu şekilde isimlendirilir :

OrnekSinifAdi

Metodlar ise şu şekilde isimlendirilir :

ornekMetodAdi()

ve değişkenler de bu şekilde isimlendirilir :

ornekDegiskenAdi

Komik gelecek ama buna "Camel Casing" yani "Deve Adlandırması" denilir. Bu bir kural değildir ve zorunlu değildir ancak her dilin olduğu gibi javanın da jargonu vardır ve jargona uymak sizi diğer programcıların gözünde daha saygıdeğer gösterir.

GÜN 2, DERS 1-2 : İlk Program

Evet şimdi MerhabaDunya adında bir sınıfımız var.
public class MerhabaDunya {

}

Bu sınıf içerisine bir metot ekleyeceğiz. Bu metot "main" adında özel bir metot. main metodu java programı çalıştırıldığında ilk çağrılan metottur. Yani çalıştır tuşuna bastığınızda bu metot çalışmaya başlayacaktır.

Main Metot Tanımlanması

public static void main(String[] args){

}

1. public, static, void : Java tanımlayıcıları

Daha öncede anlattığım gibi java dilinde bazı kelimeler özel anlamlar taşıyan komutlardır. Bu kelimelerin belirli bir sıra ile yazılması sonucu kendi sınıf, obje ve metodlarınız belirli özellikler kazanır. Burada çok fazla java dersine girmek istemiyorum. Sonuçta buraya Oyun Programlama öğrenmek için geldiniz. Ancak bazı temel konulara mutlaka göz atmamız gerekiyor. Neyse şu özel kelimelere bir bakalım :

public : Diğer sınıflar tarafından görülebilir. Bir java uygulaması birden fazla sınıftan oluşabilir. Bazen bu sınıflardan birinin diğerinin içindeki bir veriyi, değişkeni okuması veya bir metodu kullanması gerekebilir. Bu durumda bu koda erişim vermek üzere public tanımlanır. Tam zıttı private dir ve erişimi kesinlikle yasaklamak anlamına gelir.

static : Anlamı bu sınıftan sadece bir tane olduğudur. main sınıfının tekil olduğunu anlatır. static olmayan sınıflardan birden fazla yaratılabilir, böylece her kopya kendi değerlerine sahip olabilir. Bu durumda programınızın nasıl dengesizleşeceğini tahmin edebilirsiniz. Örneğin bilgisayarınızda birden fazla başlat menüsü olsaydı veya iki fare imleci olsaydı ne kadar zorlanırdınız değil mi ? Aynı şekilde bazı sınıflardan program içinde sadece bir tane olması gerekir. static kelimesi bu tekilliği sağlayacaktır.

void : Bir metot çağırdığımızda (Çağırmak çalıştırmak anlamına gelir) program o metottan bir sonuç dönmesini bekleyecektir. void tanımlanan metodun/fonksiyondan bir sonuç dönmeyeceği anlamına gelir. (Bunu şöyle örnekleyelim : Evinizde anneniz size birşey söylediğinde sonuç dönmesini beklerken babanız void çalışmaktadır. Anne : Oğlum yemeğini ye, yemeğini yedinmi, tabağın bittimi gibi sorular sorarak verdiği komutun sonucunu öğrenmek istemektedir ancak Baba : Kapıyı kapat ! dedikten sonra kapatıp kapatmadığınızı sormaz) Aynı şekilde bazen programınızın sonucunu zaten bildiğiniz birşeyi yapmasını istersiniz. Bu durumda sonucu zaten bildiğinizden bir sonuç döndürmesi gerekmez.

Bu anlaması zor gelen bir bölüm oldu. Ama merak etmeyin zaman içerisinde yazdıkça anlayacaksınız. Kimse dünyaya programcı olarak gelmiyor. (Sanırım ben hariç....)

2. Metotlar ve Fonksiyonlar : Parametreler

Bazı metotlar çağrılırken bir parametreye gerek duymazlar (Kapı örneğini ele alalım, baba kapıyı kapat dediğinde çocuk sokak kapıyı kapatacaktır. Bir parametreye gerek yoktur)

metotBir()

Bazı metotlar ise çalışmak için parametrelere ihtiyaç duyarlar. (Annenize çoraplarım nerede diye sorduğunuzda alacağınız cevap "Çekmecede" şeklinde olur ve siz parametreye ihtiyaç duyarsınız "Hangi çekmecede ?")

metotIki(int cekmeceNo)

fonksiyon ve metotların parametre alması demek o metoda bir veri göndereceksiniz ve o veri ile bir şey yapacak demektir. Programı yazdıkça bu bölümü daha iyi anlayacaksınız.

3. main metodu ve parametreleri

main(String[] args)

Bildiğimiz gibi (veya sizin yeni öğrendiğiniz gibi) main metodu çalışmak için bazı argümanlar yani parametreler istemekte. Bu parametreler string türünde yani metin formatında olmalı. Buradaki köşeli parantezler ( [ ] ) ise bu parametrelerin bir array yani dizi olduğunu anlatmakta. (Array yani dizi, tv dizisi gibidir sürekli olarak sonu gelmeden yeni bölümler eklenebilir. Burada string array ise birden fazla metin türünde veri alabileceği anlamına gelir. "Parametre bir", "parametre iki", "isim", "çalıştır beni", "tırmala beni şakir" gibi bir metin dizisi olabilir.)

Şu anda bu anlattıklarımın neden veya nasıl olduğunu anlamanız gerekmiyor. Güvenin bana ilerledikçe daha anlaşılır şekilde ve örnekler ile bunların tamamını zaten deneyeceğiz.

Aşağıdaki main metodu eklenmiş olan MerhabaDunya sınıfını kopyalar ve Eclipse penceresine yapıştırıp çalıştırırsanız çalışacaktır.
public class MerhabaDunya {
	
	public static void main(String[] args){
		
		
	}

}

Ancak bir problemimiz var. Main fonksiyonu (bundan sonra metod yerine fonksiyon kelimesini kullanalım daha anlaşılır oluyor) hiçbir görevi yerine getirmiyor. Yani hiçbirşey yapmıyor. Bu durumda çalışıp çalışmadığını anlayamayacağız.

Bu yüzden main fonksiyonumuza bir görev vermeliyiz.

public class MerhabaDunya {
	
	public static void main(String[] args){
		
		System.out.println("Selam. XD");
		
	}

}

Böylece main fonksiyonuna bir görev vermiş olduk. Ekran çıktı alanına bir satır yazmasını söyledik. Eğer herşey yolunda gitti ise Eclipse araç çubuğundaki play tuşuna bastığınızda size dosyaları kaydetmeniz gerektiğini söyleyecek ve kayıt işleminden sonra programı çalıştırarak console panelinde "Selam. XD" yazacaktır.


Biliyorum bu noktaya kadar çok sancılı bir konu oldu, hatta bazılarınızın şimdiden gözü korktu bile ama en azından şunu söylememe izin verin. Bilgisayar programcılığı hele hele oyun programcılığı kolay bir iş değildir. Sadece bir çıktı penceresine "Selam" yazabilmek için ne kadar efor sarfettiğinizi düşündükten sonra lütfen şunu hatırlayın ; Oynadığınız oyunların yanında bu denizde bir kum tanesi bile etmez !

Bu yüzden oyun/uygulama geliştiricilere yaptıkları iş hakkında bir cümle kurmadan önce lütfen iki kere düşünün.

Zor kısmı geçtik, bundan sonrası kolay kısım. Söz veriyorum bu yazı dizisini takip ederseniz sizin için hem eğlenceli hem de geliştirici ve faydalı olacak. 3. günde görüşmek üzere.

Okuduğunuz için teşekkür ederim.






Dip Not : Sizinde fark ettiğiniz gibi bir ders hazırlamak gerçekten zor. Bu yüzden internette Türkçe kaynak bulmak gerçekten zor hale geliyor. Bir dersin hazırlanma süresi sizin onu okuma sürenizden defalarca kez fazla. Derslerin devamı ve ücretsiz kalması için desteğinizi lütfen esirgemeyin.

Destek olmak için :

1. Bağışta bulunabilirsiniz. Sağ taraftaki "PAYPAL DONATE" butonunu kullanarak bağış yapabilirsiniz.
2. Derslere yorum yazabilirsiniz. Farkettiğiniz hataları, Eleştirilerinizi veya takdirinizi belirtmekten çekinmeyin.
3. Dersleri facebook, twitter gibi sosyal medya ortamlarında ilgisini çekeceğini düşündüğünüz arkadaşlarınız ile paylaşın.
4. Emeğime saygı gösterin ve metni kopyalayıp forumlara yapıştırmayın. Bunun yerine dersin linkini yayınlayın. Merak etmeyin o forumu okuyabilen insanlar bu sayfayı da okuyabilirler...

Teşekkürler.


24 Ağustos 2013 Cumartesi

Android Oyun Programlama Dersleri - Gün 1 - Kurulum










Android oyun programlama derslerine hoşgeldiniz ! Bu dersleri takip etmeyi istediğiniz için çok memnun oldum. Oyun progralama/geliştirme konusu gerçekten zor ama bir o kadar da eğlenceli ve geliştirici bir konudur. Bu yüzden size tavsiyem asla kendinizi tıkanmış veya yalnız hissetmeyin. Ben her zaman buradan sizlere yardımcı olmaya çalışacağım. Yorum yazarak veya e-posta ile sorularınızı sormaktan çekinmeyin. Elimden geldiğince sizlere cevap vermeye çalışacağım. 

Okuduğunuz için teşekkür ederim, umarım bu çalışmalar sizin içinde faydalı olacak...

GÜN 1, DERS 1-0 : Java nedir ?

Java : Sürekli duyduğumuz bir isim fakat gerçekten nedir bu java ?
Sizi java konusunda derin anlatımlara girerek sıkmayacağım. Bu konuda zaten binlerce sayfa yazıya online olarak ulaşabilirsiniz. Nede olsa siz buraya oyun geliştirmek için geldiniz.

Bu konumda bilmeniz gereken kısım şu ; Java bir programlama dilidir. (Sizin bilgisayar ile konuşmanızı sağlar) Böylece bilgisayara ne yapması gerektiğini anlatabilirsiniz. Ayrıca java bir platformdur. (Bilgisayarın sizin verdiğiniz komutları işlemesini sağlar) Böylece bilgisayar söylediklerinizi anlayabilir.

Java, her ortamda çalışabilmesi için tasarlanmıştır. Telefonlar, otomobiller, bilgisayarlar ve bilgisayarlaştırılmış olan binlerce farklı nesne üzerinde çalışabilir. Geliştiriciler "Bir kere yaz, her yerde çalıştır !" mantığını kullanabilmek için java platformunu aşırı derecede esnek tasarlamıştır. Keza, çok yakın geçmişe kadar mobil cihazlar dahil olmak üzere bir çok cihazın işletim sistemi platformu java tabanlı veya java destekli olmuştur.

Son birkaç yıl içinde ise yeni bir oyuncu sahneye çıktı : ANDROID. Google tarafından geliştirilen ve desteklenen ücretsiz işletim sistemi ANDROID şu anda otomobiller, masa üstü - diz üstü bilgisayarlar, tabletler, telefonlar, buz dolapları, otobüs eğlence sistemleri ve hatta fotokopi makineleri üzerinde işletim sistemi olarak kullanılmaktadır. Gelecekte daha başka hangi aygıtlarda olacağını kim bilir ?

Sonuç olarak ANDROID java mimarisini tam olarak desteklediği için ve java cihazları gibi yaygın bir kullanım alanı olduğu için Android Uygulama/Oyun geliştirme konusuna başlamadan önce java ile tanışmamız gerekiyor.

Eğer zaten java biliyorsanız bu bölümü atlamayı tercih edebilirsiniz. Ben dersleri olabildiğince anlaşılır tutmaya çalışacağım. İleri seviye programcılar ve Android Geliştiricileri bu bölümlerde sıkılabilir. 

Şimdi geliştirme ortamımızın kurulumuna geçeceğiz. Bu uygulama/oyun geliştirme konusunda en sıkıcı bölüm ancak bir şekilde yapılması gerekiyor...

Son Not : Aşağıdaki anlatım Mac ve Windows kullanıcıları için ortaktır.

GÜN 1, DERS 1-1 : Java ve Eclipse İndirme

Java programlamaya başlamadan önce bir geliştirme ortamına ihtiyacımız var. Bunun için bilgisayarımızı geliştirici bilgisayarı olarak belirleyeceğiz ve bazı yazılımları kuracağız.

Java Geliştirme Kiti (JDK - Java programları yazmanızı sağlayan geliştirme ortamı) kurabilmek için aşağıdaki adımları izleyin.


Mac Kullanıcıları : Genellikle bilgisayarınızda jdk zaten kuruludur. Bu adımı atlayabilirsiniz.

1. Aşağıdaki JDK indirme linkini tıklayarak jdk indirme sayfasına bağlanın. (Bu yazıyı gelecekte okuyanlar, jdk linkleri değişmiş olabilir. Güncel jdk linklerini arama motoru üzerinde "JDK DOWNLOAD" şeklinde arayarak bulabilirsiniz.)

http://www.oracle.com/technetwork/java/javase/downloads/index.html

2. Açılacak olan sayfada "Java SE 7u25 (veya üst sürüm)" başlığını bularak "JDK DOWNLOAD" indirme linkine tıklayın.


3. Java SE Development Kit 7u25 (veya üst sürüm) listesinde şartları kabul ettiğinize dair "Accept License Agreement" işaret kutusunu işaretleyerek listeden işletim sisteminize uygun olan JDK sürümünü indirin. (Burada windows kullanıcıları x86 ve x64 ayrımına dikkat etmelisiniz. Eğer x86 veya x64 size birşey ifade etmiyorsa yanlış dersi okuyorsunuz demektir. Öncelikle Temel Windows Kullanımı derslerini okuyup tekrar gelmelisiniz...)


4. Jdk indirmesi tamamlandığında kurulumu başlatarak ekranda çıkacak olan talimatları izleyerek JDK  kurulumunu yapınız. JDK yı kurduğunuz dizin daha sonra lazım olacak, bunu hatırlamanız faydalı olacaktır. (Ben C:\Program Files\Java\jre7\ dizinine kurulum yaptım.)

Şimdi Eclipse Kurmamız gerekiyor. İnternette Eclipse hakkında araştırma yapmanız faydanıza olacaktır. Eclipse bir kez kullanmaya başladığınızda vazgeçemeyeceğiniz üstün geliştirici araçları ile birlikte gelen bir IDE(Integrated Development Environment) dir.

Eclipse Kurulumu için aşağıdaki adımları izleyin : 


Eclipse kodlarınızı derleyen, yazılımı paketlemenizi sağlayan, kod ve projelerinizi organize eden bir programcı aracıdır. Oldukça kullanışlı ve güçlü bir IDE olarak bahsedebiliriz. Üstelik ücretsiz !!!

1. Aşağıdaki bağlantıyı kullanarak eclipse indirme sayfasını açın.

http://www.eclipse.org/downloads/

2. Açılan indirme sayfasında işletim sisteminize uygun olan "Eclipse Standart 4.3 (veya üst sürüm)" linkine tıklayarak kurulum dosyasını indirin.






3. Eclipse bir .zip dosyası şeklinde gelecektir ve kurulum istemez. Sadece çalışmasını istediğiniz yere çıkartın ve eclipse.exe yi çalıştırın. (Size eclipse.exe ye masa üstünde bir kısayol oluşturmanızı veya programı başlat çubuğuna sabitlemenizi tavsiye ederim.)

Böylece geliştirme ortamımız kurulmuş oldu. Artık java yazmaya hazır sayılırız. Şimdi eclipse için biraz ayar yapmamız gerekecek.

GÜN 1, DERS 1-2 : Eclipse Ayarlarının Yapılması

1. Eclipse ilk defa çalıştırıldığında size "workspace" ayarını yapmanızı söyleyecektir. Workspace (Çalışma Alanı) Eclipse tarafından projelerinizin, dosyalarınızın ve kaynakların kayıt altına alınacağı bir dizindir. (Ben E:\eclipse-workspace\ klasörünü çalışma alanım olarak belirledim.)



2. Eğer tüm kurulumu başarılı şekilde yaptıysanız aşağıdaki gibi bir ekran görüntüsü ile eclipse çalışmaya hazır hale gelecektir.



Bir sonraki derse buradan devam edeceğim. Okuduğunuz için teşekkürler.

1. Gün Değerlendirmesi :


Bu gün java, android ve program geliştirme hakkında basit bir giriş yaptık. Android geliştirmenin en önemli tabanı olan JDK ve Eclipse programlarını indirerek kurulumlarını gerçekleştirdik.

Yarın ilk Java programımızı yazmaya başlayacağız ve Java Jargonu hakkında konuşacağız.



Dip Not : Sizinde fark ettiğiniz gibi bir ders hazırlamak gerçekten zor. Bu yüzden internette Türkçe kaynak bulmak gerçekten zor hale geliyor. Bir dersin hazırlanma süresi sizin onu okuma sürenizden defalarca kez fazla. Derslerin devamı ve ücretsiz kalması için desteğinizi lütfen esirgemeyin.

Destek olmak için :

1. Bağışta bulunabilirsiniz. Sağ taraftaki "PAYPAL DONATE" butonunu kullanarak bağış yapabilirsiniz.
2. Derslere yorum yazabilirsiniz. Farkettiğiniz hataları, Eleştirilerinizi veya takdirinizi belirtmekten çekinmeyin.
3. Dersleri facebook, twitter gibi sosyal medya ortamlarında ilgisini çekeceğini düşündüğünüz arkadaşlarınız ile paylaşın.
4. Emeğime saygı gösterin ve metni kopyalayıp forumlara yapıştırmayın. Bunun yerine dersin linkini yayınlayın. Merak etmeyin o forumu okuyabilen insanlar bu sayfayı da okuyabilirler...

Teşekkürler.


23 Ağustos 2013 Cuma

Android Oyun Programlama Dersleri - Giriş

Hepinizin bildiği gibi, (veya bazılarınızın bilmediği gibi) android işletim sistemi mobil dünyada en yaygın olarak kullanılan işletim sistemlerinden biridir. Şimdi burada android nedir ? ne işe yarar gibi gereksiz konulara girmeden direk olarak "ANDROID OYUN PROGRAMLAMA DERSLERI" başlıklı yazı dizimin tanıtımını yapacağım.



Android ile oyun geliştirebilmek için öncelikle oyun programlama mantığını ve java dilini iyi öğrenmek gerekiyor. Bu konuda bana sürekli sorulan sorulara cevap vermek ve insanlık açısından faydalı bir örnek oluşturmak için bir yazı dizisi hazırlamaya karar verdim. Her gün bir ders olacak şekilde "ANDROID OYUN PROGRAMLAMA DERSLERI" yazı dizisini takip etmeniz durumunda mutlaka sizler için faydalı bölümler ile karşılaşacağınızdan eminim.

JAVA / OYUN PROGRAMLAMAYA BAŞLAMADAN ÖNCE....

Sık sorular sorular : 
Son dersleri ve yenilikleri nasıl takip edeceğim ?
1. Özellikle son yenilikleri takip etmek için beni takip etmelisiniz. Buradan facebook ile veya buradan twitter ile beni takip edebilirsiniz.

2. Ayrıca bu blog adresini sık kullanılanlar listenize ekleyerek blog üzerinden de takip edebilirsiniz. Son yayınlanan ders ana sayfada görüntülenecektir.

Bu dersler kimler için faydalı ?
Başlangıç seviye programcılar, ileri seviye programcılar, java öğrenmek isteyenler ve kendi oyununu tasarlamak isteyen herkes için bu dersler faydalı olacaktır.

Bu dersler ücretsiz mi ?
Evet. Bu derslerin tamamı ücretsiz olarak yayınlanacaktır. Size bir faydası olduğunu düşünüyorsanız ve bunun gibi içeriğin sürekli yayınlanmasını istiyorsanız bana bağış yapabilirsiniz.

Nasıl yardımcı olabilirim ?
Derslerin ücretsiz olması için bağış yaparak yardımcı olabilirsiniz. Ayrıca eğer dersleri beğenirseniz arkadaşlarınız ile paylaşarak ve onlara tavsiyede bulunarak yardımcı olabilirsiniz.


Nasıl yardım alabilirim ?
Eğer özellikle bir bölüm ile ilgili sorularınız var ise bunları bana contact@mesutaslan.com.tr adresini kullanarak veya ders altına yorum yaparak sorabilirsiniz. Mümkün olduğunca kısa süre içerisinde cevap vermeye çalışacağım.

Evet hazırsanız yarın (24.08.2013) ilk dersimize başlayacağız.