Thursday, January 26, 2012

RISK - [Proje]

Çok uzun zamandır düşündüğüm, fakat zaman sıkıntısı nedeniyle yapamadığım şeylerden biriside, üniversite yılları boyunca yapmış olduğum projeleri blogumda yayınlamaktı. Bunlardan ilki üniversite 1.sınıfta "CS 116" kodlu, "Programlamaya Giriş II" dersinde, C programlama dilini kullanarak bir arkadaşımla yaptığım RISK adlı konsol oyunu. Görsel anlamda pek iç acıcı olmasada programlamaya yeni adım atmış birisi için hatırı sayılır derecede güzel bir oyun yapmaya çalıştım. Bu yazımda oyunla ilgili ufak bilgiler verip, yazının sonunda kaynak kodunun linkinide vereceğim. Öncelikle RISK, 2 kişilik bir savaş simulasyonu. Oyun "Soğuk Savaş" konseptini baz alarak ilerliyor. Konseptin "Soğuk Savaş" olmasının nedeni oyunu geliştirmeye başladığım ilk zamanlarda, deneme amaçlı oynadığım oyunlarda rakip oyuncuların hiçbirinin ilk hamleyi yapmaması, oyundaki asker ve tank gücünün bloklaşmasıyla ilgili. Her oyuncunun oyun başında 5 asker ve 5 tank birliği bulunuyor. Oyun sıra tabanlı, bir oyuncu hamlesini yaptıktan sonra hamle sırası diğer oyuncuya geçiyor. Askerlerin 25 atak, 20 savunma gücü varken, tankların 65 atak, 60 savunma gücü bulunuyor. Oyundaki harita 2 boyutlu bir matris. Hamle sırasına sahip kullanıcı; Sahip olduğu birliği hareket ettirebilir(Askeri birliklerin hareketi 1 birim iken tank birliklerinin hareket kabiliyeti 2 birim) ya da sırasını rakibine devredebilir. Hamle sırasına sahip kullanıcı, oyuncu açısından rahat bir oynanabilirlik sunması için ordusunun o anki durumunuda görüntüleyebiliyor. Unutmadan son bir şey daha var onuda söyleyeyim, oyunda 2 tanede şifre var. Bu şifrelerden ilki(HUSEYIN) birliklerinizin atak ve savunma gücünü 100 yaparken, ikinci şifre(AKCAN) birliğinizin harita üzerinde istediğiniz herhangi bir noktaya ilerlemesine imkan sağlıyor. Şifredeki isim ve soyisim dersi almış olduğumuz öğretim görevlisine aittir. Bu kadar detaydan sonra şimdi size birkaç resim eşliğinde oyunu göstermek istiyorum.


Oyuna başladığınızda yukarıdaki gibi bir ekran karşılıyor sizi. Yeni oyuna başlayabilirsiniz ya da oyundan çıkabilirsiniz. Oyuna kaydetme ve buna benzer şeylerde eklenebilir, oyunu geliştirmek isteyen kaynak kodlarında istediği değişikliği yapabilir.

Alttaki resimde ise oyun başlamış durumdadır. Kullanıcının 4 seçeneği vardır. İlk seçenek birliğini hareket ettirme seçeneği, ikinci seçenek hamle sırasını karşıdaki kullanıcıya vermek, üçüncü seçenek ordusunun durumunu kontrol etme seçeneği, dördüncü seçenek ise şifre yazmak için konsol fonksiyonunu çalıştırma seçeneğidir.




Üstteki resimde oyuncu ilk seçeneği seçerek birliğini hareket ettirmek istemiştir. [4 0] noktasındaki tankını [4 2] noktasına taşımıştır. Bu arada birliklerle ilgili ufak bir bilgi verelim. T5[U] dediğimiz şey 5 numaralı Amerikan[USA] tankıdır. S2[S] dediğimiz şey ise 2 numaralı Sovyet[SOV] askeridir. Yani oyun alanındaki T'ler[TANK] tankları ifade ederken, S'ler[SOLDIER] askerleri ifade etmektedir.



Üstteki resimde gördüğünüz şey ise gerçekleşmiş bir savaşın sonucu. [0 4] noktasındaki Amerikan tankının [0 5] noktasına hareket etmesi ve orada bulunan Sovyet tankı ile savaşması sonucu ortaya çıkmıştır. Bu noktada önemli olan şey ise bilgisayarın rastgele seçmiş olduğu (random) sayıdır. Atak gücümüzün bu sayının üstünde olması savaşı kazanmamız için yeterlidir.


Alttaki resimde ise oyuncu ordusunun o anda ki durumuna bakıyor. Birliklerinin atak, savunma güçlerinin yanında daha önce hareket edip etmediğini gösteren (moving) değişkende bulunmaktadır. Eğer bir birlik daha önce hareket etmiş ise hamle sırası karşı tarafa geçene kadar bir daha hareket edemez. Bu resimde aynı zamanda oyuncu ilk şifreyi yazarak ordusundaki her birliğin atak ve savunma gücünü 100'e tamamlamıştır.



Oyunum genel hatları ile bu kadar. İlgilenenler oyunu geliştirebilirler. Mesela haritaya göl, deniz ve sadece bu noktalarda hareket edebilecek gemi, denizaltı tarzı yeni birlikler ekleyebilirler, oyuna yapay zeka dahi koyabilirler. İlgilenenler için kaynak kodu buradan indirilebilir. Oyun Windows XP üzerinde Code::blocks 10.05 aracılığı ile sorunsuz derlenmiştir. Oyundaki renk kodları Windows'un özel kütüphanesini kullandığı için oyun Linux dağıtımları üzerinde hata verir. Ufak değişiklikler sonucu oyunu Linux dağıtımları üzerinde de derleyip oynayabilirsiniz.

1 comment:

  1. Hi superb blog! Does running a blog like this take a
    lot of work? I've virtually no knowledge of coding but I had been hoping to start
    my own blog in the near future. Anyhow, if you have any recommendations or tips for new
    blog owners please share. I know this is off
    subject nevertheless I just had to ask. Kudos!

    ReplyDelete