Showing posts with label Proje. Show all posts
Showing posts with label Proje. Show all posts

Sunday, May 31, 2015

Implementing Object Detection Based on Color in Webot Simulator for E-puck

This project was implemented by Richa AGARWAL, Taner GUNGOR and Pramita WINATA.

Abstract-Object detection and recognition is a challenging task in computer vision systems. So it was decided to work with E-puck for the same. But using a real e-puck connected with the system through bluetooth it is diffucult to transfer images captured by the robot's camera. So, it was decided to use Webot simulator for E-puck robot to develope and test the algorithm to detect objects using the color of an object. Where robot scans for the object if detects the goal, it moves in the direction of goal avoiding obstacles, else moves randomly in the arena looking for the goal (red object). The most relevant aspects of the simulator and implementation are explained.
Keywords-Webot simulator, e-puck, path planning


INTRODUCTION
We are implementing a simple object detection algorithm in Webot simulator for E-puck using C controller. The algorithm is designed to detect red objects using E-puck's camera. It is easier to control and grab images from E-puck robot using Webot simulator and controler.

1 - WEBOTS SIMULATOR
Webots is a development environment used to model, program and simulate mobile robots. With Webots the user can design complex robotic setups, with one or several, similar or different robots, in a shared environment. The properties of each object, such as shape, color, texture, mass, friction, etc., are chosen by the user. A large choice of simulated sensors and actuators is available to equip each robot. The robot controllers can be programmed with the built-in IDE or with third party development environments. The robot behavior can be tested in physically realistic worlds. The controller programs can optionally be transferred to commercially available real robots. Webots is used by over many universities and research centers worldwide. The development time you save is enormous.

Figure-1: Webots development stages

Webots allows you to perform 4 basic stages in the development of a robotic project Model, Program, Simulate and transfer as depicted on the Fig. 1.

Wednesday, January 21, 2015

Face Recognition

Chapter 1: Introduction

1. Preliminary

In this project, we implemented a face recognition system by using principal component analysis, which is known as PCA. PCA method provide a mathematical way to reduce the dimension of problem.

Since the most elements of a facial image are highly correlated, it is better to extract a set of interesting and discriminative feature of a facial image. Mathematically speaking, we transform the correlated data to independent data. To implement the transform, we employed some linear algebra method such as SVD (Chapter3). The main idea is to obtain Eigenfaces that every face can be regard as a linear combination of these eigenfaces (Chapter4). Then the face recognition problem convert to a mathematic problem: what is the linear combination of a face? In other words, it simplify a problem from 2D to 1D.

Friday, January 16, 2015

Introduction to Spectral Mesh Analysis Toward a simple implementation in C++

Hi reader, as I said before I want to share what I have done and learned from the Vision & Robotics master program. This post includes the our semester project. Actually, the code was given to all the students and the professor wanted us to improve his code and apply 'Spectral Mesh Analysis' on it. You can find more information from the project link that is end of the post. If you have any question free to shoot. I'm just putting here the graphical user interface and how to use the program that is already inside of the project report.

6.1 Framework choice

Because of the constraints that the project must be developed using C++ under Qt IDE, we used the Qt Widgets that are mature and feature rich user interface elements suitable for mostly static user interfaces. Besides, since Qt Widget are native C++ elements it is easier to merge UI with the application logic. The application UI is connected to all other parts of the application through the class Logic. The logic handles all the data interchange between the UI and algorithms. So it is possible to split the application in separate parts.

6.2 Basic elements of UI

The UI is straightforward and easy to use. There are two main parts – openGL screen and sidebar. It is possible to extract many cases of the application usage from the task:

  • Load of the file
  • Adjust the camera properties
  • Adjust the light properties
  • Adjust the displaying mode
  • Calculate Laplacian Matrix and set new colors according to it
  • Find the shortest path from one node to another

Friday, November 21, 2014

How Google ranks Web pages?

Google’s search algorithm combined precomputed PageRank scores with text matching scores to obtain an overall ranking score for each webpage. The PageRank algorithm assigns a PageRank score to each webpages. The algorithm models the behavior of an idealized random Web surfer [1, 2]. This Internet user randomly chooses a webpage to view from the listing of available webpages. Then, the surfer randomly selects a link from that webpage to another webpage.

The model the activity of the random Web surfer, the PageRank algorithm represents the link structure of the Web as a directed graph.


The process for determining PageRank begins by expressing the directed Web graph as the nxn hyperlink matrix, H, where n is the number of webpages.


