24 Aralık 2009 Perşembe

Five Useful Links for Cloud Computing, Let's Look at These

A new searching subject is “cloud computing”. It has been very popular for two years. Well, what is cloud computing? Why do people need it, especially start-up companies? Different companies has commented on cloud computing according to their point of view. To see an objective look at this issue, I suggest to search on the link below containing information belonging to a conference (Cloud-II 2009) which was organized by IEEE in 2009.
http://thecloudcomputing.org/2009/2/
And you must look at what cloud computing vendor to decide whether benefits of your job you have. Our current question is how to use cloud, how to build and if you have a cloud service how tou sell it. Answers to these questions are included in the link below.
http://www.3tera.com/?_kk=cloud%20computing&_kt=100c365e-3c8e-4a87-9a75-d8b8b42817e8&gclid=CLqV7Ov3g54CFc8UzAodqlD0pw
Now, suddenly you decide to use the cloud. I can suggest the cloud guide at the following link. Step by step, you are told to what you need to do and the guid is free.
http://uk.sun.com/offers/details/cloudcomputing/?cid=20090416UK_TACO_CLCO_0032
If you are a developer and you are going to start this business on a familiar platform, I recommend Microsoft Azure (it’s also my presentation subject). Step by step what to do is located at the following link. Need to download from this link to tools and training kit you can easily reach. Meanwhile, it contains information about how you will deploy.
http://www.microsoft.com/windowsazure/getstarted/#develop
When you search cloud computing you will find some buzzwords. These are SaaS, PaaS, and IaaS. Google App Engine is the most popular one of the platforms as a service. General information about google App Engine and how to use it are included in the following link. Also, need to download the kit is available at this link.
http://code.google.com/intl/tr/appengine/docs/whatisgoogleappengine.html

13 Ocak 2009 Salı

INETA EGE HIT



Dokuz Eylül Üniversite' sinin ev sahipliğini yaptığı 2 gün süren Ineta eğitimi tamamalandı.

Çoğunluğu bilişim sektöründeki firmalarda çalışan geliştricilerin oluşturduğu etkinliğe üniversite ve lise öğrencilerinden yoğun talep vardı. Katılımcılar hallerinden pek memnundu. Daron Yöndem' in şiir gibi kod yazdığı söylendi. Ee doğru söze ne denir.

Umarız en kısa sürede yeni etkinliklerle Daron Yöndem' i tekrar aramızda görürüz.

Kendisine Dokuz Eylül Üniversitesi adına teşekkür ediyoruz.


**Detaylı bilgi için Daron Yöndem' in adresini ziyaret edebilirsiniz.



XNA’ de Modelin Hareketini Yönetmek

Modelin nasıl hareket ettiğinden bahsetmiştim ama çoğumuzun aklına bu modelin hareketi kendiliğinden oluyor. Oyuncu modeli hareket ettirmek istediğinde bunu kod olarak nasıl yapacağımız sorusu gelebilir. Bu sorunun cevabını yine Update metoduna ekleyteceğimiz satırlarda bulacağız. Unutmamız gereken önemli husulardan biride Game1.cs sınıfı içindeki metotların kullanımıdır. LoadContent metodu oyu ilk çalıştırıldığında gerekli yüklemeleri yapar ve sadece bir kere çağrılır. Draw ve Update metotları ise FPS değeri kadar çağrılır.

Şimdi ekleyeceğimiz satırlarla modelimiz sağa, sola, yukarı ve aşağı yönlerine kullanıcın verdiği talimatlarla hareket ediyor. Modelimiz sağ ok ile sağa, sol ok ile sola,...., hareket etmektedir.

Tanımlamamız gereken iki adet float tipinde değişken bulunmaktadır. Bunlardan forpozitionX değişkeni modelin X ekseninde hareketini sağlamak için tanımlanmıştır. Sağa ya da sola gitmesini sağlar. forpozitionY değişkeni ise modelin Y ekseninde aşağıya da yukarıya hareketini sağlamak için tanımlanmıştır.

