XNA ile Pong oyunu yazalım - 1 yazıma bu yazı ile devam ediyorum.
XNA ile ekrana yazı yazdırmak için öncelikle Content projesi içerisinde bir spritefont dosyası oluşturmalıyız.
Pong projesi için ben Arial.spritefont ismini verdiğim dosyayı oluşturdum, “yorum satırları kaldırılmış halini” aşağıdaki gibi düzenledim;
<?xml version=”1.0” encoding=”utf-8”?> <XnaContent xmlns:Graphics=”Microsoft.Xna.Framework.Content.Pipeline.Graphics”> <Asset Type=”Graphics:FontDescription”> <FontName>Arial</FontName> <Size>16</Size> <Spacing>0</Spacing> <UseKerning>true</UseKerning> <Style>Regular</Style> <CharacterRegions> <CharacterRegion> <Start> </Start> <End>~</End> </CharacterRegion> </CharacterRegions> </Asset> </XnaContent></pre>
Gördüğünüz gibi, font dosyası aslında font’un özelliklerini yazdığımız bir Xml dosyası.
GameLoop sınıfının değişkenlerine Arial font dosyamızı yükleyeceğimiz değişkeni de ekleyelim;
SpriteFont Arial;
LoadContent() method’unda Arial.spritefont dosyasını Arial değişkenine yükleyelim;
Arial = Content.Load<SpriteFont>("Arial");
Şimdi Draw() method‘una aşağıdaki kodları ekleyerek, oyuncuların skorlarını ekrana yazdıralım;
spriteBatch.DrawString(Arial, "Oyuncu 1 : " + Oyuncu1Skor, new Vector2((float)(PENCERE_GENISLIK * 0.05), 30), Color.Yellow); spriteBatch.DrawString(Arial, "Oyuncu 2 : " + Oyuncu2Skor, new Vector2((float)(PENCERE_GENISLIK * 0.80), 30), Color.Yellow);
Bu kod parçası ile, spriteBatch değişkeninde yeralan DrawString() method’unu kullandık. DrawString() method’unun parametrelerine bakacak olursak;
Gelelim, oyunda ses çıkartmaya;
Öncelikle wav formatında iki ses dosyasını Content içerisine sürükleyip bırakalım.
Class seviyesindeki değişkenlere iki tane daha ekleyelim;
SoundEffectInstance ArkaplanSes; SoundEffectInstance SkorSes;
LoadContent() method’unda bu değişkenlerin değerlerini atayalım;
ArkaplanSes = Content.Load<SoundEffect>("Pong").CreateInstance(); SkorSes = Content.Load<SoundEffect>("recycle").CreateInstance();
Gördüğünüz gibi, SoundEffectInstance tipinde iki değişken tanımladık. Bu değişkenlere Content içindeki ses dosyalarını yüklerken, SoundEffect tipinin CreateInstance() method‘unu kullandık.
Böylece ses değişkenlerimiz kullanıma hazır hale geldi.
LoadContent() method’una aşağıdaki kodları da ekleyerek, arkaplanda çalacak ses değişkeninin sesini %20 oranına düşürelim ve loop olmasını sağlayalım (Böylece ses dosyasının sonuna geldiğinde başa dönüp çalmaya devam edecek).
Son olarak Play() methodu ile, ses dosyasını çalmaya başlayalım;
ArkaplanSes.Volume = 0.2f; ArkaplanSes.IsLooped = true; ArkaplanSes.Play();
Update() method’unda oyuncuların skor kazandığı kodlara aşağıdaki satırı da ekleyelim;
SkorSes.Play(); Böylece oyuncular skor yaptıkça, SkorSes değişkeninde yüklü olan ses dosyası çalınacak. İşte Pong oyunundan ekran görüntüsü. Oyunun kaynak kodlarını buradan indirebilirsiniz. ![XNA Pong oyunun bitmiş hali](/assets/uploads/2010/03/XNA_Pong.png "XNA_Pong")
Senior Software Engineer, @Microsoft
Ada ve Ege'nin babası ;)
Makale Adedi: 484