Visual Basic ile Yılan Oyunu Yapımı

By | 23 Ağustos 2007

Yılan oyunu hepimizin cep telefonlarından bildiği bir oyundur. Şimdi biz de kendi yılan oyunumuzu yapacağız. Herhangi bir dile bağlı kalmadan mantığını anlatmaya çalışacağım.

Yılan oyunu için öncelikle ekranımızı sanal karelere bölmeli ve kaça kaçlık bir ekranda oynamak istediğimizi belirlemeliyiz. Bu örneğin anlatımında ekranı 12 x 8 boyutlarında alacağım. Fakat siz daha geniş bir ekran belirleyebilirsiniz.

Öncelikle ekran üzerindeki verileri bir tabloda tutalım. Şimdi aşağıdaki tabloyu dikkatle inceleyin.

yilan1

Yukarıdaki 12×8 tablo  üzerinde 6 birimlik bir yılan görülmektedir. Duvar olması istenen kareler 1 ile, yılan olması istenen kareler (2,3,4,5) ile ve puan olması istenen kare 8 ile gösterilmiştir. Ekranda herhangi bir bilgi içermeyen kareler ise 0 değeri almıştır. Bu sayılar istediğiniz gibi değiştirebilirsiniz. Önemli olan hangi sayının hangi anlamı taşıdığıdır. Bütün oyun boyunca, oyuncunun yaptığı her hareket buradaki bilgilerin değişmesine yol açacaktır. Buradaki bilgilere göre de oyun her seferinde görsel imgelerle oyuncuya bilgi verecektir.

Peki niye her objenin 1 adet değeri var da yılan için 4 değer var? Güzel soru. Buradaki değerler yılanın o karedeki hücresinin nereye dönmek istediğini tutar. Yılan, çeşitli yönlere kıvrılabilir ve yılan üzerindeki her kare, kıvrımların nerede olacağı bilgisini taşır. Mesela yukarıdaki ekranda, baş tarafın (7,4) karesi olduğunu düşünürsek, yılan bir süre sağa gidip sonra 2 kare aşağı gitmiş. Yılanın her noktasının ne tarafa kıvrılacağı bu bilgilerle saklanabilmekte. Tablodaki bu bilgilerin tutulabilmesi için 2 boyutlu bir dizi yeterlidir. Bunun için aşağıdaki tanımlamayı yapalım.

Siz kendi sınırlarınıza göre Tablo dizisinin boyutlarını değiştirebilirsiniz. Ayrıca bir de yılanın başlangıç ve bitiş karelerinin koordinatlarını tutalım. Bunun için aşağıdaki tanımlamayı yapalım.

Konum dizisinin ilk 4 elemanı koordinat bilgilerini tutar. Bunlar; Yılanın Başının Yatay Konumu , Yılanın Başının Düşey Konumu, Yılanın Sonunun Yatay Konumu ve Yılanın Sonunun Düşey Konumu. Yukarıdaki tablodaki verilere göre Konum dizisini dolduralım.

Şimdi yılan hareketleri ile ilgili akıllarda soru kalmaması için 2,3,4,5 değerlerinin tablo üzerinde nasıl kullanıldığına bakalım. Yılan başlangıçta aşağıdaki gibi dursun. Yılanın başı (3,7) karesi olsun. Yılanın sonu da (3,3) karesi olsun.

yilan-2

Yılanı bu noktadan itibaren aşağı yöne döndürmek isteyelim. Yılanın her hareketinde başlangıç ve bitiş noktalarının yerini ilerletip bu noktaları güncelleyeceğiz. Ne tarafa ilerleteceğimizi bu noktaların değeri verecek. Eğer yılan aşağı doğru gitmek istiyorsa baş tarafın kare değerini 3 yaparız. Ardından da baş tarafın yeni yerini (4,7) karesi olarak seçip bu karenin değerini 3 yaparız.

yilan3

Burada (3,7) karesini 3 yapmamızın sebebi yılanın orada aşağı yöne döndüğünü kaydetmektir. Yılanın baş tarafı ile işimiz bitti. Şimdi son tarafının işlemini yapalım. Yılanın bitiş noktası (3,3) karesi idi. Bu karenin değeri 2 olduğu için yani sağa doğru bir hareket gözüktüğü için yılanın bitiş karesinin yeni yeri bir sağdaki kare olan (4,3) karesi olur. Bu karenin değeri değiştirilmez. (3,3) karesinin değeri ise sıfır yapılır.  Yılanın son hali aşağıdaki gibidir.

