Yazılımcının yol rehberi

Bu yazacağım yazı kesinlikle tavsiye vermek ya da yol göstermek amacında değil. Tamamen kendi rotamı çizerken ve çizdiğim rotada ilerlerken yaptığım yanlışlardan çıkardığım dersleri yazacağım. Ayrıca yapmam gereken şeyleride buraya ekleyeceğim. Çünkü benim bir özelliğimde bir şeyi yazarsam daimi bir şekilde aklımda kalıcı olmasıdır.

Zaman Yönetimi

İlk ve en büyük sıkıntılarımdan birisi bu aslında. Zamanımı iyi bir şekilde yönetmeyi ve bazı şeyleri disipline sokmayı beceremiyorum. Örneğin yapmam gereken bir şeyi yapmaya başlayıp yarıda bırakmak ertesi güne ertelemek benim büyük sıkıntılarımdan. Ve ertesi günü geldiğimde bıraktığım noktadan başlamak bazı sıkıntılara sebeb oluyor. Ya bilgiyi yanlış alıyor ya da yarım yamalak bir bilgi ile öğreniyorum öğrendiğim şeyi. Bunun için ürettiğim çözüm ise şu şekilde :

  1. Okuduğum ya da izlediğim her neyse ona belirli bir zaman biçmek. Belirttiğim zaman dışında sadece yaptığım işe odaklanmak ve hiç bir işle uğraşmamak (yemek yemek de buna dahil.)
  2. Yapmam gereken iki şeyi birbirini karıştırmamak (İngilizce çalışırken, bir yandan da matematiğe bakmamak gibi.)
  3. Çoğunlukla ingilizce çalışıyorum. İngilizceye daha fazla ağırlık veriyorum. Bu yüzden zaman yönetimimi ingilizceyi düşünürek yapmam gerekiyor.
  4. İngilizceye hafta sonları günde 4 saat ayırmam gerekiyor.
  5. Matematiğe günde 2 ya da 2.30 saat ayırmam geterli.
  6. Geri kalan zaman zarfında ise -3 saat gibi bir süre- büyük tutkum olan bisiklet sürmeyi gerçekleştirmek.
  7. 1-2 saat ise film ya da dizi izleyerek geçirebilirim.
  8. Yazılımcıların olmassa olması gece çalışma kısmında ise “programlama ile ilgili bir şeyler yapmakla geçirilebilir.”

İngilizce Çalışmak

İngilizce bilmek bir yazılımcı için çok önemli bir özelliktir. Aslında günümüzün gerekliliklerinden birisidir. Bu yüzden ingilizceye daha fazla yoğunlamam ve hem listening hem writing alanında kendimi geliştirmem gerekiyor. Bunun için çok yoğun bir şekilde çalışmaya başlıyorum. Son zamanlarda ingilizce filmler izliyorum ve ingilizce hikayeler okuyorum. İngilizce hikaye okuma olayını biraz daha fazla ve disiplinli bir şekilde yapmam gerekiyor. Bunun haricinde writing olayını iyi geliştirmem lazım neredeyse cümle kurmada çok büyük sıkıntılar içerisindeyim. Günde ingilizceye yukarda da değindiğim gibi 4 ya da 5 saat vermem gerekiyor. Bu 4-5 saati ise gün gün kategorize ederek bir günün 4 saatini ; – full gramer çalışarak, ertesi gününü – full listening çalışarak gerçekleştirmem gerekiyor. Yani gün be gün hem writing,listening,speaking gibi kademe kademe gitmem gerekiyor.

Matematik Çalışmak

İşte geldik aslında en çok yapmak istediğim fakat bir türlü düzenli bir şekilde başlayamadığım olaya. Matematiği öğrenmemin sebeblerinin arasında tabii ki programlama ve oyun geliştirme etkenleri var. Ancak matematiği ben bunların dışında tutuyorum ve benim için farklı bir yeri olduğunu biliyorum. Bunun için eğer iyi bir oyun geliştirici ya da yazılımcı olmak istiyorsam ilk olarak ingilizceyi daha sonrada matematiği çok iyi bir şekilde bilmem gerekiyor.

