Bu yazımda C# yazılım dili ile basit bir oyun yazılımı hazırlayacağız.
Her zamanki gibi yazmaya başlamadan önce biraz konu üzerinde konuşalım. Bir yazılım hazırlarken odaklanmamız gereken ilk nokta yazılımın ne iş yapacağı olacak, yani ne istediğimizi bilmeliyiz. Çünkü kod yazmak bir süre sonra işin kolay tarafı haline geliyor. Nasıl yaparım sorusundan önce ne yapmak istiyorum sorusunu kendimize sormalıyız. Nasıl bir yazılım istiyoruz ve ne gibi özellikleri olmalı.
Basit oyun yazılımımıza dönecek olursak, ilk adımı atalım ve nasıl bir oyun yazılımı istediğimizi belirleyelim. Klişe fikirlerden biri olsa da bir toplama oyunu yapacağız. En azından kod yazmaya yeni başlayan birçok insan gibi hesap makinesi yapmıyoruz:) Çocuklara toplama işlemini ve dolayısıyla matematiği sevdirecek bir oyun yazılımı hazırlamak istediğimizi düşünelim. Baloncuklar halinde arayüzde görüntüleyeceğimiz sayılardan, istenen toplamı veren iki sayıyı kullanıcının seçeceğini, doğru sonuçlar elde ettikçe de puan toplayacağını düşünelim. Artık bir fikrimiz var ve nasıl bir yazılım istediğimizi biliyoruz. Bu fikir aşaması ne kadar uzun tutulursa ve üzerinde ne kadar araştırma yapılırsa sonraki aşamalar o kadar kolay geçilecektir.
İkinci adımda ise bir akış diyagramı oluşturmamız gerekmektedir. Kullanıcının hangi seçimlerinin sonuçlarının ne olacağını bu akış diyagramı üzerinde modellemeliyiz. Hepimizin görmeye alışık olduğu bir akış diyagramı vardır. Belki de zihninizde çoktan canlandı. Kendi yazılımımıza ait basit bir akış diyagramına aşağıdaki resimde göz atalım.
Böylelikle, oyunumuz için basit bir akış diyagramı elde ettik. Kodlamaya geçmeden önce akış diyagramları hazırlamak, hem hazırlayacağınız kod mimarisinin kafanızda şekillenmesini hem de yaptığınız işe daha fazla hakim olmanızı sağlayacaktır. İyi bir akış diyagramı hazırlarsanız, kod yazarken dönüp birçok noktada diyagramınıza göz attığınızı farkedebilirsiniz. Tabi akış diyagramları kodlamaya başlamadan önce sonuç ürünün ne olacağına az çok karar verildiği zaman anlamlı olurlar. Örneğin hobi olarak geliştirmekte olduğunuz bir projeniz varsa, akış diyagramı konusuna pek girmemiş olabilirsiniz. Böyle durumlarda genellikle kervan yolda düzülür bakış açısı geçerli oluyor, kendimden biliyorum:)
Büyük bir projede çalışıyorsanız iş akışı için de bir diyagram hazırlamanız olasıdır. Geliştirilecek özelliklerin neler olacağı ve kimler tarafından geliştirileceği, tahmin edilen tamamlanma sürelerinin ne olacağı gibi veriler bir iş akışı diyagramı üzerinde gösterilebilir.
Gelelim üçüncü adımımıza, artık sonuç üründen beklentimizin ne olduğuna ve bu beklentilerin nasıl karşılanacağına karar verdik. Öyleyse sırada bu fikirleri gerçeğe dönüştürmek var.
Arayüz Tasarımı
Artık kodlamaya geçeceğimize göre, yeni bir C# - Windows Forms Application projesi başlatmamız gerekiyor. Bu konuda yardıma ihtiyacınız varsa önceki yine bu blogda yer alan ilk yazılarımı okuyabilirsiniz.
Yeni bir proje başlattığımızda karşımıza boş bir form nesnesi çıkmaktadır.
Yeni projenizi başlattığınızda karşınıza yukarıdaki resimde görünene benzer bir arayüz gelecektir. Eğer sol tarafta görmekte olduğunuz Solution Explorer paneli veya sağ taraftaki Toolbox paneli sizde açık değilse, üst menülerden View menüsü altındaki işlemleri kullanarak bu panelleri açabilirsiniz. Toolbox panelinin açılması için gerekli işlemi gösterir ekran görüntüsü aşağıdadır.
Artık arayüz tasarımına başlayabiliriz. Arayüz kullanıcılar için bir yazılımın en önemli özelliklerinden biridir. Bir arayüzün hem kullanıcı dostu olması hem de göze hitap etmesi beklenir. Eğer yazılımsal olarak işin en kolay yanı olduğunu düşünüyorsanız arayüz tasarımını daha fazla ciddiye almanızı öneririm. Kötü bir arayüz tasarlarsanız kullanıcılarınızdan gelen sayısız şikayet sizi bunaltabilir:)
Arayüz tasarımındaki en önemli ilkelerden bir tanesi, arayüzün kullanıcıların genel beklentilerini karşılamasıdır. Kullanıcı, diğer yazılımları kullanırken edindiği alışkanlıkları, sizin tasarladığınız arayüzü kullanırken de devam ettirebilmek ister. İlginç tasarımlar yapayım derken kullanıcılarınızın bir türlü kullanmayı öğrenemediği arayüzler tasarlayabilirsiniz.
Oyumuzun arayüzü için form1 nesnemize bir "Başlat" düğmesi yerleştirelim. Bunu yapmak için "toolbox" panelinden "Button" nesnesini seçerek form üzerine tıklayın. Düğmeyi form nesnesi üzerine yerleştirdikten sonra üzerine tıklayıp seçerek konumunu ve boyutlarını değiştirebilirsiniz.