Friday, November 14, 2014

Real Time Adaptive Shortest Path Navigation System - [Proje]

1 – PROJECT OVERVIEW

This document includes the project proposal for the RETINA(REal Time Adaptive Shortest Path Navigation System) that will be produced at end of fall semester. The schedule for this project starts in September 2012 and ends in January 2013. This project will be developed by the students who are taking CE 497 Senior Project 1 course. The members of this project are as follows:

  • Taner Güngör
  • Efe Sezer
  • Uğur Eryüzlü
  • Ulaş Göde

Project will be supervised by Asst. Prof. Süleyman Kondakçı and project coordinator is Taner Güngör who is elected by the project team.

Real Time Adaptive Shortest Path Navigation System provides a package that is combination of the software and hardware. It performs a shortest path for the agents (who are using this system in their vehicles) in the traffic. The system finds that shortest path according to the specified parameters, such as instantaneous flow, throughput, weather conditions, (rain, humidity, snow) illumination of the roads. The oriented customers for this product are personal and commercial vehicle drivers and commercial transportation companies.

The project scope for the Real Time Adaptive Shortest Path Navigation System will be included embedded boards which are Arduino and ARM. These boards will perform the software operations via sensors which are attached on the Arduino board and show up the shortest path on the screen.

Wednesday, October 22, 2014

"Light's Out" Game and Its Solution with Linear Algebra

Hi reader, this is my first article that is written in English here. Why I am writing in English? Actually, I want to share my reports and projects that I found interesting during the master. All reports and projects are of course in English. So, I don't want to translate these subject to Turkish. If you don't know English but want to learn more about. You can ask everything about the related subject. Today, I am going to talk about "Light's Out" game and its solution with "Linear Algebra". If you know Linear Algebra and how to apply it to the game, then it is just 10-15 lines of code. I am also going to share the MATLAB solution end of the article.

Chapter 1: Abstract

1. Preliminary

Light out is a game introduced by tiger electronics, an American toy manufacturer, on a 5 by grid matrix, where each matrix can have either on or off status? The game begins with some of the matrices turned on randomly. Pressing a single buttons will affect the status of itself and its neighbors. The game of the game is to systematically press as much as possible less number of times and making every matrices become off.[1][2]


The goal of the game is to turn all of the lights off. The goal of the puzzle is to switch all the lights off, preferably in as few button presses as possible. Every time a button is pressed, the state of that button as well as the state of the buttons above, below and to the left and right are changed. For example, if all buttons are turned off and a button is pressed, the resulting outcome could result in three, four, or five buttons lighting up depending upon where the original button was located on the game board.[4]

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, May 18, 2014

Network Settings - [Proje]

Linux kullanmaya üniversite 2.sınıfta başladım desem yanlış söylemiş olmam. Üniversite 1.sınıf ilk dönem, Ubuntu 9.04 (Yanlış hatırlamıyorsam) ile Windows XP'yi aynı anda kullanıyordum. Ancak Windows 7'nin piyasa çıkışı ve benim tek işletim sistemi olarak Windows kullanmak istememin sonucu o gün format atarken grub hatası aldım. Ve aldığım bu hata benim herhangi bir Linux dağıtımı kullanmamı biraz daha geciktirdi. Bütün bunları neden anlattığıma gelince, Linux dağıtımlarına mesafeli durmamın sebebi çoğu işlemin "Terminal" denen ve Windows'taki karşılığı "Komut Satırı" olan yapının üzerinden yürümesiydi. Linux dağıtımları her ne kadar görsellik barındırsalar da önemli ve gelişmiş birçok ayar hala Terminal üzerinden yapılıyordu. Görselliğin kolaycılığına(hatta birazda tembelliği diyebiliriz) kaçan birçok kişi için başlarda Terminal çok sıkıntılı bir yapı olarak görülebilir. Ancak bu sistem ile sağlananları ve yapılabilecekleri görünce insan ister istemez hayretlere düşüyor. Terminal ile yakınlaşmam üniversite 2.sınıf yıllarıma denk geliyor. Bu yıllarda Terminal üzerinde çeşitli komutları deneyip öğreniyordum. İlk defa Shell Script Programlamaya da bu dönemde başladım. Programlama dediysem basit girdi, çıktı üreten ufak scriptlerdi.

