Flash CS5 ve ActionScript 3.0 ile Pacman Oyunu Yapma

Paylaş

Şimdiye kadar öğrendiğimiz birçok komutu uygulayarak Pacman oyununun basit bir versiyonunu yapacağız. Öncelikle Bu konuda büyük emek sarf eden 11ATL sınıfı öğrencisi Furkan Kerim YANBAŞ‘ı tebrik ediyorum. Pacman.rar eklenmiştir. Aşağıdan indirebilirsiniz. (20.05.2015)

  • Bunun için Flash programını açın ve çalışma sahnenizi oluşturun. Sahneye labirent çizin ama labirentin bir çıkışı olsun 🙂
  • Labirentin her duvarını tek tek seçerek F8 tuşuna basın ve Film Klibine çevirin.
  • Çevirdiğiniz nesnelere tek tek farklı isim verin. Biz burada duvarlara a ismini verdik ama her duvarın ismi a olursa programınız çalışmayacaktır. Onun için duvarlara a1,a2,a3,…,a26′ya kadar isimlendirdik.
  • İşin en zor ve uzun kısmı labirent içinde bulunan yemlere aynı şekilde isim vermek. Bizim uygulamamızda tam 81 adet yem var ve isimleri b. Yemlerde de isimler farklı olaması gerektiği için b1,b2,b3,…,b81 şeklinde ayrı ayır isimlendirdik.
  • Birde bitiş çizgisine bayrak koyduk ki çıkışın orası olduğu belli olsun 🙂
  • Skoru yazdırabilmek için sahneye bir dinamik metin alanı ekleyin ve adını skor olarak belirleyin.
  • Ve en son olarak kahramanımız pacman’i çizin ve ismini pacman olarak belirleyin.
  • ve son olarak 28. Satıra bakarsanız orada duvara değerse 2. Kareye git komutu var ve 2. Kareyi yazmadım orada oyun bitti tekrar başla butonu var o butonu koyup tıklayınca oyunun başına yani 1. Kareye gitme kodunu yazarsanız sorunsuz çalışacaktır aksi halde pacman duvardan geçer. İyi günler herkese.

Hepsi bitince sahnede boş bir alanı tıklayın ve F9 tuşuna basarak aşaıdaki kodları yazın.

Normalde bir nesnenin başka bir nesneye çarpmasını kontrol etmek için kullanılan komut hitTestObject()’tir ve kullanımı şu şekildedir;

Bizim kahramanımız pacman, 81 adet yeme ve 26 adet duvara çarptımı diye tek tek kontrol etmek oldukça zor olacaktı. İşte o kısmı kısaca for döngüsü kullanarak geçtik. Yani kısaca;

Kodlar bu kadar kısalınca insan iyi ki döngüler var diyor. 🙂 Kolay gelsin.

Bu uygulamamızda pacman yön tuşları ile hareket ettirilince ok yönüne göre dönüyor ama yukarıdaki kodlarda dönmeyecektir. Çünkü biraz daha üzerinde çlıştık ve geliştirmeye devam ediyoruz. Geliştikçe kodları yükleyeceğim.

Get Adobe Flash player

İndirmek İçin Tıklayın

15.713 views

Gelen Aramalar:

  • adobe cs6 flash player labirent oyunu yapma kod (14)
  • flash oyun yapımı (12)
  • blewxrz (1)
  • replaceacj (1)
  • rhymespp (1)
  • though5yf (1)
  • withoutnfx (1)