Text özelliğini "Yeni Oyun Başlat" olarak değiştirelim.


Form ile ilgili özellikleri değiştirmek için, form üzerinde herhangi bir noktaya tıklayarak özellikler panelinde formun özelliklerinin görüntülenmesini sağlamalıyız. Form özelliklerinden "Text" ve "ShowIcon" özellikleri bizim değiştireceğimiz özelliklerdir.

Özellikleri yukarıdaki resimde görüldüğü gibi değiştirdikten sonra F5 düğmesine basarsak aşağıdaki resimde görülene benzer bir arayüz elde etmiş olacağız.

Sıra yeni bir oyun başlatıldığında hedef sayının gösterileceği "Label" nesnesini yerleştirmeye geldi. Bu nesne, kullanıcının ulaşmaya çalışacağı toplamları göstermek için kullanılacak.
Toolbox üzerinden label (etiket) nesnesini seçerek form üzerine yerleştirelim.

Nesneyi ekrana yerleştirdikten sonra özellikler panelinden yazı türünü ve boyutunu değiştirebiliriz.


Şimdi sırada düğmeleri yerleştirmek var. Düğmeler üzerinde kullanıcının etiket üzerindeki toplama erişmek için seçeceği sayılar yazıyor olacak. 5 adet düğme yerleştirip, içinden 2 tanesini kullanıcının seçmesini isteyeceğiz.
Arayüze düğme eklemek için Toolbox panelinden "Button" nesnesini seçin.Yerleştirdiğiniz düğmelerin renklerini göze hoş gelecek şekilde ayarlayabilirsiniz. Aşağıdaki resimde görülene benzer bir arayüz elde edelim.

Şimdi arayüzün çalıştığını hayal edelim:
* Kullanıcı "Yeni Oyun Başlat" düğmesine bastı.
* Etiket üzerinde ulaşması gereken sayı gösterildi.
* Düğmelerin üzerlerine sayılar yazıldı.
* Kullanıcı sayılardan 2 tanesinin üzerine tıklayarak toplam sayıya ulaşmaya çalıştı.
* Yazılım, seçilen sayıların hedef toplamı verip vermediğini denetledi.
Şu an hedef sayıya ulaşılıp ulaşılamadığını denetlemiş ve kalmış durumdayız. Eğer kullanıcı puan kazanmışsa aldığı puanı bir yerlerde göstermemiz gerekiyor. Hatta kaç deneme yaptığını ve kaçında hedef toplama ulaştığını da gösterebiliriz.
Öyleyse bir puan gösterim bölümü düzenleyelim ve içine birkaç nesne ekleyelim. Arayüzdeki nesneleri gruplamak için "GroupBox" nesneleri kullanılır. Bu nesne türünün kullanım amacı hem görsel olarak hem de yazılımsal olarak nesneleri ayrı bir çatı altına almaktadır.
Toolbox panelinden GroupBox nesnesi üzerine tıklayalım ve arayüzümüz içine yerleştirelim.

Yerleştirdiğimiz nesnenin arka plan rengini ve başlığını yukarıdaki resimde işaretlenmiş olan özellikleri değiştirerek güncelleyebiliriz.

Şimdi arayüze kullanıcının kaç defa toplam sayıya ulaşmaya çalıştığını ve kaçında başarılı olduğunu gösterecek etiketler eklememiz gerekiyor. 2 adet etiketi "Puan Durumu" nesnesi içine yerleştirdikten sonra yazı türlerini ve boyutlarını ayarlayalım. Aşağıdaki gibi bir arayüz elde edeceğiz.