if (keyboardState.IsKeyDown(Keys.Left): sol yönü belirten oka basılıp basılmadığını kontrol eder.

Eğer bu oka basıldıysa modelin hareketi sola olmalıdır. Bu durumda forpozitionX değişkeninin değeri azaltılır. Ben kullandığım modelin boyutuna uygun olsun diye 5.0f kullandım siz bu değeri modelinize uygun oalrak ayarlayabilirsiniz. Dikkat etmemiz gereken bu değerin 0.0f ve bunun altına düşmemisidir. Bu nedenle azaltma işleminden önce bu değişkenin değeri kontrol edilir.

if (keyboardState.IsKeyDown(Keys.Right)): sağ yönü belirten oka basılıp basılmadığını kontrol eder.

Bu oka basıldıysa modelin hareketi sağa olmalıdır. Bu durumda forpozitionX değişkeninin değeri arttırılır.

if (keyboardState.IsKeyDown(Keys.Up)): yukarı yönü belirten oka basılıp basılmadığını kontrol eder.

Eğer bu oka basıldıysa modelin hareketi yukarı olmalıdır. Bu durumda forpozitionY değişkeninin değeri arttırılır.

if (keyboardState.IsKeyDown(Keys.Down)): aşağı yönü belirten oka basılıp basılmadığını kontrol eder.

Eğer aşağıya hareketi sağlayan oka basıldıysa modelin hareketi aşağıya olmalıdır. Bu durumda forpozitionY değişkeninin değeri azaltılır. Ancak bu değerin 0.0f ve bunun altına düşmemisi gerekir. Bu nedenle azaltma işleminden önce bu değişkenin değeri kontrol edilir.


float forpozitionX = 0.0f;
float forpozitionY = 0.0f;



protected override void Update(GameTime gameTime)
{
// Allows the game to exit
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
this.Exit();

// TODO: Add your update logic here
//modeli hareket ettiren kodlar
KeyboardState keyboardState = Keyboard.GetState();
if (keyboardState.IsKeyDown(Keys.Left))
{
if(forpozitionX>5.0f)
forpozitionX -= 5.0f;
modelPosition = new Vector3(forpozitionX, forpozitionY, 0.0f);
}
if (keyboardState.IsKeyDown(Keys.Right))
{
forpozitionX += 5.0f;
modelPosition = new Vector3(forpozitionX, forpozitionY, 0.0f);
}
if (keyboardState.IsKeyDown(Keys.Up))
{
forpozitionY += 5.0f;
modelPosition = new Vector3(forpozitionX, forpozitionY, 0.0f);
}
if (keyboardState.IsKeyDown(Keys.Down))
{
if(forpozitionY>5.0f)
forpozitionY -= 5.0f;
modelPosition = new Vector3(forpozitionX, forpozitionY, 0.0f);
}
base.Update(gameTime);
}

XNA ‘de 3 Boyutlu Modeli Hareket Ettirmek

XNA’ de 3 boyutlu bir modeli nasıl ekleyeceğimiz ile ilgili yazımda “modelRotation” adlı bir değişkenden bahsetmiştim. Şimdi bu değişkende bazı değişiklikler yaparak modelimizi hareket ettirelim. “XNA Framework Content Pipeline” kullanarak dokularını eklediğimiz model nasıl hareket edecek?
Bunun için yapmamız gereken tek şey Update metosu içine tek satır kod eklemektir. Evet bir modeli tek satır bir kod ile döndürebileceğiz. XNA kütüphanesinin en büyük artılarından biride budur, az satırda kodla çok işler başarmanızı sağlar.
Şimdi Update metonunun içine bu satırı yazalım:



Draw metodu içindeki CreateRotationY metodu (Modelin Y ekseninde dönmesini sağlıyor.)yerine CreateRotationX metodunu kullanırsanız model X ekseninde döner, CreateRotationZ kullanırsanız hareketini Z ekseninde yapar.


XNA’ de 3 Boyutlu Model Ekleme

XNA kütüphanesini kullanarak oluşturduğunuz bir projeye 2 boyutlu bir nesne eklemek için gerekli olan tanımlamalar; öncelikle iki boyutlu resmimizi çizmemizi sağlayacak olan bir SpriteBatch nesnesi, bu resmimizin oyuna yüklenmesini sağlayacak olan bir Texture2D verisi ve resmin konumunu belirteceğimiz Vector2 yapısında tanımlanmış olan bir veriydi.

3 Boyutlu model eklemede işler biraz değişiyor. Herşeyden önce artık model kavramı işin içine giriyor. Artık mesh olarak da bahsedilen doku kavramı işin içine giriyor. Modele farklı açılardan baktığımızda önceki açıda göremediğimiz kısımlarını görürüz. Bu kısımlar aslında o modeli oluştuturken farklı çizilen resimlerin bir araya getirilmesinde kaynaklanıyor. Bu kısımları modelimizin dokuları olarak düşünebiliriz.

Bu yazımda size 3 boyutlu bir modeli eklemek için nelerin gerekli olduğundan ve projemizde yapmamız gerekenlerden bahsedeceğim.

1.) Gerekli Tanımlamalar

