Showing posts with label Java. Show all posts
Showing posts with label Java. Show all posts

Thursday, August 28, 2014

Disket Sürücüsü ile Müzik Çalmak

Herkese merhaba, ilk defa üniversite son sınıftayken youtube üzerinde gördüğüm floopy diskler(disket sürücü) ile müzik çalma işlemini uzun zamandır yapmak istiyordum. Bugün bahsedeceğim konu bu. Hatta yaklaşık 3 ay gibi bir süre Hermes İletişim'de part-time çalıştığım vakit, bu konuyu anlattığım ve aramızda ilk önce kim yapacak diye ufak bir iddiaya tutuştuğum Aşkın Yollu'ya armağan ediyorum bu yazıyı. Öncelikle ihtiyacımız olan malzemelerin listesini vereyim.

1 - Arduino UNO

2 - Kullanılmayan Bir Disket Sürücüsü (Yazıda 3.25 inchlik 34-pine sahip sürücü kullanıyorum, birden fazla kullanabilirsiniz)

3 - Kullanılmayan Bir ATX Güç Kaynağı (Şart değil, gereken akımı Arduino üzerinden de alabilirsiniz)

4 - CAT5 UTP Kablolar (Sürücü ve Arduino arasındaki bağlantılar için)

5 - Breadboard

Yukarıdaki malzemelerimiz tam ise, sürücümüzü müzik çalar hale getirmeye başlayabiliriz. Öncelikle eğer güç kaynağı kullanacaksanız, güç kaynağımızın aşağıdaki resimde görüldüğü gibi yeşil ve herhangi bir siyah kablosunu kısa devre yaptırıyoruz. Bu sayede güç kaynağımız sabit 5 voltluk bir enerji verecektir. Bu enerji ise disket sürücüsünü çalıştırmak için yeterlidir.

Sunday, September 2, 2012

Mandelbrot Kümesi ve Fraktal Simülasyonu - [Proje]