Klavyeden F5 düğmesine basarsanız arayüzün yukarıdaki resimde görüldüğü gibi açıldığını görebilirsiniz. Kullanıcının arayüzü açtığında üzerinde "label" veya "button" yazan bu nesneleri görmesini pek istemeyiz. Düğme, etiket ve "GroupBox" nesneleri gibi üzerlerinde metin bulundurabilen nesnelerin özellikleri arasında "Text" özelliği bulunmaktadır. Bu "Text" özelliğini değiştirerek kullanıcının arayüzü ilk açtığında göreceği metinleri kaydedebilirsiniz.

Artık kullanıcımız her denemesinden sonra başarılı olup olmadığını bilebilecek ve bir sonraki denemesine başlayabilecek. Peki oyundan çıkmak istediği zaman ne yapacak? Pencerenin sağ üst köşesindeki çarpı işaretine basarak yazılımı kapatabilir. Ancak bu pek şık bir yöntem değil. Bir de oyundan çıkma düğmesi yerleştirmek gerek. Bir düğme daha yerleştirerek arayüz ile ilgili çalışmalarımızı tamamlayalım.

Yukarıdaki resimde gördüğünüz üzere, siyah arka plan üzerine beyaz harflerle bir "Çıkış" düğmesi yerleştirdim. Yazıların renklerini değiştirmek için, özellikler panelindeki "ForeColor" özelliğini kullanabilirsiniz.
Oyunumuzun arayüzü hazır. Şimdi sıra kodlarını yazmaya geldi:)
Oyumuzun arayüzü için form1 nesnemize bir "Başlat" düğmesi yerleştirelim. Bunu yapmak için "toolbox" panelinden "Button" nesnesini seçerek form üzerine tıklayın. Düğmeyi form nesnesi üzerine yerleştirdikten sonra üzerine tıklayıp seçerek konumunu ve boyutlarını değiştirebilirsiniz.

Düğmeyi yerleştirdikten sonra konumunu pencerenin sol üst köşesine getirdik. Şimdi düğmenin metnini, rengini ve boyutlarını değiştirelim. Arayüz nesneleri ile çalışırken, nesnelerin birçok özelliğini "Properties" panelini kullanarak değiştirebilirsiniz. Eğer properties paneli ekranınızda görünmüyorsa, düğme üzerine tıkladıktan sonra boşluk tuşuna basarak properties panelini açabilirsiniz.
Propoerties (Özellikler) panelinde, düğmeye ilişkin birçok özellik sıralanmaktadır. Biz bunlardan metin, renk ve boyut özelliklerini değiştireceğiz.
Text özelliğini "Yeni Oyun Başlat" olarak değiştirelim.
BakcColor özelliğini, yani düğmenin rengini değiştirmek için ilgili özellik üzerine tıklayıp renk seçin. Ben örnek yazılımımız için altın rengini seçtim. İstediğiniz herhangi bir rengi seçebilirsiniz.

Düğmenin boyutlarını değiştirmek için ise "Size" özelliğinin karşısındaki değer kutucuğuna "120;60" değerini yazalım. Böylelikle düğmemizi dikkat çekebilecek boyutta bir dikdörtgene dönüştürmüş oluyoruz.

Formun sol üst köşesine baktığımızda, "Form1" yazısı ile bir simge gözümüze çarpıyor. Bu form adı ve simge, VS'nin öntanımlı değerleridir. Bu değerler pek şık görünmediği için bunları da değiştirmekte fayda var. Oyunumuz için bir simge belirlemeyeceğimiz için yazılım ikonunun görünürlüğünü kapatalım. Formun adını da "Toplama Oyunu" olarak değiştirelim.
Form ile ilgili özellikleri değiştirmek için, form üzerinde herhangi bir noktaya tıklayarak özellikler panelinde formun özelliklerinin görüntülenmesini sağlamalıyız. Form özelliklerinden "Text" ve "ShowIcon" özellikleri bizim değiştireceğimiz özelliklerdir.

Özellikleri yukarıdaki resimde görüldüğü gibi değiştirdikten sonra F5 düğmesine basarsak aşağıdaki resimde görülene benzer bir arayüz elde etmiş olacağız.