Öncelikle modelimiz ile ilgili tutacak bir Model nesnesi tanımlamalıyız.

Bu tanımlamayı Game1.cs sınıfımız içinde sınıf tanımlamamızın hemen içine yazalım. Ardından ekran oranı bilgilerini tutacak olan float türünde “aspectRatio” adlı bir değişken tanımlayalım. Şimdi bu modelimizi farklı açılardan da görmemizi sağlayan kameramız için modeli hangi açıdan görmek istiyorsak bu bilgileri bverebileceğimiz Vector3 tipinde bir değişken tanımlayalım. Bu değişkenimizin adı da “cameraPosition” olsun. “projectionValue” değişkeni modeli ne kadarlık bir açıdan görmek istediğimizi belirler. Bu değeri arttırdığımızda model daha uzaktan gelir, azalttığımızda model sanki daha yakınmış gibi görünür.

public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
Model myModel;
//projection icin gorus acini belirleyecek degisken.
float aspectRatio;
//kamera için
Vector3 cameraPosition;
float projection_value=30.0f;
2.) Modeli Yüklemek

Modeli Yüklemek için LoadContent metodu içine eklememiz gereken bazı komut satırları var. Bunlardan

myModel = Content.Load("Models/model1 ");

Var olan modeli dokularıyla birlikte eklememizi sağlar. Dokularıyla ilgili bir kod yazmadığımız halde nasıl oluyorda model dokularını bulabiliyor?

“fbx” uzantılı modellerimizin dosyaları mevcut. Bu modelleri projemize eklediğimizde modele tıkladığınızda .NET ortamında bu dosya açılır. Dosyanın içerisine baktığınızda her dokuyu aradığı “RelativeFilename” tanımlıdır. Burda dokunun bulunduğu dizinin adresi yer almaktadır.
aspectRatio değeri aşağıdaki komut satırında görüldüğü gibi hesaplanır.

Kameranın yerini belirlemekte kullanacağımız “cameraPozition” değişkeninin ilklemesini de aşağıdaki satırdaki gibi yapıyoruz. Burdaki ilk parametre “right” ı belirten x eksenini ikinci parametre “up” ı belirten y eksenini ve üçüncü parametre “look” ı belirten eksenini ifade etmektedir. Eğer ikinci argümanı 10.f yerine 5000.f oalrak değiştirirseniz cisminizin görünüşünde değişiklik olur. Üst kısmını daha iyi görebilirsiniz.

cameraPosition = new Vector3(0.0f, 10.0f, 5000.0f);

protected override void LoadContent()
{
//modeli yukle
myModel = Content.Load("Models/model1");
//bakis acini belirle,cismin ne kadar darlık ya da genislikte gorulecegidir
aspectRatio = (float)graphics.GraphicsDevice.Viewport.Width /
(float)graphics.GraphicsDevice.Viewport.Height;
// view matrisin icin kameranin yerini belirliyorsun
cameraPosition = new Vector3(0.0f, 10.0f, 5000.0f);

}