Okulumuzda "CE 354" kodlu, "UNIX Komut Dillerinde Programlama" adlı dersi de ilk bu zamanlar almayı düşündüm. Fakat hayatın cilvesi bu dersi son yılımda ve son dönemimde aldım. Ders genel olarak UNIX ile ilgili temel bilgileri, Terminal üzerinde işlem yapabilmeyi ve ufak ama çok yararlı scriptler yazmayı kapsıyordu. Elbette ders için yapmamız gereken birde proje vardı. Projemizin ismi "Network Settings". Ulaş GÖDE, Volkan BENLİ ve benim tarafımdan yazıldı. Kısaca açıklamak gerekirse: Interface(Arayüz), Hostname ve DNS Konfigürasyonu gibi 3 temel konu üzerinde ayarlama yapabilen ufak bir program. Benim yazdığım kısım Interface(Arayüz) Konfigürasyonu kısmı, bu bölümde bağlantı tipini ayarlayabilirsiniz. Şayet internet erişimi için wireless(kablosuz) bağlantı kullanıyorsanız, kablosuz ağları görüntülemek, istediğiniz bir ağa bağlanmak, otomatik, DHCP ya da el ile IP ataması yapmak gibi ayarlar mevcut. Diğer bölümlere de kısa kısa değinmek istiyorum. Hostname Konfigürasyonu kısmı Volkan BENLİ tarafından yazıldı, burada hostname ve IP görüntüleme, düzenleme, ekleme ve silme işlemleri yapılmakta, Ulaş GÖDE'nin yazmış olduğu DNS Konfigürasyonu kısmında ise mevcut DNS adreslerini görüntüleme, düzenleme, adres ekleme ve silme işlemleri yapılmaktadır. Sözü çok fazla uzatmadan resimler eşliğinde projeyi anlatmak istiyorum.

Sunday, September 29, 2013

Arduino ve GPS Modülü - [GPS Tracker] - II

Herkese merhaba, GPS Tracker projesinin 2. yazısındayız. İlk yazıyı okumak isteyenler buradaki linkten ulaşabilirler. Hatırlatmak için projeyi tekrar kısaca anlatacağım. Uydudan Arduino'ya bağlı GPS modülü aracılığı ile alınan bilginin USB ile bilgisayarımıza aktarılması ve buraya gelen bilgilerin anlamlı datalara dönüştürülüp kullanıcının ihtiyacına uyarlanması işlemiydi. Bu yazıda Arduino'ya yüklediğimiz programın ne işe yaradığını açıklayıp. Projenin QT ayağına da değinmek istiyorum. Projenin QT ayağında, ek olarak Google Map API(V3)'sini de kullandım. API yardımı ile uydudan aldığım longitude(boylam), latitude(enlem) bilgilerini kullanarak bulunduğum konumu harita üzerinde gösterebiliyorum. Ayrıca aldığımız hız bilgisini de ekrana yansıtabiliriz. Bu uygulama ile basit bir navigasyon sistemi yapmış olacağız. Çünkü QT Creator ile yazdığım program dinamik bir program. Uydudan alınan veri değiştikçe, QT'ye yansıtılan veri de aynı hızla değişiyor. Şayet arabanızda laptobunuzu açıp, Arduino'yu da laptoba bağlarsanız, siz hareket ettikçe haritada sizi temsil eden simge de hareket edecektir.(Tabii biraz zahmetli bir iş olduğu kesin, bende henüz arabada denemedim.) Lafı çok fazla uzatmadan Arduino'ya yüklediğimiz kodu açıklamak istiyorum.

Thursday, September 26, 2013

Kinect ve İlk WPF Uygulaması - Derinlik Algılayıcı - [Proje]

Herkese merhaba, 1 yıldan beri Kinect teknolojisini takip ediyorum. Uzun zamandır bir Kinect alıp aklımdaki projeleri uygulamaya geçirmek istiyordum. Ve yaklaşık 1,5 ay önce çok uygun bir fiyata Kinect buldum. Daha önce duymayanlar için kısaca tanıtmak gerekirse Kinect ya da Project Natal, Microsoft'un, Xbox 360 platformu için geliştirdiği ve herhangi bir uzaktan kumanda ya da kontrol aygıtı olmadan oyun oynama imkanı veren alet. İlk olarak 4 Kasım 2010'da, Kuzey Amerika'da satışa sunulmuştur.