Klavyeden F5 düğmesine bastığınız zaman, formunuzun ekranın muhtemelen ekranın sol üst köşesinde açıldığını görebilirsiniz. Formun ekranın ortasında açılması için forma ait bir özelliği değiştirme şansımız var. Bunun için, özellikler panelindeki "StartPosition" özelliğini değiştireceğiz.
"StartPosition" özelliğini, resimde görüldüğü gibi, "CenterScreen" olarak düzenleyip klavyeden F5 düğmesine basarsanız, formunuzun ekranın ortasında açıldığını görebilirsiniz.
Sıra yeni bir oyun başlatıldığında hedef sayının gösterileceği "Label" nesnesini yerleştirmeye geldi. Bu nesne, kullanıcının ulaşmaya çalışacağı toplamları göstermek için kullanılacak.
Toolbox üzerinden label (etiket) nesnesini seçerek form üzerine yerleştirelim.

Nesneyi ekrana yerleştirdikten sonra özellikler panelinden yazı türünü ve boyutunu değiştirebiliriz.


Şimdi sırada düğmeleri yerleştirmek var. Düğmeler üzerinde kullanıcının etiket üzerindeki toplama erişmek için seçeceği sayılar yazıyor olacak. 5 adet düğme yerleştirip, içinden 2 tanesini kullanıcının seçmesini isteyeceğiz.
Arayüze düğme eklemek için Toolbox panelinden "Button" nesnesini seçin.Yerleştirdiğiniz düğmelerin renklerini göze hoş gelecek şekilde ayarlayabilirsiniz. Aşağıdaki resimde görülene benzer bir arayüz elde edelim.

Şimdi arayüzün çalıştığını hayal edelim:
* Kullanıcı "Yeni Oyun Başlat" düğmesine bastı.
* Etiket üzerinde ulaşması gereken sayı gösterildi.
* Düğmelerin üzerlerine sayılar yazıldı.
* Kullanıcı sayılardan 2 tanesinin üzerine tıklayarak toplam sayıya ulaşmaya çalıştı.
* Yazılım, seçilen sayıların hedef toplamı verip vermediğini denetledi.
Şu an hedef sayıya ulaşılıp ulaşılamadığını denetlemiş ve kalmış durumdayız. Eğer kullanıcı puan kazanmışsa aldığı puanı bir yerlerde göstermemiz gerekiyor. Hatta kaç deneme yaptığını ve kaçında hedef toplama ulaştığını da gösterebiliriz.
Öyleyse bir puan gösterim bölümü düzenleyelim ve içine birkaç nesne ekleyelim. Arayüzdeki nesneleri gruplamak için "GroupBox" nesneleri kullanılır. Bu nesne türünün kullanım amacı hem görsel olarak hem de yazılımsal olarak nesneleri ayrı bir çatı altına almaktadır.
Toolbox panelinden GroupBox nesnesi üzerine tıklayalım ve arayüzümüz içine yerleştirelim.

Yerleştirdiğimiz nesnenin arka plan rengini ve başlığını yukarıdaki resimde işaretlenmiş olan özellikleri değiştirerek güncelleyebiliriz.

Şimdi arayüze kullanıcının kaç defa toplam sayıya ulaşmaya çalıştığını ve kaçında başarılı olduğunu gösterecek etiketler eklememiz gerekiyor. 2 adet etiketi "Puan Durumu" nesnesi içine yerleştirdikten sonra yazı türlerini ve boyutlarını ayarlayalım. Aşağıdaki gibi bir arayüz elde edeceğiz.

Klavyeden F5 düğmesine basarsanız arayüzün yukarıdaki resimde görüldüğü gibi açıldığını görebilirsiniz. Kullanıcının arayüzü açtığında üzerinde "label" veya "button" yazan bu nesneleri görmesini pek istemeyiz. Düğme, etiket ve "GroupBox" nesneleri gibi üzerlerinde metin bulundurabilen nesnelerin özellikleri arasında "Text" özelliği bulunmaktadır. Bu "Text" özelliğini değiştirerek kullanıcının arayüzü ilk açtığında göreceği metinleri kaydedebilirsiniz.

Artık kullanıcımız her denemesinden sonra başarılı olup olmadığını bilebilecek ve bir sonraki denemesine başlayabilecek. Peki oyundan çıkmak istediği zaman ne yapacak? Pencerenin sağ üst köşesindeki çarpı işaretine basarak yazılımı kapatabilir. Ancak bu pek şık bir yöntem değil. Bir de oyundan çıkma düğmesi yerleştirmek gerek. Bir düğme daha yerleştirerek arayüz ile ilgili çalışmalarımızı tamamlayalım.

Yukarıdaki resimde gördüğünüz üzere, siyah arka plan üzerine beyaz harflerle bir "Çıkış" düğmesi yerleştirdim. Yazıların renklerini değiştirmek için, özellikler panelindeki "ForeColor" özelliğini kullanabilirsiniz.
Oyunumuzun arayüzü hazır. Şimdi sıra kodlarını yazmaya geldi:)
Hiç yorum yok:
Yorum Gönder