3.) Modeli Çizdirmek


İki boyutşu bir resim çizdirirken yapmamız gerekn 3 satır kod yazmaktı. Ancak 3 boyutlu modelde bu iş biraz daha karışık. Çünklü bu kez çizmemiz gerekende dokular ve her bir doku üzerindeki efektler var. Yani bizim ihtiyacımız olan iki adet içi içe döngü. Dıştaki dökğ modelin içerdiği dokuları çizdirecek içteki döngü ise çizilecek olan doku üzerine tanımlanan efektleri ekleyecek.


Öncelikle modelimizin aslında hareketini de sağlayacan “modelRotation” değişkenini tanımlıyoruz. Bu değişkenin değerinde oynamalar yaptığınızda modelimizin biraz daha sağa dönük durduğunu görebilrsiniz.


effect.EnableDefaultLighting();


Yukarıdaki satır dokular üzerindeki ışıklandırmayı sağlar.


Matrix.CreateLookAt(cameraPosition, Vector3.Zero, Vector3.Up);

ile modelimize kameranın bakacağı açıyı belirliyoruz.

mesh.Draw();

Bu satır ile bir dokuyu çizmiş oluyoruz.

float modelRotation = 0.0f;


protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);

// TODO: Add your drawing code here

//world matrisi icin gerekli olan tanimlamalar
Matrix[] transforms = new Matrix[myModel.Bones.Count];
myModel.CopyAbsoluteBoneTransformsTo(transforms);

//bu asamada modeli cizmeye baslioruz
//model icin birden fazla doku olabilir bu yuzden bir dongu kullanioruz

foreach (ModelMesh mesh in myModel.Meshes)
{

//her doku icinde belirli efektler olabilir bunlar icinde bir dongu kullan
//bu dongu icinde gerekli olan yerlere kamerayi tut.
foreach (BasicEffect effect in mesh.Effects)
{
//dokular üzerindeki isiklandirmayi sagla
effect.EnableDefaultLighting();

effect.World = transforms[mesh.ParentBone.Index] * Matrix.CreateRotationY(modelRotation) *
Matrix.CreateTranslation(modelPosition);
effect.View = Matrix.CreateLookAt(cameraPosition, Vector3.Zero, Vector3.Up);

//projectiondaki bu 45 derecelik aciyi modeli ne kadar yakindan gorecegini belirler
//bu aci ne kadar büyürse model sana o kadar uzak olur
effect.Projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(projection_value),
aspectRatio, 1.0f, 10000.0f);
}//end of inner foreach loop

//simdi bu dokuyu cizdir

mesh.Draw();
}//end of outer foreach loop


base.Draw(gameTime);

}

Şimdi yapmanız gereken internetten bir modeli ve dokularını bulup bunları projenize ekleyip bu satırlarla birlikte bu modelin ekranda görünmesini sağlamak. Kolay gelsin :)

NOT: Modelinize göre "projection_value" değeriyle oynarsanız daha iyi sonuçlar elde edebilrsiniz. Bazı modeller 30.0f değerinde görülebiliyorken bazı modelleri algılayamayabiliyorusunuz. Bu durumda bu değeri küçültmeniz gerekmektedir, eğer model bu değerde çok büyük görünüyorsa bu kez bu değeri azaltmanızı öneririm.



29 Kasım 2008 Cumartesi

Windows Live Id ile Login Olma

Bu özet kullanılabilir değil. Yayını görüntülemek için lütfen burayı tıklayın.

22 Kasım 2008 Cumartesi

XNA’ de Oyuncu İsmini Input Olarak Alma

XNA klavyeden girdiğin her tuşu tutar. Bu tuşlara göre yerleştirdiğin nesneleri hareket ettirirsin ya da bir sonraki aşamaya geçersin,.. vs. Ancak ne zamanki ismini oyuna yazmak istediğinde bastığın tuşlardaki karakterler ekranda görünmez. XNA kütüphanesinin sağladığı bir textbox nesnesi yok. Bu nedenle oyunu oynayan kişi adını yazabilmesi için bizim bir takım kodları yazmamız gerekmektedir.