Yaklaşık 2 hafta önce izlemiş olduğum BBC Science tarafından hazırlanmış "The Secret Life of Chaos" (Kaos'un Gizli Yaşamı) belgeseli ile daha önceden fikir sahibi olduğum fakat vakit nedeniyle pek üzerine düşünemediğim bir konu olan fraktallar ile ilgili araştırma hevesim tekrar gün yüzüne çıktı. Fraktal, matematikte çoğunlukla kendine benzeme özelliği gösteren karmaşık geometrik şekillerin ortak adıdır. Daha basit tanımıyla, kendi kendini sonsuza kadar tekrar eden şekiller olarakta görebiliriz.

"The Secret Life of Chaos" belgeselinde bahsi geçen fraktal kümelerinden birisi de "Mandelbrot kümesi"dir. Mandelbrot kümesi, Benoit Mandelbrot'un ikinci derece kompleks değişkenli polinomların dinamiklerini açıklamak için geliştirdiği ve incelediği kümedir. Mandelbrot kümesi, karmaşık düzlemin bir fraktal alt kümesidir.

Bugünkü yazımda bahsedeceğim konu ise, Mandelbrot kümesinin, Java programlama dili ve OpenGL kütüphanesi kullanılarak hazırlanmış simülasyonudur. Programı yazarken kullandığım algoritmanın pseudocode hali buradaki linkte mevcuttur.

Programın kullanımı çok basit. Öncelikle Grafik ve Ayarlar Paneli olmak üzere 2 kısımdan oluşan programda, Grafik kısmına farenin mercek(zoom) görevi görebilen tekerlek kısmı ile fraktalın istediğiniz bölgesine yakınlaştırma ya da uzaklaştırma yapabilirsiniz.

Tuesday, July 24, 2012

Eclipse İçine Google App Engine SDK Kurulumu

Bugün kü yazımda, Eclipse içine Google'ın yeni bir hizmeti olan "Google App Engine SDK"sini yüklemeyi anlatacağım. Daha önce duymayanlar için hemen kısa bir özet geçeyim. Google App Engine, Google'ın uygulama geliştirme ve barındırma platformudur. Yüksek trafikli altyapıları yönetmek zorunda kalmadan yüksek trafikli web uygulamaları oluşturmanıza olanak sağlar. Google App Engine'de oluşturulan uygulamalarınız hız ve güvenilirlik açısından Google'ın web sitelerinin temelini meydana getiren teknolojinin aynısını kullanır. Siz yalnızca kodu sağlarsınız. Daha önce duymayanlar için, Google Application Engine ile ilgili ileride daha detaylı bir yazı yazmayı planlıyorum. Bu yüzden burada daha detaylı bir şekilde bahsetmeyeceğim. Burada anlatacaklarım "Eclipse Indigo" kullanılarak Windows XP üzerinde denenmiş ve sorunsuz bir şekilde çalışmaktadır. Farklı işletim sistemleri ya da Eclipse sürümlerinde yapılacak kurulumlarda hemen hemen aynı adımlar izlenmektedir. Uygulamayı yüklemek için öncelikle sisteminizde yüklü olan Eclipse versiyonunu bilmeniz gerekli.

Thursday, June 7, 2012

Polynomial Equations - [Proje]

Herkese merhaba! Çok uzun bir aradan sonra tekrar birlikteyiz. Gerek derslerin yoğunluğu, gerekse projelerin fazlalığı nedeniyle bloğa pek fazla yazı yazamamıştım. Ancak önümüzdeki günlerde blogla daha fazla ilgilenmeyi planlıyorum. Bugün sizlere OpenGL üzerinde 2 kişi birlikte geliştirdiğimiz, üniversite 3. sınıfta "SE 313" kodlu, "Bilgisayar Grafiği ve Görsel Programlama" dersinde Java programlama dili, OpenGL ve Glut kütüphanelerini kullanarak yazdığımız 2 ve 3 boyutlu polinom denklemleri çizdiren programı tanıtacağım. Programız kullanıcının girdiği ve seçtiği değerlere göre oluşan polinom denklemin grafiğini ekrana çizdiriyor. Programı yazarken belli limitler koydum mesela 2 ve 3 bilinmeyenli ve maximum 3.dereceden denklemleri çizdirebiliyoruz. Ancak kaynak kodlarda yapacağınız ufak değişiklikler sonucu bu sınırları genişletip, kısabilirsiniz. Şimdi projemi sizlere resimler eşliğinde daha detaylı bir şekilde açıklayacağım.

Sunday, February 26, 2012

OpenGL'de Doğruları Kullanarak Ekrana Harf Yazdırmak

Herkese merhaba, bugünkü yazımda Java üzerinde OpenGL programlamaya giriş yapmayı planlıyorum. Basit bir program yazıp, bu programı çok fazla detaya girmeden açıklayacağım. Programımız OpenGL içinde hazır bulunan "glVertex2f" fonksiyonunu kullanarak ismimizin baş harfini ekrana yazdıracak. Bu programın amacı, hem OpenGL'deki koordinat sistemini kavramak hem de "glVertex2f" fonksiyonunun kullanımını görmek ve anlamak. Yazıyı daha fazla uzatmadan kodumuzu veriyorum.

Saturday, February 25, 2012

Eclipse İçine OpenGL Kurulumu

Herkese merhaba, geçmiş yazılarımdan birinde Visual Studio 2010 içine OpenGL kurulumunu anlatmıştım. Bu yazımda ise Eclipse içine OpenGL kurulumundan bahsedeceğim. Öncelikle sistemimize uygun ve ihtiyacımız olan JOGL kütüphanesini buradan indiriyoruz. Şuan üzerinde çalıştığım sistem 32-bit Windows XP olduğu için ben "jogamp-windows-i586.7z" kütüphanesini indirdim. İndirdiğimiz dosyayı WinRAR programı ile açabilirsiniz. Arşivi açtıktan sonra, "jogamp-windows-i586 > jar" klasörü içindeki "gluegen-rt.jar" ve "jogl.all.jar" dosyalarını Eclipse içindeki projemize ekleyeceğiz. İlk olarak Eclipse'i açıp, menuden "File > New > Java Project" seçeneğini seçip, açılan pencereden projemize isim koyup "Finish" butonuna basacağız.

Monday, January 30, 2012

Road to Droko's Castle - [Proje]

Herkese merhaba! Hazır bol vaktim varken, bahsetmek istediğim diğer bir projede üniversite 3. sınıfta "SE 320" kodlu, "Bilgisayar Oyunlarına Giriş" dersinde JAVA programlama dilini ve Slick2D oyun kütüphanesini kullanarak yazdığım 2 boyutlu platform oyunu. Kısa ve klasik hikayemiz şöyle; oyunun ana kahramanı Henry ve onun kız arkadaşı vardır. Fakat günlerden bir gün Henry'nin kız arkadaşı Droko adı verilen kötü kalpli bir canavar tarafından kaçırılır ve bunun doğrultusunda oyunumuz başlar. Oyunda 10+1(+1 bölüm sonu canavarı ile karşılaşma) olmak üzere toplam 11 level var. Oyundaki karakterlerin resimleri(sprite), Little Fighter II ve Mario tarzı oyunlardan alınmış olup üzerinde ufak birkaç değişiklik yapıldıktan sonra oyuna entegre edilmiştir. Karakterimiz koşabiliyor(yön tuşları +X tuşuna aynı anda basılmalı), zıplayabiliyor(Yukarı ok tuşuna basılmalı) ve ateş edebiliyor(Space tuşuna basılmalı). Diğer yaptığım oyunlara nazaran daha profesyonel ve görsellik açısından daha umut verici olsa da henüz işin başında olduğumu bir kez daha belirtmek isterim. Tekrar oyunun genel dinamiklerine dönecek olursak, ateş etme hakkımız sınırlı, bu yüzden oyunda ateş ve sağlık bonusu bulunmaktadır. Aynı zamanda oyunda 2 tip farklı düşman var. Bu iki düşmanda Mario'dan tanıyacağınız karakterler.Oyunumuz kısa hatları ile bu kadar. Şimdi size resimlerle daha fazla detay vermeye çalışacağım.

Thursday, January 26, 2012

Hacop Fighter - [Proje]

Herkese merhaba, hazır vaktim varken bahsetmek istediğim başka bir projede üniversite 2. sınıfta "CS 340" kodlu, "Yazılım Geliştirmede İlerlemeler" dersinde JAVA programlama dilini kullanarak yazdığım 2 boyutlu uzay simulasyonu. Oyun hem iki kişilik hem de tek kişilik oynanabilir. Eğer tek kişi oynuyorsanız, oyundaki amaç düşman gemilerinin tamamını yok edip, bölüm sonu canavarı ile karşılaşmak. Oyuncu sahip olduğu uzay gemisi ile sağ taraftan üzerine gelen düşman gemilerini yok edip bölüm sonu canavarına ulaşmaya çalışır. Ancak oyunu iki kişi oynamak isterseniz, ilk oyuncu uzay gemisini yönlendirirken, ikinci oyuncu mouse ile haritanın izin verilen kısımlarına tıklayarak düşman bırakıp ilk oyuncuyu yok etmeye çalışıyor. Haksız rekabet olmaması için ikinci oyuncunun mouse ile her tıklamasında random fonksiyon çağrılıyor. Karşı tarafa düşman bırakayım derken bonusta bırakabilirsiniz. Oyunda düşman gemilerinden ayrı olarak sağlık(health) bonusuda bulunmaktadır. Bu bonusu aldığınız vakit geminizin dayanaklılığı artmaktadır. Oyundaki tüm düşman gemilerini yok ettikten sonra bölüm sonu canavarı ile karşılaşıyorsunuz. Bu yaratık diğerlerine göre daha büyük ve daha güçlü olmakla birlikte, ilk yapay zeka denemem olması bakımından benim için ayrı bir yere sahiptir. Şimdi de oyunumu resimler eşliğinde sizlere tanıtmak istiyorum.

Saturday, September 3, 2011

JAVA [Ders - 4] String Sınıfı

Öncelikle merhaba, çok uzun süredir Blogspot'a giriş yapamadım. Gerek stajlar gerekse almış olduğum bazı projeler sonunda yazı yazmayı biraz aksattım. Bu yüzden özür dileyerek bir sonraki Java dersimize geçiyoruz. Şimdi göreceğimiz ders Java'da en çok kullanılan sınıf olan String sınıfı. String sınıfı java.lang kütüphanesi içinde yer alan ve metinlerle ilgili aklımaza gelebilecek hemen her türlü işlemi yapabildiğimiz bir sınıftır. Sözü fazla uzatmadan hemen kod kısmına geçelim aşağıdaki kod Java'da String sınıfını kullanmak ve görüntülemekle ilgilidir. Burada dikkat etmemiz gereken şey "String" ifadesinin diğer değişkenlere(byte, int, float, char) nazaran büyük harfle başlamasıdır.

Friday, May 20, 2011

Oyun Geliştirme Platformu

Bu döneminde sonuna geldik sayılır. Bu yıl isteyipte yapamadıklarım arasında ufak bir proje ekibi kurmak vardı. Derslerin yoğunluğu ve ekip oluşturabilecek eleman sayısının yetersizliği ya da bu projenin benim dışında pek kimsede heyecan uyandırmaması ekibi oluşturamamanın başlıca nedenleriydi. Fakat şu da bir gerçek ki yeterli hazırlığın olmamasınında bunda payı büyüktü. Bu yüzden bu yıl yaşanan hatalardan ders çıkararak seneye oluşturacağım ekibin ön çalışmasına bugünden itibaren başlama kararı aldım. İnsanlara böyle bir projeden bahsettiğim zaman herkes büyük bir heyecanla karşılıyor. Ancak iş faaliyete gelince hemen hemen hiç kimse bir şeyler yapmak için çaba sarfetmiyor ya da her kafadan bir ses çıkıyor. Ekibin geliştireceği projelerde kullanılacak dilden tutunda geliştirilecek oyun projelerine kadar herkes kendi bildiğini okuma derdine giriyor. Durum bu olunca ortaya hiçbir şey çıkmamasının yanı sıra büyük bir heyecanla başlanan proje ortada kalıyor. Bu gibi karmaşaların önüne geçmek için yaklaşık bir hafta sonra facebook'ta ufak bir grup açma kararı aldım. Grup projemin tanıtımı için gerekli olan her şeyi içerecek. Gruba davet edilecek insanları ben belirleyeceğim için anlaşamadığımı düşündüğüm insanları davet etmeyeceğim. Projeleri geliştireceğimiz dil olarak Java'yı belirledim. Java hakkında bilgi sahibi olmayan kişiler için gruba eğitici içerik taşımayıda planlıyorum. Bunun yanı sıra önümüzdeki yaz tatili ekipte bulunmak isteyenler için bir sınav niteliği taşıyacak. Yaklaşık 1 - 1,5 aylık bir süreç Java bilmeyenlerin öğrenmesi üzerine geçecek. Akabinde grupta ufak çapta projeler yayınlamayı düşünüyorum. İsteyen istediği projeyi yapabileceği gibi kişilere özel proje vermekte mümkün olacak. Ve yeni eğitim döneminde ekibe alınacak kişileri belirleyeceğim. Ekibe alınmayanlar dışarıdan destek verebilecekler. Ancak projelerin gidişatı genelde ekip içindeki kişiler tarafından belirlenecek. Her 4 ayda yeni bir oyun projesiyle yolumuza devam etmek gibi bir amacımda var. Bu projelerin hem bizleri geliştireceğine hem de ekip çalışmasına daha uyumlu hale getireceğine inanıyorum. Umarım bu sefer başarılı olur!

Thursday, February 17, 2011

JAVA [Ders - 3] - Veri Tipleri

Herkese merhaba! Geçtiğimiz derslerde Java'da konsol ekranına nasıl çıktı yazdıracağımızı öğrenmiştik. Şayet bu dersle ilgili hala ufak problemler yaşıyorsanız bir önceki yazımı tekrar okumanız ve biraz pratik yapmanız sizin için faydalı olacaktır. Bugünkü dersimizde ise Java'daki veri tiplerine değinip konuyla ilgili ufak örnekler yazacağız. Java'da 8 tane primitive (asıl) veri tipi vardır.

byte: Hafızada 8-bit yer kaplayan -27 veya +27-1 arasında bir değer alan veri tipidir.

short: Hafızada 16-bit yer kaplayan -215 veya +215-1 arasında bir değer alan veri tipidir.

int: Hafızada 32-bit yer kaplayan -231 veya +231-1 arasında bir değer alan veri tipidir.

long: Hafızada 64-bit yer kaplayan -263 veya +263-1 arasında bir değer alan veri tipidir.

float: Hafızada 32-bit yer kaplayan ve kesirli bir sayı değeri alan veri tipidir.

double: Hafızada 64-bit yer kaplayan ve kesirli bir sayı değeri alan veri tipidir.

char: Hafızada 16-bit yer kaplayan 0 veya +216-1 arasında bir değer alan veri tipidir.

boolean: Hafızada 1-bit yer kaplayan true veya false değerini alan bir veri tipidir.

Monday, February 14, 2011

JAVA [Ders - 2] - Hello World!

İlk dersin devamı niteğinde olacak ikinci derse hoşgeldiniz. Öncelikle ilk derste yaptıklarımzdan biraz bahsetmek istiyorum. İlk derste yapılanlar Java programlama dilinde kod yazıp derlemek için gerekli olan minimum yazılımları yüklemek ve ekrana "Hello World!" yazdıran bir konsol uygulamasını geliştirip bunu derlemekten ibaretti. Bu derste öğrendiğimiz en önemli şeylerden birisi kodumuzda varolan class adının dosya adıyla aynı olması gerektiğidir. Şimdi sıra geldi aşağıdaki kodumuzu açıklamaya:

Sunday, February 13, 2011

JAVA [Ders - 1] - Hello World!

Üniversitedeki ilk yılımı bitirene kadar neden Java değil de daha düşük seviye olan "C" programlama dilini öğrettiklerini hep kendime sordum. Ancak daha sonra farkettim ki bize öğrettikleri ya da öğretmeyi amaçladıkları şey bir programlama dilinden çok daha öte, kişinin bireysel olarak bir şeyleri öğrenme kapasitesini ve hevesini artırmaktı. (en azından benim üzerimde böyle bir etki bıraktı) Bende bu şekilde uzun bir süredir kendi çabalarım ve internetteki kaynakların da sayesinde "Java" öğrenmeye başladım. Java'yı tercih etmemde birkaç neden etkili oldu. Bu nedenlerden ilki Java'nın nesne yönelimli bir programlama dili olmasıydı. (ileride bu konuya daha ayrıntılı bir biçimde değineceğim) İkinci neden Java'nın açık kaynak ve çapraz platform bir programlama dili olmasıydı. Bunun yanı sıra C programlama dilinde varolan kimi çarpıklıklar ve zorlukların üstesinden gelinmiş çok daha kolay, rahat ve güvenli bir dil vardı karşımda. Bu ve buna benzer daha bir çok şeyle birlikte Java öğrenmeye başladım. Ve öğrendiklerimi parça parça blogumda yayınlama kararı aldım. Bugünkü ilk ders olarak da konsol ekranına (henüz grafiksel kullanıcı arayüzüne sahip programlama için çok erken) "Hello World!" yazdıracağız.