Projenin amacı bilgisayar ortamında herhangi bir kontrol çubuğu veya kumanda kullanmadan, sadece el hareketleriyle oyun oynayabilmektir. Bunun yanında ses de ayrı bir işletimi için geçerlidir. Kinect sisteminin el, kol hareketlerini algılaması ise kızılaltı ışın yayan projektörlerle gerçekleşiyor. Bu ışınlar görünmüyor. Işınların elde ettiği veriler, CMOS algılayıcılarında komuta çevriliyor. Bu sayede oyuna komut gidiyor. İşletim sisteminin kalitesinin yanı sıra bu komutlar bir saniyeden çok daha kısa zamanda ulaşmaktadır. 3. boyut grafiğinde gerçekleşmesi gereken hızlı komutları ise bilgisayara ait olan yazılım sağlıyor. Yani Kinect, sadece komutları ulaştırmakla sorumlu bir aygıt.

Saturday, June 15, 2013

Oyunlarda Yapay Zeka - Artificial Intelligence for Battle City [Proje]

Bu yıl üniversitedeki son dönemim, hatta bu yazıyı yazarken diplomayı alıp mezun olamama yaklaşık 1 ay gibi kısa bir süre kaldı. Mezun oluyorum diye seviniyorum, ama buruk bir sevinç. Bir çok kişinin aksine üniversitede geçirdiğim yılları özleyeceğim. Normalde geçmiş yıllardan aldığım fazladan dersler ile kredimi ziyadesiyle doldurmuştum. Aslında bu hazırlıkların hepsi son yılımın çok rahat geçmesi için yapılan yatırımlardı. Ancak geçmiş yılların yoğunluğunun verdiği alışkanlık ya da açılan seçmeli derslerin cazibesinden olsa gerek son yılım pek rahat geçmedi. Bilakis, diğer yıllara nazaran daha yoğun olduğu zamanlar bile oldu. Çünkü 1 adet bitirme projesinin yanında 2 adet projeli ders aldım. Bu projeli derslerden birisi "SE 354" kodlu, "Oyunlarda Yapay Zeka" dersiydi. Ders ilk defa verilmekle birlikte, öğretim görevlisi, üniversiteye ilk başladığım sıralar okulumuzda asistanlık yapan ve SDL ile tanışmama vesile olan Kaya Oğuz hocamızdı. Pojemiz Unity oyun motoru üzerinde C# programlama dili ve Standart Unity kütüphanelerini kullanarak "Battle City" benzeri bir oyun yapmaktı. Aslında belli bir arayüz hocamız tarafından bize sağlandı. Bizim yapmamız gereken ise bu arayüz üzerinde bulunan tanklara yapay zeka yazmak idi. Arayüzden kastım, harita, harita üzerinde bulunan çeşitli eşyalar(silah, sağlık) ve 4 tane tank bulunmaktaydı. Daha detaylı bilgi projenin anasayfasında mevcuttur. Aslında oyunun tamamını hocamız yazmış, sadece tanklar için gerekli yapay zekanın yazılmasını bizden istemişti. Proje aşaması çok eğlenceliydi. Ancak bazı noktalarda insanın kafası karışabiliyordu. Sonsuz olasılıkları düşününce iş içinden çıkılmaz bir hal alıyordu.

Sunday, January 20, 2013

Arduino ve GPS Modülü - [GPS Tracker] - I

Yaklaşık 1 yıldır Arduino ile yakından ilgilenmekteyim. Duymayanlar için Arduino'nun, bir G/Ç kartı ve Processing/Wiring dilinin bir uygulamasını içeren geliştirme ortamından oluşan bir fiziksel programlama platformu olduğunu da kısaca belirteyim. Yazın siparişini Robotistan sitesinden verdiğim Arduino Süper Başlangıç Seti Rev3 (Kitapsız) ürünü o zaman ki indirim ile her şey dahil 120 TL'ye mal olmuştu. Ufak çapta, bir çok proje geliştirdiğim bu üründen ziyadesi ile memnun kaldım. En çok ilgimi çeken proje ise, bu yıl ki bitirme projemle de ilgisi olan, uydudan GPS modülü aracılığı ile alınan bilginin Arduino ile bilgisayarımıza aktarılması işlemiydi.


Saturday, September 22, 2012

Earthquake Analysis - [Proje]