Bu makalede bu işlemlerin nasıl yapıldığı ve kullanıcının adını girmesi için uygulamaya eklenmesi gereken kodlar açıklanmaktadır.

1. Karakterleri Tutan Diziyi Tanımlama

Klavyeden girilen karakterler “Keys” adı verilen bir dizide tutulur. Bu diziden karakterlere “GetPressedKeys” mesajı ile ulaşabiliriz. Bu dizi içinde karakterler tutulurken özel bir tanımlama ile tutuluyor. Örneğin NumPad’ den girilen numaralardan “1” “NumPad1” olarak, klavyedeki numaralar başlarına “D” karakteri gelerek (“1” “D1” olarak tutulmaktadır. ) ve harfler aynı klavyedeki haliyle tutulmaktadır.

Bunun için iki boyutlu bir dizi tanımlanır. Dizinin adı “keyToCharacter” olsun. Bu dizi girilen karakterlerin kullanıcının anlayacağı türe çevrilmesi için kullanılır. Örneğin kullanıcı bir tuşa bastığında; bu karakteri ekrana basmak için girilen karakterin “Keys” tipinde tanımlı olan dizideki karşılığı bulunur. “NumPad1” ise bu karakter ekrana 1 olarak ekrana yazılacak olan tipi karakter katarı olarak tanımlanmış değişkene (“string”) eklenir.

Tanımlanması gereken dizi:

private string[,]keyToCharacter = {{"A", "a"},{"B", "b"}, {"C", "c"}, {"D", "d"}, {"E", "e"}, {"Space", " "},
{"F", "f"}, {"G", "g"}, {"H", "h"}, {"I", "i"}, {"J", "j"},
{"K", "k"}, {"L", "l"}, {"M", "m"}, {"N", "n"}, {"O", "o"},
{"P", "p"}, {"Q", "q"}, {"R", "r"}, {"S", "s"}, {"T", "t"},
{"U", "u"}, {"V", "v"}, {"W", "w"}, {"X", "x"}, {"Y", "y"},
{"Z", "z"},
{"NumPad1", "1"}, {"NumPad2", "2"},{"NumPad3", "3"},{"NumPad4", "4"},
{"NumPad5", "5"}, {"NumPad6", "6"},{"NumPad7", "7"},{"NumPad8", "8"},
{"NumPad9", "9"}, {"NumPad0", "0"},
{"D1", "1"}, {"D2", "2"}, {"D3", "3"}, {"D4", "4"}, {"D5", "5"},
{"D6", "6"}, {"D7", "7"}, {"D8", "8"}, {"D9", "9"}, {"D0", "0"}
};



2. “EkranaYazma” Sınıfı

Kullanıcını ekrana ismini girmesi için yapılan işlemleri gerçekleştiren kodları bir sınıfta toplarsak daha kullanışlı ve anlaşılır bir program yazmış oluruz. Bunun için bu programda tanımlanan sınıfın adı “EkranaIsimYazma” dır. Bu sınıfta 2 adet metot geçekleştirimi yapılmıştır ve gerekli alt alanlar tanımlanmıştır.

using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
using Microsoft.Xna.Framework.Net;
using Microsoft.Xna.Framework.Storage;