Flash CS5 ve ActionScript 3.0 ile Pacman Oyunu Yapma” için 73 yorum

  1. Proje ödevim vardı Flash dan action kodları ile oyun yapımı son güne bırakmıştım çok teşekkür ederim sadece indirdim ve renklerı degıstırdım direk hocaya vericek şekilde örneğiniz. Çok sağolun hız içinde koddan +1 ve ya -1 olanlar 3 veya 4 yaparsanız iyi oluyor iyi kodlamalar!!

  2. 6 7 tane hata verıyor
    kodları burdan aldım ımkansız
    ne yapmam lazım proje odevım acıl yardım edın plase
    Teşekkürler..

    1. kodlarda sorun yok. fla olarak indirdiğinizde çalışır ancak kodları kendi yaptığınız uygulamada kullanacaksınız dikkatli olarak değişiklik yapmanız gerekecektir.

  3. Kodları fılan burdan aldım ama hıc bır sey hareket etmıyor
    ne yapmam lazım acıl pacmannın ısmını fılan verdım
    kodları da yazdım .
    ACIL YARDIM PLASR

    1. kodlarda sorun yok. fla olarak indirdiğinizde çalışır ancak kodları kendi yaptığınız uygulamada kullanacaksınız dikkatli olarak değişiklik yapmanız gerekecektir.

  4. TypeError: Error #2007: hitTestObject parametresi boş olmamalıdır.
    at flash.display::DisplayObject/_hitTest()
    at flash.display::DisplayObject/hitTestObject()
    at pacmanog_fla::MainTimeline/hit()

    bu hatayı veriyor ne yapmalıyım herseyı tek bır framede uyguladım zaten

    1. if (pacman.hitTestObject(root[“a”+j]))
      satırında hittest içine gelen değişkenin adını yanlış yazmış olabilirsiniz. Nesnelerin isimlerini kontrol etmenizde fayda var

    1. kodlardan hızını ayarlayın.
      pacman.x=pacman.x+1;
      ve
      pacman.y=pacman.y-1;
      kodları var oradan +1 veya -1 i değiştirin

  5. ya proje ödevim vardı çokkkkk teşekkürler baya yardımcı oldunuz tabi başta anlamadım yemleri yemedi falan ama sonunda hatamı buldum yem sayılarını falan değiştirdim sonunda çalıştı çokk teşekkür ederim :))) valla arada çalışmıyo diyen var ama çok güzelde çalışıo 🙂 teşekürler mustafaakbal 🙂

  6. packman yaptım ancak ses dosyası ekleyemiyorum

    kullandığım kodlar
    hizz = 100;
    yatay = random(1050);
    dikey = random(800);
    //
    onEnterFrame = function () {
    if (mak_mc.a_mc.hitTest(yem)){
    yem._x = yatay;
    yem._y = dikey;
    txtPuan.text=int(txtPuan.text)+9
    }

    if (yatay>1050-yem._width*4) {
    yatay -= yem._width*4;
    }
    if (dikey>800-yem._height*4) {
    dikey -= yem._height*4;
    }
    };

    nereye ekliyeceğim yardım edin

    1. ses sürekli olsun derseniz şu şekilde olacak.
      ses eklemek için flashta File(Dosya) >> import(içe Aktar) >> import to libraryardından (Kütüphaneye aktar) yapıp Flash içine sesi alın. Yeni bir layer oluşturun. ve layerin ilk frameni seçin.
      seçince Alttaki properties (Özellikler) menüsünde frame ile ilgili ses ayarları açılır.
      ordaki Ses AD (Yok) yazan açılan menüde Kütüphaneye eklediğiniz müzik görünücektir.
      bunu seçerek o frame müziği eklemiş olursunuz.

      ses dursun ve çalmasın isterseniz bir buton yapıp içine
      stopAllSounds(); yazarak sesleri kapatabilirsiniz

  7. böyle bi hata alıyorum hemde bir sürü arka arkaya çözümü bilen varsa yarım lütfen

    TypeError: Error #2007: Parameter hitTestObject must be non-null.
    at flash.display::DisplayObject/flash.display:DisplayObject::_hitTest()

    1. eğer birden fazla karede hittest kullanıyorsanız ve hepsinin çağırılan fonksiyon isimler aynı ise bu hatayı veriyor genelde. aynı fonksiyonları farklı karelerde kullanacaksanız fonksiyon isimlerini de değiştirmelisiniz.

  8. ya benim duvara değince yanmasını değilde pacman ın durmasını istiyorum onu kodunu nasıl yazıcam lütfen yardımcı olurmusun

    1. for (j = 1; j<=26;j++) { if (pacman.hitTestObject(root["a"+j])) gotoAndStop(2); } olan yeri for (j = 1; j<=26;j++) { if (pacman.hitTestObject(root["a"+j])) { burada hareket yönünü belirleme komutlarını yazın. } } şeklinde değiştirmeniz gerekecektir. Ancak biraz daha detaylı düşünün çünkü çarpınca tüm hareketleri durdurursanız bu kez pacman olduğu yerde kalacaktır. for (j = 1; j<=26;j++) { if (pacman.hitTestObject(root["a"+j])) { if(event.keyCode==Keyboard.LEFT) { pacman.x=pacman.x; pacman.rotation=180; } } } böyle yaparsanız sola gitmez ancak 4 yön içinde bunu uygularsanız bukez pacman duvara çarptığında artık oradan ayrılamaz çakılı kalır tabiri caizse.

  9. pacman aşağı yukarı gidiyor ama duvarlardan geçiyor ve yemleri yemiyor. herhangi bi hata vermiyo. 2.kareye gitmiyo

    bi de şunu yazıyo

    TypeError: Error #2007: hitTestObject parametresi boş olmamalıdır.
    at flash.display::DisplayObject/_hitTest()
    at flash.display::DisplayObject/hitTestObject()
    at pacman_fla::MainTimeline/hit()

    yardımcı olursanız sevinirim.

  10. Merhabalar.Verdiğiniz kodlar işime yardımcı oldu ancak pacman yemleri yemiyor ,duvardan geçiyor ve skor hesaplanmıyor ve

    Scene 1, Layer ‘Layer 1’, Frame 2, Line 67 1084: Syntax error: expecting identifier before assign.
    Scene 1, Layer ‘Layer 1’, Frame 2, Line 67 1084: Syntax error: expecting rightparen before j.
    Scene 1, Layer ‘Layer 1’, Frame 2, Line 72 1084: Syntax error: expecting identifier before assign.
    Scene 1, Layer ‘Layer 1’, Frame 2, Line 72 1084: Syntax error: expecting rightparen before i.

    hatalarını veriyor nasıl çözebilirim yardımcı olabilir misiniz ?

    1. hata mesajlarından anladığım kadarı ile değişken tanımlama ve parantez hataları var. hata yazan satırların kodlarını yazabilir misiniz? inceleyelim çözmeye çalışalım.

      1. 1.hata=for (j = 1; j<=26;j++)
        2.hata=for (i = 1; i<=81;i++)

        Hatalara tıkladığımda sorunların hepsinin bu satırlarda oldugunu gösteriyor .Ayrıca ReferenceError: Error #1065: TLFTextField değişkeni tanımlanamadı. diye bir yazı çıkıyor output sekmesinde yardımcı olursanız çok sevinirim performans ödevim için gerekli olan kodlar 🙁

        1. i ve j değişkenlerini tanımladınız mı? tanımlanmadıysa hata bunlardan kaynaklı olabilir yada üst satırlarda bulunan parantez hatası bu satırları etkiler. parantezleri de kontrol edin.

          1. Evet “var i,j “olarak tanımladım .Parantezlerdede sıkıntı yok sanırım .:(

    1. actionscript büyük küçük harfe duyarlıdır. yazdığınız kodlarda buna çok dikkat edin. yani nesneler isimlendirilirken araba olarak isimlendirilir ama kodlarda Araba olarak kullanılırsa çalışmayacaktır. Hata mesajını lütfen yazar mısınız? Flash zaman çizelgesinde derleyici hatalarını verir. ona göre yardımcı olmaya çalışırım.

  11. lütfen diğer kodlarıda yazarmısınız.ne yaptıysanız yaptım ama olmuyo duvardanda geçiyo ve pacman yukarı aşağı gitmiyor.

    1. Duvardan geçesine imkan yok çünü ilk hittest olan yerde yani 28. Satırda duvara çarpınca 4. Kareye git var 4. Karede ise oyun bitti tekrar başla butonu bulunuyor onu koymadım sadece pacmani hareket ettiren ve yemleri yiyen kodları koydum. 4. Kareye o tasarımıda yaparsanız çalışacaktır sorunsuz.

      1. arkadaşım burada tüm kodlar yok. azcıkta uğraşıverin. mantığını size gösterdik herşeyi bizden bekliyorsunuz. beğenmediyseniz tam kodları bulun kullanın. hepsini vermek zorunda değilim.

  12. Oyunun kodlarını doğru vermemişsiniz duvara çarpınca hata vermiyo bu ne biçim oyun bence bu işi bırakıp internet kafa çalıştırın

    1. Eğer 4. Kareniz yoksa çalışmayacaktır. Bu kodlar sadece pacman için. Duvara çarpınca 4. Kareye gidiyor ve oyun bitti yazızı orada. Oradan bir butonla tekrar başlıyorsunuz. Lütfen azcık kodları yorumlayınız.

  13. function hit (e:Event):void
    { var i,j ;
    for (j = 1; j<=26;j++)
    {
    if (pacman.hitTestObject(root["a"+j]))
    gotoAndStop(4);
    }
    for (i = 1; i<=81;i++)
    {
    if (pacman.hitTestObject(root["b"+i]))
    {
    root["b"+i].x = -100;
    skor.text = String(parseInt(skor.text)+1);
    }
    }

    }
    bu kodları nereye yazcaz ve 1.satırda hata veriyor

    1. kodları direkt olarak sahnede boş bir alanı seçtikten sonra F9 tuşuna basarak yazacaksınız. ne hatası veriyor yazabilriseniz yardımcı olmaya çalışırım.

  14. Merhabalar.Ben bir labirent oyunu yapıyorum.Nesnenin duvarlardan geçmesini nasıl önleyebilirim? Yardımcı olursanız çok sevinirim.

    1. kusura bakmayın biraz geç oldu ama şu şekilde düşünerek yapabilirsiniz.
      Nesne duvara çarpınca koordinatını yani x düzleminde gidiyorsa x’i, y düzleminde gidiyorsa y’yi arttırmazsanız hareket etmeyecektir.
      daha açık olsun derseniz mesela nesne yatayda sağa doğru gidiyor bu durumda nesne.x = nexne.x + 5 ile hareket ettiriyorsunuz. eğer duvara çarparsa arttırma işlemi yapmayın yani nesne.x=nesne.x yapın böylelikle olduğu yerde kalacaktır nesne.

        1. bunu tüm koordinarlar için yaptığınızda durmamasının imkanı yok bu kod olduğun yerde dur ilerleme demektir.

  15. function hit (e:Event):void
    { var i,j ;
    for (j = 1; j<=26;j++)
    {
    if (pacman.hitTestObject(root["a"+j]))
    gotoAndStop(4);
    }
    for (i = 1; i<=81;i++)
    {
    if (pacman.hitTestObject(root["b"+i]))
    {
    root["b"+i].x = -100;
    skor.text = String(parseInt(skor.text)+1);
    }
    }

    }

    bunda bi hata var

    1. hatayı yazar mısınız? ona göre bir cevap vereyim. bende herhangi bir hata vermiyor.zaten kodları deneyerek sitede de yayınlıyorum

    2. hatayı yazar mısınız? ona göre bir cevap vereyim. bende herhangi bir hata vermiyor.zaten kodları deneyerek sitede de uygulamasını yayınlıyorum.

    1. yemlerin hepsi zaten hepsi farklı yerlerde. Yerler derken katmanlardan bahsediyorsanız gerek yok. hepsini bir katmana koysanız da olur.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.