kartal.io – Çok oyunculu tarayıcı oyunu

Oyun yayından kaldırılmıştır

kartal.io çok oyunculu bir web tarayıcı oyunudur. Google playde android sürümüde mevcuttur.

Oyundaki amacınız, küçük kartalları veya yiyecekleri yiyerek büyümektir. Kartalınız her beslendiğinde biraz daha büyür ve puan kazanırsınız. Kontroller çok basittir, kanat çırparak yükselirsiniz. (Tıklayarak veya boşluk tuşuna basarak kanat çırpılır) . Diğer kartalları yemek için, saldırı uçuşu modunda, onları arkadan yakalayıp yerseniz. (Ters Tık veya CTRL tuşu ile saldırı uçuşu moduna geçilir.)

Eğer sizden daha büyük bir kartal tarafından avlanırsanız veya yere düşerseniz ölürsünüz. Karşıdan gelen bir kartala çarparsanız, hasar alırsınız.

Onun için diğer kartallarla uyum içinde olmalı, çarpışmalardan ve av olmaktan kaçılmalısınız.

Oyna : kartal.io

Google Play : kartal.io (Android)

background

Teknik Detaylar

Kullanılan Teknolojiler

  • Node.js (Server Side)
  • Node.js mods : socket.io , node-gameloop , nodemailler, fs-extra ,uglify-js
  • Canvas / HTML5
  • Javascript ( Client)
  • Javascript libs : Jquery, buzz.js ,socket.io
  • Cordova ( Android )
  • Cordava plugins : crosswalk
  • nw.js ( Desktop )

Yapay Zeka Teknolojileri

  • Genetik Algoritmalar ( evolution.js )
  • Yapay Sinir Ağları ( ANN.js )
  • Nöroevrim

Programlama Dilleri

  • Javascript
  • HTML/5
  • CSS

Kendi Teknolojilerim

Not : kartal.io için kullandığım ve “kendi teknolojilerim” başlığı altındaki kütüphaneler GNU GPL lisansı ile açık kaynaklıdır. Oyunun kodları, kapalı kaynak kodludur.

kartal.io is a multiplayer browser game. Also downloadable on Google Play.
In game , your purpose is, eat smaller eagles or foods for grow up.
The game has easy controls. Flap or fall. Press space button or click for flap. 
Press CTRL or right click for switch to attack mode.
If you hunted by bigger eagle or fall to ground, you will die.
And if you impact to oncoming eagle, you will get damage.
You must be in rapport with another eagles.
Play : http://kartal.io
Google Play : https://play.google.com/store/apps/details?id=net.farukcan.kartalio

Javascript Scope İncelikleri

Bir fonksiyon veya değişken, oluşturulduğu yerin scopeuna dahildir. Kullanıldığı yerin değil.

var random = function(){
	return Math.floor(Math.random()*100);
}
var sagas = [];
var hero = "faruk"+random(); // faruk7
 
var newSaga = function(){
	var foil = "thefoil"+random();
	sagas.push(function(){
		var deed = "thedeed"+random();
		console.log(hero+deed+foil);
	});
};
 
newSaga();
sagas[0](); // faruk7 thefoil2 thedeed1
sagas[0](); // faruk7 thefoil2 thedeed4
newSaga();
sagas[0]();  // faruk7 thefoil2 thedeed5
sagas[1]();  // faruk7 thefoil9 thedeed6
sagas[0]();  // faruk7 thefoil2 thedeed7
sagas[1]();  // faruk7 thefoil9 thedeed8
 
// burdan anlaşıldığı üzere, bir fonksiyonun scopunu , oluşturulduğu yer belirliyor.
// yani sonrasında kullandıldığı scopre değil
 
// mesela burdaki foil değeri, ilk defa fonksiyonun tanımlandığı foil değeri
// newsagadan sonra, foil güncellenmiyor, yeni foil oluşuyor. 
// sagas[0] eski foil değerini döndürecektir.

Nesne Yönelimli Javascript

Javascriptte, class(sınıf) yoktur. Onun yeri objeler vardır. Bu objeler class olarakta kullanılabilir.

// Örnek sınıflar
 
// Hayvan sınıfı değişkenleri ve constructor
function Hayvan(yaş){
	this.yaş = yaş;
	console.log("Yeni hayvan");
}
 
// Hayvan sınıfı metodları
Hayvan.prototype.büyü = function(){
		this.yaş++;
}
 
// Insan sınıfı değişkenleri ve constructor
function Insan(yaş){
	Hayvan.call(this,yaş); // super classın constructorünü çağır
	console.log("Yeni Insan");
}
 
// Kalıtım - prototipleri birleştir
Insan.prototype = Object.create(Hayvan.prototype);
Insan.prototype.constructor = Insan;
 
// Insanı sınıfının kendine özgü metodları
Insan.prototype.konuş = function(){
	console.log("Ben "+this.yaş+" yaşıdayım");
}
 
// Test
var ahmet = new Insan(16);
ahmet.büyü();
ahmet.konuş();
console.log(ahmet);

Object.create fonksiyonu, bir objeyi kopyalamaz, sadece adresleme yaparak , yeni bir obje oluşturur.(delegasyon) Bunun sayesinde, kalıtım yaparken hafıza kullanımını azaltırız.

this deyimiyle javascriptte, sınıfın kendisi kastedilmez. Bir fonksiyonun hangi obje üzerinde çağrıldığı kastedilir.  obje.fonksiyon(); yani o fonksiyonun içinde this kullanıldıysa, noktanın solundaki ilk ifade olan obje ,this’e karşılık düşer. Buda javascriptin önemli farklarında biridir.

Bir fonksiyondan sonra call kullanılırak, o fonksiyonundaki this ifadesi, istediğimiz obje ile yer değiştirebiliriz.

obje1.fonksiyon(); // burda this=obje1
obje2.fonksiyon.call(obje3); // burda this=obje3