namespace EkranaOyuncuAdiniYazma
{
class EkranaIsimYazma
{
//tanımlanan alt alanlar
private string[,]keyToCharacter = {{"A", "a"},{"B", "b"},{"C", "c"}, {"D", "d"}, {"E", "e"}, {"Space", " "},
{"F", "f"}, {"G", "g"}, {"H", "h"}, {"I", "i"}, {"J", "j"},
{"K", "k"}, {"L", "l"}, {"M", "m"}, {"N", "n"}, {"O", "o"},
{"P", "p"}, {"Q", "q"}, {"R", "r"}, {"S", "s"}, {"T", "t"},
{"U", "u"}, {"V", "v"}, {"W", "w"}, {"X", "x"}, {"Y", "y"},
{"Z", "z"},
{"NumPad1", "1"}, {"NumPad2", "2"},{"NumPad3", "3"},{"NumPad4", "4"},
{"NumPad5", "5"}, {"NumPad6", "6"},{"NumPad7", "7"},{"NumPad8", "8"},
{"NumPad9", "9"}, {"NumPad0", "0"},
{"D1", "1"}, {"D2", "2"}, {"D3", "3"}, {"D4", "4"}, {"D5", "5"},
{"D6", "6"}, {"D7", "7"}, {"D8", "8"}, {"D9", "9"}, {"D0", "0"}
};

private Keys[] keyMap;
private KeyboardState keyboardState, lastKeyboardState;
private const int maxNameLength = 15;
private const int characterNum = 47;
private string userName = "player 1";



“maxNameLength” kullanıcının gireceği adın maksimum kaç karakterde olacağını, “userName” kullanıcı adını, "keyMap" kalvyeden basılan karakterlerin tümünü, “characterNum” dizide tanımlanan karakter sayısını tutmaktadır.

“CharacterDelete” metodu:

Bu metot kullanıcının isim girerken yanlış ya da istemediği bir karakter girdiğinde bu karakter veya karakterlerin silme işlemini gerçekleştirmek için yazılmıştır. Bu metot her “back space” tuşuna basıldığında çağrılır.

Metot gerçekleştirimie baktığımızda önce şu anki tuş durumunu anlamamız için “keyboardState” adlı değişkene basılan tuşu aktaran metottan dönene değer atılır. Ardından “keyboardState” nesnesine “IsKeyDown” mesajını “Keys.Back” argümanını vererek göndeririz. Böylece “backspace” tuşunu elde tutmuş oluruz eğer basıldıysa. Bu ifadenin bulunduğu kontrole bir de kullanıcı adının 0’dan büyük olması koşulunu ekleriz.

Koşullar sağlandığında girilen kullanıcı adının sonundaki karakter silinir. Bu işlem için kullanılan metot string işlemlerde kullanılan “SubString” metodudur.

public string CharacterDelete()
{
keyboardState = Keyboard.GetState();

if (keyboardState.IsKeyDown(Keys.Back) && lastKeyboardState.IsKeyUp(Keys.Back) && userName.Length > 0)
{
userName = userName.Substring(0, userName.Length - 1);
}

return userName;
}//end of void CharacterDelete


“CharacterDisplay” metodu:

Kullanıcının klavyeden girdiği karakterleri kullanıcı adını içeren değişkene eklenmesini sağlayan metottur. Bunun için basılan tüm karakterler “keyMap” adlı diziye atılır. Ardından foreach döngüdü sayesinde bu karakterler tek tek kontrol edilir, bu kontrol işleminin gerçekleştirimi nasıl yapılıyor?

Programda en başta belirtilen karakterleri içeren “keyToCharacter” dizisindeki karakterlerle girilen karakterler karşılaştırılır ve bu dizi içinde yer alan karakterler kullanıcı adını tutan “userName” karakter katarına (“string”) eklenir.

Public string CharcterDisplay()
{
keyMap = (Keys[])keyboardState.GetPressedKeys();
foreach (Keys key in keyMap)
{
for (int i = characterNum-1; i >=0; i--)
{
if (key.ToString() == keyToCharacter[i, 0] && lastKeyboardState.IsKeyUp(key))
{
userName += keyToCharacter[i, 1];
break;
}//end of inner if condition
}//end of for loop
}//end of foreach loop
lastKeyboardState = keyboardState;
return userName;
}//end of void CharcterDisplay
“keyboardState” değişkenini “lastKeyboardState” içine atmamız daha önceden bir karaktere basılıp basılmadığını kontrol etmemizi sağlar. XNA’ de FPS (saniyede kaç kere ekrana yazdırdırdığın) kavramı çok önemlidir.. Eğer bu satırı silersek “backspace” tuşuna bir kere bastığımızda birden fazla karakter silinir. Klavyeden bir karakter girdiğimizde ise aynı karakter birden fazla yazılır. FPS kavramı bu nedenle önemlidir. Bu nedenle son basılna karakterle ilk karakter aynı ise bu işlem bir kere yapılır, son karakterle ilkinin aynı olma olasılığını kontrol etmezsek bir kere bastığımızda bire karakter saniyedeki karakter yazma miktarı ne akdarsa ekrana o kadar yazılır (4 FPS ise saniyede 4 kere ekrana yazılır).

3. “Game1.cs” Sınıfı İçinde Yapılan Değişiklikler

Texture2D backgroundTexture;
Rectangle viewportRect;
EkranaIsimYazma ekranaYazmaObj;
string userName;

Sade bir ekrana yazı yazmaktansda bir arka plana yazı yazmak daha gösterişli olabilir. Zaten bu uygulamayı oyunlarımızda kullandığımızda bir resim üzerine yazacağız. İki boyutlu bir arka plan resmi eklemek için bu resim bilgilerini tutan “backgroundTexture” isimli değişkeni ve bu resmin başlangıç koordinatlarını tutacak olan “viewportRect” nesnesini tanımlarız.

Ardından bu tanımlamalara ekrana isim yazmamış için gerekli olan değişkenleri ekleriz. Bunlardan biri “EkranaIsim Yazma” sınıfındaki mesajları göndereceğimiz “ekranaYazmaObj” nesnesidir. Diğer değişken ise geri mesaj sonunda geri döndürülen kullanıcı adını tutması için tanımlanmış olan “userName” değişkenidir.

Ardından “LoadContent” metodu içine:
backgroundTexture =Content.Load("Sprites\\background");
Arial = Content.Load("Fonts/Arial");
ekranaYazmaObj = new EkranaIsimYazma();
//drawable area of the game screen.
viewportRect = new Rectangle(0, 0,
graphics.GraphicsDevice.Viewport.Width, graphics.GraphicsDevice.Viewport.Height);
Yukarıdaki kod satırlarının yazılması gerekir ki oyun sırasında bir kere çağrılacak olan bu metotla birlikte gerekli yüklemeler ilgili nesnelere yapılsın.

Arial = Content.Load("Fonts/Arial");

Bu kod satırı sayesinde ekranda belirlenecek olan kullanıcı adının hangi yazı tipinde olacağı belirtilir. Bunun için yapmamız gereken bir işlem ise “Solution” daki “Content” e sağ tıklayıp Fonts adında bir klasör eklemek , ardından bu klasöre yine sağ tıklatıp “Add new Item” seçeneğini seçtikten sonra “Sprite Font” a tıklayıp “Arial.spritefont” html’ ini projeye eklemektir.

“Update” metodu içine yazılması gerekenler programda birden çok kez yapılan olan işlemlerdir. Kullanıcını karakter girmesi ya da bir karakteri silmesi birden fazla kez yapılancak olan işlemlerdir. Bu nedenle bu mesajları ilgili nesneye verdiğimiz uygun yer bu metodun içidir. Yazılacak satırlar:

userName = ekranaYazmaObj.CharacterDelete();
userName = ekranaYazmaObj.CharcterDisplay();

Sıra geldi ismin ekrana çizilmesine. Çizilmek eyleminim kullandım, çünkü bir resim üzerine işlem yapıyoruz.

Ekrana resmi bastırmayı sağlayan metot “Draw” metodudur. Bu metot içinde önce resmi ekleriz ardında bu resmin üzerine kullanıcın girmiş olduğu ismi ekleriz.

spriteBatch.Begin(SpriteBlendMode.AlphaBlend);
//Draw the backgroundTexture sized to the width
//and height of the screen.
spriteBatch.Draw(backgroundTexture, viewportRect, Color.White);
//ikinci sekli de dogru arka plani ekrana bastirmada
//aşagidaki satirda kullanilabilir
//spriteBatch.Draw(backgroundTexture, new Vector2(0, 0), Color.White);
spriteBatch.DrawString(Arial, "Your Name: " + userName + "<", new Vector2(100, 100), Color.White); spriteBatch.End();