Herkese merhaba! Bugün size "Earthquake Analysis" isimli yeryüzünde son 1 saat, 24 saat ve 7 gün içerisinde meydana gelen depremleri gösteren ve 2012'nin Ocak ayında yapmaya başladığım bir projeden bahsedeceğim. Ekstra bir kaç özellik ile birlikte blogda yayınlamayı planlıyordum. Ancak Şubat 2012'den bu zamana ilgilenme fırsatım olmadı. Projeyi birkaç kısımda incelemekte fayda var. Öncelikle verileri USGS (U.S. Geological Survey) sitesinden alıyorum. Verileri PHP'de yazdığım bir kod parçası ile alıyorum. Bu kısım bilginin alındığı ve işlendiği bölüm. Daha sonra aldığım verileri Javascriptte oluşturduğum "Earthquake" sınıfına uygun bir biçimde parse edip HTML vasıtası ile Google Map üzerinde gösteriyorum. Bu da projenin 2.kısmı. Proje PHP, Javascript, CSS, JQuery ve Google Map API V3 ile hazırlanmıştır. Sayfa her 60 saniyede 1 kendini yenilediği için sürekli güncel verileri görüyorsunuz. Şimdi adetim olduğu üzere resimler eşliğinde projeyi sizlere tanıtacağım.

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.

Saturday, June 9, 2012

Knuckles Adventures - [Proje]

Herkese merhaba! Hazır yazın bol vaktim varken, bahsetmek istediğim diğer bir projede üniversite 3. sınıfta "SE 350" kodlu, "Oyun Programlama" dersinde Unity oyun motoru üzerinde C# programlama dili ve Standart Unity kütüphanelerini kullanarak bir arkadaşımla beraber yazdığım 2 boyutlu platform oyunu. Kısa ve klasik hikayemizdeki oyunun ana kahramanını hemen hemen hepiniz biliyorsunuz. Karakterimiz Knuckles. İşin bu kısmının tamamen farklı bir hikayesi var. Uygun bir vaktimde bu konuyuda sizinle paylaşmak istiyorum. Zira anlatacağım bazı şeyler disiplinler(branşlar) arası uyuşmazlığın projeyi götüreceği yer açısından önemi ile ilgili. Aslında oyunumuzun hikayesi çok farklıydı fakat kimi sebeplerden dolayı oyunun konusu ve akışı çok değişti bu yüzden oyunu çalıştırdığınızda oyunun ismini görmeyince şaşırmayın. Knuckles Adventures ismi ise şu an benim tarafımdan koyulmuş ismidir. Daha güzel isim önerilerine açık olduğumu belirterek oyunla ilgili ufak bilgiler vermeye devam ediyorum. Oyunumuzdaki temel amaç; ana karakterin türlü engeller içeren bölümleri geçerek kız arkadaşına ulaşması. Oyunda 5 farklı bölüm var. Her bölümde oyuncu engelleri aşarak hedefe ulaşmaya çalışıyor. Oyun içinde kullanıcı için arka planda bilgiledirici resimler de bulunmaktadır. Karakterimizi yön tuşları ile hareket ettiriyoruz. "Space" tuşu ile zıplayan karakter, herhangi bir kutunun yanına gelip "CTRL" tuşuna basınca kutuyu çekip, itebiliyor. Tekrar "CTRL" tuşuna basınca kutuyu bırakıyor. Oyunumuzda bir üst katlara geçmek için varolan asansörü çalıştırmak için ise, asansörün düğmesine "X" tuşu ile basmamız yeterli. Bu arada oyunumuzun mekanı olarak basit bir şantiye belirlemiştik. Ancak yaşanan bir takım sorunlar nedeniyle garip bir mekan ortaya çıktı. Bu oyun, diğer yaptığım oyunlara nazaran çok daha profesyonel ve görsellik açısından çok daha iyi. Oyun motoru kullanmak, yapacağımız işlerin gerçekten hafiflemesi anlamına geliyor. Bu noktada kodlamadan ziyade fikir ve tasarım ön plana çıkıyor. Oyun içinde kullandığımız sprite yukarıda da bahsettiğim gibi Knuckles karakteri, bunun dışında bazı ses dosyaları ve scriptler, bu oyunu(olurda) geliştirip ticari bir boyut kazandırmak isteyecek kişiler için sıkıntı yaratabilir. Bunun farkında olup paylaşacağım kaynak kodlarını ona göre yorumlarsalar herkes için daha iyi olur. Çok fazla uzatmadan oyunu resimler eşliğinde tanıtmak istiyorum.

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.

Saturday, February 4, 2012

Izmir Mass Transit Guide - [Proje]