Kendime belirli ve çok düz, hiç zor olmayan bir rota belirledim. Bu yüzden yapmam gereken şeyleri fazla geciktirmeden yapmam benim açımdan daha faydalı olacaktır. Bir yandan açıköğretim bir yandan bunlar beni sıkıntıya sevk edebilir. O yüzden sıkılmadan sevk alarak, ileride bunun cok getirisi olacağının bilincine vararak çalışmalıyım. Umarım bu yazdıklarım sadece burada kalmaz ve hızlı bir şekilde hayata geçiririm. Ardıdan öğrendiğim bilgileri buradan yayma fırsatını bulurum.

as3 keyboard helper methods

var keysDown:Array = [];
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownf);
stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUpf);
stage.addEventListener(Event.ENTER_FRAME,update);

function update(e:Event):void
{
        if(isKeyDown(Keyboard.SPACE) == true) // jumping code here...
}

function onKeyDownf(e:KeyboardEvent):void
{
	keysDown[e.keyCode] = true;
}

function onKeyUpf(e:KeyboardEvent):void
{
	keysDown[e.keyCode] = false;
}

function isKeyDown(keyCode:int):Boolean
{
	return keysDown[keyCode];
}

Make a pyramid with as3

Kod açıklamasını sonraya bırakacağım. Ancak bugün böyle bir şey yapmak istedim. Daha sonra oturup düşündüğümde bu şekilde olacağına karar verdim. Bunu bir çok programlama dillerinde kullanabilirsiniz. Algoritma aynı sadece seçeceğiniz ve yerleştireceğiniz objeler farklı olacaktır. Yakın zamanda kodların açıklamasını detaylı bir şekilde vereceğim.

 

for(var i:int=20; i>0; i-=1)
{
	for(var j:int=i; j<21-i; j++)
	{
		var k:K = new K();
		addChild(k);
		k.x = 50 + (j * (k.width+2));
		k.y = 250 + (1 - i * (k.height+2));
	}
}

as3 game development – “working with tile – 2″

Birinci yazımda minik bir tile based game yapmaya çalıştık. Bu ikinci part’da ise bir karakter yaratıp ona kılavye aracılığyla sağa ve sola, yukarı ve aşağıya gitmesini sağlayacağız. İlk derstdeki kodlara ekleme yaparak ilerledim.

İlk olarak sizin yapmanız gereken herhangi bir düşman karakter çizerek bunu movieclip objesine dönüştürmeniz. Ardıdan bu yaptığınız movieclip objesinin içerisine girin ve bütün çizimi seçerek f8’e basarak movieclip objesine çevirdikten sonra instance name kısmına “gfx” yazın. Daha sonra sahneden movieclibi silip, kütüphaneden aynı objeye sağ tıklayıp properties panelinden “Export for Actionscript” seçeneğine tıklayıp “Hero” adını verin.
 


import flash.events.KeyboardEvent;
import flash.events.MouseEvent;

var mapWidth:Number = 10;
var mapHeight:Number = 10;
var tileSide:Number = 30;
var totalTiles:Number = 100;// mapWidth * mapHeight
var cell:Kare;

// set up hero variables
var heroSpawnX:Number = 1;// oyuncumuzun çıkacağı nokta yatayda x - ekseni
var heroSpawnY:Number = 1;// oyuncumuzun çıkacağı nokta dikeyde y - ekseni

var hero:Hero  = new Hero();
stage.addChild(hero);

hero.x = heroSpawnX * tileSide;
hero.y = heroSpawnY * tileSide;

var heroX:Number = 1;
var heroY:Number = 1;

