XNA ile oyun geliştirmeye başlamadan önce, ekrana nasıl çizim yapabileceğimizi öğrenmemiz gerekiyor.
Not : Buradan ileriye devam etmeden önce XNA - Başlangıç yazımı okumanızı tavsiye ederim.
Öncelikle, ihtiyacımız olacak iki görseli bilgisayarınıza kopyalamanız gerekiyor;
Solution Explorer‘da Content üzerine sağ tuşla tıklayarak ari.png ve fil.png dosyalarını projeye ekleyelim.
GameLoop.cs dosyamızda class seviyesinde Texture2D tipinde iki değişken oluşturalım;
Texture2D ArkaPlan; Texture2D Ari;</pre> Daha sonra bu değişkenlere resimleri yükleyeceğiz. Aynı yere bir tane de Rectangle tipinde değişken oluşturalım.
Rectangle OyunPencere;
Bu değişkene ekranımızın boyutlarını yüklüyor olacağız.
LoadContent() method’unda bu değişkenlerin değerlerini atayalım;
OyunPencere = new Rectangle(0, 0, graphics.GraphicsDevice.Viewport.Width, graphics.GraphicsDevice.Viewport.Height); ArkaPlan = Content.Load<Texture2D>("fil"); Ari = Content.Load<Texture2D>("ari");
GameLoop class’ının constructor‘ında oyunumuzun başlığını değiştirebiliriz;
public GameLoop() { this.Window.Title = "XNA - Oyun Temelleri"; graphics = new GraphicsDeviceManager(this); Content.RootDirectory = "Content"; }
Draw() method’unda resimlerin ekrana çizim işlerini yapacağız. Çizime işlemlerini Begin() ve End() methodları arasında yapmamız gerekiyor;
spriteBatch.Begin(SpriteBlendMode.AlphaBlend); spriteBatch.Draw(ArkaPlan, OyunPencere, Color.White); spriteBatch.Draw(Ari, Vector2D.Zero, Color.White); spriteBatch.End();
Bu durumda uygulamayı çalıştırırsak, karşımıza şöyle bir ekran gelir;
Şimdi arı resmini, klavye tuşlarını kullanarak ekranda hareket ettirelim. Öncelikle arı’nın ekrandaki konumunu tutan bir değişkene ihtiyacımız var, class seviyesindeki değişkenlere ekleyelim;
Vector2 Location = Vector2.Zero;
Draw() methodunda ari resmini çizdiğimiz satırı güncelleyelim;
spriteBatch.Draw(Ari, Location, Color.White);
Son olarak Update() method’umuzu güncelleyelim;
protected override void Update(GameTime gameTime) { KeyboardState ks = Keyboard.GetState(); if (ks.IsKeyDown(Keys.Escape)) this.Exit(); if (ks.IsKeyDown(Keys.Up)) Location.Y -= 3; if (ks.IsKeyDown(Keys.Down)) Location.Y += 3; if (ks.IsKeyDown(Keys.Left)) Location.X -= 3; if (ks.IsKeyDown(Keys.Right)) Location.X += 3; base.Update(gameTime); } Gördüğünüz gibi, klavyede o anda basılı tuşları *Keyboard.GetState()* ile *ks* değişkenine yüklüyoruz, sonra basit karşılaştırmalar ile *Location* değişkenimizin *X* ve *Y* değerlerini değiştiriyoruz. *Draw()* method'unda ari'yi çizeceğimiz yer olarak *Location* değişkenini verdiğimiz için, klavyeyi kullanarak ari'yi hareket ettirebildiğimizi görüyoruz. ![XNA Oyun Temelleri](/assets/uploads/2010/02/XNA_OyunTemelleri_2.png "XNA Oyun Temelleri") Oyunun kaynak kodlarını buradan indirebilirsiniz.
Senior Software Engineer, @Microsoft
Ada ve Ege'nin babası ;)
Makale Adedi: 484