Herkese merhaba! Bugün Android işletim sistemi üzerinde çalışan cep telefonları için, üniversite 3. sınıfta "SE 310" kodlu, "İleri C++: Şablonlar ve Soysal Programlama" dersinde Javascript, XHTML, Google Map API(V3) ve Qt kütüphanesini kullanarak yazdığım daha çok tasarım odaklı olan "Izmir Mass Transit Guide" projesini anlatacağım. Proje kısaca İzmir belediye sınırları içerisinde seçilen iki nokta arasında, başlangıç noktasından varış noktasına en hızlı ulaşımı sağlayacak şekilde belediye otobüslerini kullanarak aktarmaları da göz önünde bulundurup seyahat planı oluşturup, oluşturulan planı Google Map üzerinde gösteriyor. Projeyi açıklamaya başlamadan önce ufak bir kaç noktaya değinmek istiyorum. Bu proje client(müşteri) ve server(sunucu) olmak üzere iki kısma ayrılıyor. Projenin client yani istek talep eden kısmını ben yazdım. Ancak projenin server kısmı, dersi aldığımız öğretim görevlisi tarafından verildi. Bu yüzden projenin sadece client kısmına ait kaynak kodunu paylaşacağım. Projeyi tekrar kısaca anlatacak olursam, kullanıcı programı açtığı zaman karşısına aşağıdaki gibi bir ekran gelmektedir. Programın çalışma prensibi oldukça basit. Bulunduğumuz ve varmak istediğimiz noktanın bilgilerini sunucu tarafında çalışan koda yolluyoruz, sunucu almış olduğu bu verilere göre başlangıç noktasından varış noktasına en hızlı ulaşımı sağlayacak şekilde, aktarmaları da göz önünde bulunduracak şekilde bir seyahat planı oluşturuyor. Son olarak bu plan client tarafına iletiliyor. Ve bu veriyi javascript aracılığı ile işleyip, ekrana bastırıyorum.

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.

RISK - [Proje]

Çok uzun zamandır düşündüğüm, fakat zaman sıkıntısı nedeniyle yapamadığım şeylerden biriside, üniversite yılları boyunca yapmış olduğum projeleri blogumda yayınlamaktı. Bunlardan ilki üniversite 1.sınıfta "CS 116" kodlu, "Programlamaya Giriş II" dersinde, C programlama dilini kullanarak bir arkadaşımla yaptığım RISK adlı konsol oyunu. Görsel anlamda pek iç acıcı olmasada programlamaya yeni adım atmış birisi için hatırı sayılır derecede güzel bir oyun yapmaya çalıştım. Bu yazımda oyunla ilgili ufak bilgiler verip, yazının sonunda kaynak kodunun linkinide vereceğim. Öncelikle RISK, 2 kişilik bir savaş simulasyonu. Oyun "Soğuk Savaş" konseptini baz alarak ilerliyor. Konseptin "Soğuk Savaş" olmasının nedeni oyunu geliştirmeye başladığım ilk zamanlarda, deneme amaçlı oynadığım oyunlarda rakip oyuncuların hiçbirinin ilk hamleyi yapmaması, oyundaki asker ve tank gücünün bloklaşmasıyla ilgili. Her oyuncunun oyun başında 5 asker ve 5 tank birliği bulunuyor. Oyun sıra tabanlı, bir oyuncu hamlesini yaptıktan sonra hamle sırası diğer oyuncuya geçiyor. Askerlerin 25 atak, 20 savunma gücü varken, tankların 65 atak, 60 savunma gücü bulunuyor. Oyundaki harita 2 boyutlu bir matris. Hamle sırasına sahip kullanıcı; Sahip olduğu birliği hareket ettirebilir(Askeri birliklerin hareketi 1 birim iken tank birliklerinin hareket kabiliyeti 2 birim) ya da sırasını rakibine devredebilir. Hamle sırasına sahip kullanıcı, oyuncu açısından rahat bir oynanabilirlik sunması için ordusunun o anki durumunuda görüntüleyebiliyor. Unutmadan son bir şey daha var onuda söyleyeyim, oyunda 2 tanede şifre var. Bu şifrelerden ilki(HUSEYIN) birliklerinizin atak ve savunma gücünü 100 yaparken, ikinci şifre(AKCAN) birliğinizin harita üzerinde istediğiniz herhangi bir noktaya ilerlemesine imkan sağlıyor. Şifredeki isim ve soyisim dersi almış olduğumuz öğretim görevlisine aittir. Bu kadar detaydan sonra şimdi size birkaç resim eşliğinde oyunu göstermek istiyorum.