// must be same the array of two variables mapWidth, mapHeight.
var maps:Array = [[1,1,1,1,1,1,1,1,1,1],
  [1,0,0,0,0,0,0,0,0,1],
  [1,0,0,1,1,1,1,1,0,1],
  [1,0,0,0,0,0,0,0,0,1],
  [1,0,0,0,0,0,1,1,0,1],
  [1,0,0,0,0,0,1,0,0,1],
  [1,0,0,1,0,0,0,0,0,1],
  [1,0,0,1,1,1,1,0,0,1],
  [1,0,0,0,0,0,0,0,0,1],
  [1,1,1,1,1,1,1,1,1,1]];

for (var i:int = 0; i < mapHeight; i++)
{
	for (var j:int = 0; j < mapWidth; j++)
	{
		cell = new Kare();
		cell.gotoAndStop(maps[i][j]+1);
		cell.x = tileSide * j;
		cell.y = tileSide * i;
		addChild(cell);
	}
}

stage.addEventListener(KeyboardEvent.KEY_DOWN, movement);

function movement(event:KeyboardEvent):void
{
	if (event.keyCode == 40 && maps[heroY + 1][heroX] == 0)
	{
		hero.gfx.rotation = 0;
		hero.y +=  tileSide;
		heroY++;
	}

	if (event.keyCode == 38 && maps[heroY - 1][heroX] == 0)
	{
		hero.gfx.rotation = 180;
		hero.y -=  tileSide;
		heroY--;
	}

	if (event.keyCode == 39 && maps[heroY][heroX + 1] == 0)
	{
		hero.gfx.rotation = 270;
		hero.x +=  tileSide;
		heroX++;
	}

	if (event.keyCode == 37 && maps[heroY][heroX - 1] == 0)
	{
		hero.gfx.rotation = 90;
		hero.x -=  tileSide;
		heroX--;
	}
}

as3 game development – “working with tile – 1”

İlk olarak döngüde ve oluşturacağımız desende kullanacağımız değişkenleri belirtiyoruz. Buraya kadar önemli bir şey yok. Önemli olan kısım Arrayin tanımlanması ve kullanılmasıyla ilgili. “maps” dizisini kısaca açıklayayım.

0 = mavi kareyi temsil etmekte
1 = siyah kareyi temsil etmektedir.

array[0…][1…] yani;
döngü sonucunda array[i][j] sürekli artarak karelerimizi belirlemektedir. “cell.gotoAndStop(maps[i][j]+1);” satırında ki 1 artırmamızın sebebi karemizin 0 ise +1 artırılarak “1” ulaşılmasıdır. 1 ise +1 yapıp 2 ye ulaşması sağlanmıştır. Buradaki sayısal değerler yerine imaj dosyalarını kütüphaneye “instance” belirterekte yapılabilir.

var mapWidth:Number = 10;
var mapHeight:Number = 10;
var tileSide:Number = 21; // Karemizin genişliği - beim karemin genişliği -21px-
var totalTiles:Number = 100; // mapWidth * mapHeight
var cell:Kare;

var maps:Array = [[1,1,1,1,1,1,1,1,1,1],
  				  [1,0,0,0,0,0,0,0,0,1],
   				  [1,0,0,0,0,0,0,0,0,1],
   				  [1,0,0,0,0,0,0,0,0,1],
   				  [1,0,0,0,0,0,1,1,0,1],
     			  [1,0,0,0,0,0,1,0,0,1],
   				  [1,0,0,1,0,0,1,0,0,1],
   				  [1,0,0,1,1,1,1,0,0,1],
   				  [1,0,0,0,0,0,0,0,0,1],
   				  [1,1,1,1,1,1,1,1,1,1]];

for(var i:int = 0; i < mapHeight; i++)
{
	for(var j:int = 0; j < mapWidth; j++)
	{
		cell = new Kare();
		cell.gotoAndStop(maps[i][j]+1);
		cell.x = tileSide * j;
		cell.y = tileSide * i;
		addChild(cell);
	}
}