yilan4

Son durumda Konum dizisinin elemanları aşağıdaki gibidir.

 Yine aynı mantıkla aşağıya bir kare daha ilerlersek son durum ve değişkenlerimiz aşağıdaki gibi olur.

yilan5

Şimdi karşımıza bir puan çıktı. Yılan her hareketinde önündeki karenin hangi değerde olduğunu kontrol etmeli. Biz yukarıdaki örneklerimizde bu kontrolü yapmamıştık. Yılan ilerleyeceği yeni karenin değerine bakar. Eğer boş ise sorun yoktur. 8 ise de sorun yoktur. Sadece oyuncunun puanını 1 arttırırsınız ve rastgele bir puan daha yerleştirirsiniz. Ama yeni karenin değeri (0 ve 8) değilse yılan duvara veya kendisine çarpmış demektir. Bunun için bir yön değişkeni tanımlayalım. Bu yön değişkeni yılanın başının hangi yöne gideceğini yani, kullanıcının istediği yönü saklasın. Yılan da kullanıcının bu komutunu kontrol etsin. Konum dizisinin 5. indisi olarak yılanı döndürmek istediğimiz yönü tutalım. Böylece tek bir Konum dizisi ile yılanın konumlarını ve yönünü tutmuş olduk.

Bu kodlara göre en son kaldığımız şekli inceleyelim. Öncelikle Konum dizisine tekrar bakalım.

Yılanın yönü Konum(5) = 3 olduğundan ve Tablo (Konum(1) , Konum(2)+1) karesinin değeri 8 olduğu için yılan puan karesine gelir. Puan alınır. Oyuncunun skoru arttırılır. Peki burada yılanın boyunun uzamasını nasıl yaparız? Kim sordu bu soruyu? Aferin… Tek yapmamız gereken puan alındığında yılanın son karesinin konumunu değiştirmemek. Yani yılanın başı ilerleyecek ama yılanın sonu 1 adım bekleyecek.

Küçük bir animasyon ile yukarıdaki anlatımları adım adım izleyelim.

yilan-animasyon

Puanı aldık ve artık karenin değeri 8 değil 3 oldu. Şimdi ekrana rastgele bir puan yerleştirmeliyiz. Bunun için tek yapmamız gereken RND fonksiyonu ile rastgele koordinatlar türetmek ve bu koordinatların tablodaki değerinin sıfır olduğundan emin olmak.

 X ve Y değerlerini nasıl türettik? RND fonksiyonu [0 , 1) arasında rastgele bir değer üretir. Sıfır dahil ama 1 dahil değil. Bu değerler içinde virgüllü olanlar da vardır. Amacımız yatayda 2 ile 11 arasında bir sayı türetmek olduğundan RND fonksiyonundan çıkan değerleri evvela 10 ile çarparız. Böylece 0 ile 9.999 arasında sayılar türetiriz. FIX fonksiyonu ile virgülden sonrasını atıp tam kısımları alırız. Böylece elimizde 0’dan 9’a kadar değerler oldu. Her değeri 2 ile toplarsak 2’den 11’e kadar sayılar elde ederiz. Bu yatay aralıktır. Burada puanın, kenar duvarların üzerine gelmesini önledik. Bu sayede 2’den 11’e kadar rastgele sayılar elde ettik. Aynı mantıkla da Y değerini bulabiliriz.

Son olarak oyuncunun kontrolünü koyalım. Oyuncu yılanın sadece yönünü etkileyecek. Klavyede tuş takımını kullanarak Konum(5) değerini değiştirecek. Yılan da her adımda bu değere bakıp, önündeki kareyi kontrol edecek ve sonuç üretecek. Tablodaki değişiklikleri görsel olarak ekrana yansıttığımızda güzel bir yılan oyunu üretmiş oluruz.

yilan-son

One thought on “Visual Basic ile Yılan Oyunu Yapımı

  1. Orhan

    Merhaba anlattığınız şekilde kodlara yaptım yalnız en sonunda tablo olmadi kodları yastıktan sonra kaydettim herhangi bi değişiklik olmadi yardım edebilirmisiniz

    Reply

Bir Cevap Yazın

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