This article is currently in the process of being translated into Turkish (~97% done).
Introduction
Bu yazımızın hızlı bir özeti: klasikleşmiş olan Snake oyununu WPF ile tekrar canlandıracağız, ve çıktığımız aşağıdaki gibi olacak

Oyun üretmek özellikle gençlerin programlamaya başlamasının başlıca nedenlerindendir. Fakat genel soru: Nasıl başlarım ve neye ihtiyacım var. İlk ihtiyacın olan şeylerden biri bir C#,C++ ya da popüler benzerleri gibi bir programlama dili ve tercih ettiğiniz bu programlama dilinde usta olmak, gerçekten başka bir şeye ihtiyacın yok: sadece ekranın alt tarafına pixel eklemeye başla ve bir noktada çalışan bir oyuna sahip olacaksın.
Ancak, çoğu insan düşük seviyeli işler için biraz yardımı tercih eder. Eğer bunu sizin için yapabilecek bir kütüphane veya framework varsa, ekranın piksellerini manuel olarak eklemeye neden uğraşasınız ki? Böylece eğlenceli bir oyun inşa etmeye odaklanabilirsiniz. Bu konuda size yardımcı olacak birçok framework bulunmaktadır ve aslında, bunlardan biri WPF framework'üdür.
Şimdi, WPF'nin oyun yaratmak istediğinizde en bariz seçim olmadığını kabul edelim – kesinlikle çoğunlukla iş odaklı uygulamalar için kullanıcı arayüzleri oluşturmak üzerine odaklanmış bir framework'tür. Ancak yine de, WPF framework'ünde bir oyun oluşturmak için kullanabileceğiniz birçok öğe bulunmaktadır ve belki de aynı derecede önemli olan bir şey: Windows'ta bir uygulama arayüzü çizmek ve kontrol etmek için gerekli tüm mekanizmaları elde edersiniz.
Yani, basit bir oyun yaratmak istiyorsanız, WPF aslında iyi bir seçim olabilir. En azından bir uygulama oluşturmak, oyunun basit bir alanını çizmek gibi temel tüm yönlerde büyük bir yardımcı olacaktır. Eğer gelişmiş 3D grafikler ve hızlı hareket eden nesneler gibi şeyler eklemek istiyorsanız, başka bir kütüphane/framework'ten daha fazla yardıma ihtiyaç duyabilirsiniz, ancak basit bir oyun için – örneğin klasik bir Snake oyunu – gayet iş görecektir!
SnakeWPF
Konseptimize bir kanıt olarak, son derece klasik Snake oyununun WPF tabanlı bir versiyonunu yapmaya karar verdim. Oyun alanı olarak normal bir WPF Uygulaması kullanacak ve gerçek oyun oynanışını oluşturmak için normal WPF kontrolleri/şekilleri kullanılacak. Snake oyununu seçmemin nedeni, oldukça kolay bir şekilde uygulanabilir olması (çok fazla mantık üretmenize gerek yok) ve basit geometrik şekiller (kareler ve daireler gibi) kullanarak uygulanabilmesi, bu şekillerin WPF framework'ü ile çok kolay bir şekilde kullanılabilmesidir. Ama aynı zamanda basit yapısına rağmen hala gerçekten eğlenceli bir oyun olması!
Eğer Snake oyununu bilmiyorsanız, yalnızca 90'ların sonları/2000'lerin başlarında bir Nokia cep telefonu sahibi olmadığınızı varsayabilirim. Snake oyununun ilk versiyonu bundan çok önce yazılmış ve gösterilmişti, ancak Nokia, tüm cep telefonlarında kendi versiyonunu dahil etmeye karar verdiğinde büyük bir hit oldu.
Oynanış, ne kadar basitse o kadar eğlencelidir: Sanal bir yılanı bir yönde (sol, sağ, yukarı veya aşağı) hareket ettirirsiniz, amacı yiyecek (bazen bir elma) bulmaktır. Yılanınız elmaya dokunduğunda, elmayı yer ve yılanınız büyür, ekranda yeni bir elma belirir. Eğer duvarlara ya da kendi yılanınızın kuyruğuna çarparsanız, oyun biter ve baştan başlamak zorunda kalırsınız. Ne kadar çok elma yerseniz, o kadar yüksek puan alırsınız, ancak kendi kuyruğunuza çarpmamak o kadar zorlaşır.
Oynanışın birçok farklı versiyonu vardır – örneğin, yılanınızın hareket hızının her elma yediğinizde artması, oyunu giderek daha zor hale getirir, ancak tüm Snake sürümleri bunu yapmaz. Bir diğer varyasyon ise duvarlardır – bazı sürümler, duvarın üzerinden geçmenize ve karşı tarafta çıkmanıza izin verirken, diğer sürümler ise duvara çarptığınız anda oyunun bitmesine neden olur.
Bizim SnakeWPF oyunumuzda, duvarlar serttir (yılan onlara çarptığında ölür) ve yılanın hızı, yediğiniz her elma için belirli bir noktaya kadar üssel olarak artar.
Summary
Önümüzdeki birkaç makalede, klasik Snake oyununun güzel bir versiyonunu WPF framework'ü kullanarak uygulayacağız. Bir sonraki makalede arka plan ile başlayacağız ve sonunda, ilk tam işlevsel WPF tabanlı oyunumuzu oluşturacağız.
Lütfen şunu unutmayın ki, bu bir WPF öğreticisi olmasına rağmen, oyun mantığını uygulamak için normalden biraz daha fazla C# koduna ihtiyaç duyacağız. İlerledikçe çoğunu açıklamaya çalışacağım, ancak C# hakkında biraz daha bilgiye ihtiyacınız olursa, ağımızda güzel bir Tam bir C# öğreticisi bulunduğunu unutmayın!