Ana sayfa Yazılım Flash ile oyun programcılığı

Flash ile oyun programcılığı

0

Oyun yazabilmek için biraz matematik ve birazda fizik bilmek gerekir, gerisi programcılık bilginize kalmıştır. Elbette değişik algoritmalar kullanarak oyununuzu daha güzel ve hızlı hale getirebilirsiniz ama her zaman oyunu ilginç fikirler ve güzel tasarımlar satılmasını sağlar
 

Basit bir araba hareket script”i yazarak oyun programcılığına giriş yapmanızı sağlayacağım. Actionscript 3 dilini kullanacağım (halen as2 tercih edenler var ama biz en yenisini kullanalım)

Basit bir araba sürmek için öncelikle ihtiyacımız olan şey bir araba modeli. Google”dan car top view yazarak hoşuma giden bir araba resmini copy/paste ile Flash programının içine alıyorum. öncelikle kendimize yeni bir layer yaratarak buraya araba movieclip”imizi Library”den (resim 1) sürükle bırak ile stage”ımıze yerleştiriyoruz. Arabayı yerleştirdiğimiz Layer”a Araba ismini veriyorum (Layerlara isim vermeni faydası sadece programcılar için yararladır, ilerki zamanlarda nerede ne vardı diye aramız gerekmez). Arabayı bir movieClip olarak Library”ye ekliyorum ve Instance name olarak araba ismini veriyorum (unutmayın Actionscript büyük küçük harfe duyarlıdır, ben yazım hatası yapsam bile siz yapmamaya çalışın) (resim 2) .
 

emre eldemir
Resim 1
 
  oyun programcılığı
Resim 2
 
Oyun başladıktan sonra her geçen saniye oyuncunun ne yaptığını ve buna bağlı olarakta arabanın ne yapması gerektiğini programlamamız gerekiyor. Bunun en kolay yoluda addEventListener ile istediğiniz bir Event”i takip etmektir. Ben bu oyunda ENTER_FRAME event”ini takip edeceğim ve her değişiklikte arabamızın ne yapması gerektiğini güncelleyeceğim, KeyboardEvent”larndan KEY_DOWN ve KEY_UP eventlarını takip ederek kullanıcının klavyeden hangi tuşlara bastığını bulacağım. Olay basit görünüyor.

 

Yeni bir layer yaratarak ismini Actionscript koyalım. Bu layer içersine ihtiyacım olan kodları yazma başlayalım. (resim 3)

Oyunda 3 klayve tuşunu takip edeceğim yukarı, saga ve sol tuşları simdilik benim için yeterli (Siz istiyorsanız daha sonradan aşağı tuşunuda ekleyerek fren yapmasını sağlayabilirsiniz). Hangi tuşun o anda aktif olarak kullanıldığını anlayabilmek için Boolean (true/false) tipinde 3 adet değişken tanımlıyorum.

var sola:Boolean;
var saga:Boolean;
var yukari:Boolean;

Şimdide klavyeden bir tuşa basıldı mı yada basıldıktan sonra kaldırıldı mı olarak 2 adet event”ı dinlememiz gerekiyor.

stage.addEventListener(KeyboardEvent.KEY_DOWN,tusaBasinca);
Keydown yani klavyeden bir tuşa basınca tusaBasinca fonksiyonu çalışacak.
stage.addEventListener(KeyboardEvent.KEY_UP,tustanParmagimiziCekince);
 

flash
Resim 3
 
KeyUp klavyeden basılmış tuştan parmağımızı çekince tustan Parmagimizi Cekince fonksiyonu çalışacak.

Son olarakta arabamızın hareketlerini ekrana yansıtabilmek için
stage.addEventListener(Event.ENTER_FRAME, hareket);
komutunu kullanacağız ki bize ekranda istediğimiz görüntüyü gösterebilelim.

Dergide bana ayrılan sayfa adeti sınırlı olduğu için fazla açıklama yapamıyacağım ama kodları size açıklamam gerekirse, KEY_UP yani klavyeden herhangibir tuşa bastığımız zaman tusaBasinca fonksiyonu çalışacaktır ve event.keyCode ile hangi tuşa basıldığını bize bir sayı olarak verecektir ve klavyedeki her tuşun sayısal bir değeri vardır . küçük a harfinin 65 ve büyük a harfinin ise 16″dır.

function tusa Basinca (event: KeyboardEvent)
{if (event.keyCode == 37){sola = true;
}else if (event.keyCode == 39)
{saga = true;}else if (event.keyCode == 38)
{yukari = true;}}

Yukarıdaki kodlarda klavyedeki sol tuş:37, sağ tuş:39 ve yukarı tuşu ise 38 rakamları olarak bilgisayar tarafından bilinir ve bize söylenir. Bende bize gelen sayılara göre hangi yöne hareket edeceğimizi belirleyeceğiz.

 

function tustanParmagimiziCekince(event:KeyboardEvent){if (event.keyCode == 37){sola = false;}else if (event.keyCode == 39){saga = false;}else if (event.keyCode == 38){yukari = false;}}

Her karede hareket fonksiyonu çağrılarak arabanın sağa mı sola mı yoksa ileri doğru hareket edeceği belirlenir.

function hareket(event:Event)
{if (sola){araba.rotation -= 3;}if (saga){
araba.rotation += 3;}if (yukari){ileri();}}
 


Resim 4
 
Eğer araba ileriye doğru hareket edecekse, aşağıdaki kodu kulla nacağız
function ileri(){var hiz: Number = 3.0;var aci: Number 2*Math.PI* (araba. rotation/ 360);
var dx: Number = hiz * Math.cos (aci);
var dy:Number = hiz * Math.sin(aci);araba.x += dx;araba.y += dy;}

Arabanın bir hızı olmalı
var hiz: Number = 3.0;
arabanın o andaki açısını hesaplamak için dereceyi Flash”ın anlayabileceği radyan”a çevirmemiz gerekiyor, Onunda formülü radyan = 2*PI*(derece/360)
var aci:Number = 2*Math.PI*(araba.rotation/360);
x yönündeki gideceği mesafeyi hesaplıyoruz
var dx:Number = hiz * Math.cos(aci);
y yönündeki gideceği mesafeyi hesaplıyoruz
var dy:Number = hiz * Math.sin(aci);
ve arabanın o andaki x değerine az önce hesapladığımız değişim miktarı ile topluyoruz
araba.x += dx;
ve arabanın o andaki y değerine az önce hesapladığımız değişim miktarı ile topluyoruz
araba.y += dy;

Bu şekilde kodlarımızı daha da zenginleştirek çok daha eglenceli bir araba yarışı yaratabilirsiniz. Geçen aylardaki Flash media server konusuyla bu dersi birleştirerek multiplayer bir araba yarışı yapmak çok kolay bir hal alacaktır. (Resim 4)

 

BİR CEVAP BIRAK

Please enter your comment!
Please enter your name here