<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5157240648556773022</id><updated>2011-11-27T16:20:01.633-08:00</updated><category term='imagine cup 2009'/><category term='imagine'/><category term='DreamSpark'/><category term='imagine cup'/><category term='cloud'/><category term='computing'/><title type='text'>Gülşah YILDIZOĞLU</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://gulsahyildizoglu.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5157240648556773022/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://gulsahyildizoglu.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Gulsah_bilgi</name><uri>http://www.blogger.com/profile/17493600122532586605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='18' height='32' src='http://2.bp.blogspot.com/_UfP4VvqlInQ/SvNT2HY8TGI/AAAAAAAAAH8/HAYq7X-iXFc/S220/untitled.bmp'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>9</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5157240648556773022.post-1259174249108360511</id><published>2009-12-24T00:45:00.000-08:00</published><updated>2009-12-24T00:49:46.287-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cloud'/><category scheme='http://www.blogger.com/atom/ns#' term='computing'/><title type='text'>Five Useful Links for Cloud Computing, Let's Look at These</title><content type='html'>&lt;div align="justify"&gt;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.&lt;br /&gt;&lt;a href="http://thecloudcomputing.org/2009/2/"&gt;http://thecloudcomputing.org/2009/2/&lt;/a&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;a href="http://www.3tera.com/?_kk=cloud%20computing&amp;amp;_kt=100c365e-3c8e-4a87-9a75-d8b8b42817e8&amp;amp;gclid=CLqV7Ov3g54CFc8UzAodqlD0pw"&gt;http://www.3tera.com/?_kk=cloud%20computing&amp;amp;_kt=100c365e-3c8e-4a87-9a75-d8b8b42817e8&amp;amp;gclid=CLqV7Ov3g54CFc8UzAodqlD0pw&lt;/a&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;a href="http://uk.sun.com/offers/details/cloudcomputing/?cid=20090416UK_TACO_CLCO_0032"&gt;http://uk.sun.com/offers/details/cloudcomputing/?cid=20090416UK_TACO_CLCO_0032&lt;/a&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;a href="http://www.microsoft.com/windowsazure/getstarted/#develop"&gt;http://www.microsoft.com/windowsazure/getstarted/#develop&lt;/a&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;a href="http://code.google.com/intl/tr/appengine/docs/whatisgoogleappengine.html"&gt;http://code.google.com/intl/tr/appengine/docs/whatisgoogleappengine.html&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5157240648556773022-1259174249108360511?l=gulsahyildizoglu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gulsahyildizoglu.blogspot.com/feeds/1259174249108360511/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5157240648556773022&amp;postID=1259174249108360511' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5157240648556773022/posts/default/1259174249108360511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5157240648556773022/posts/default/1259174249108360511'/><link rel='alternate' type='text/html' href='http://gulsahyildizoglu.blogspot.com/2009/12/five-useful-links-for-cloud-computing.html' title='Five Useful Links for Cloud Computing, Let&apos;s Look at These'/><author><name>Gulsah_bilgi</name><uri>http://www.blogger.com/profile/17493600122532586605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='18' height='32' src='http://2.bp.blogspot.com/_UfP4VvqlInQ/SvNT2HY8TGI/AAAAAAAAAH8/HAYq7X-iXFc/S220/untitled.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5157240648556773022.post-8479642614661364699</id><published>2009-01-13T17:17:00.000-08:00</published><updated>2009-01-13T17:31:05.737-08:00</updated><title type='text'>INETA EGE HIT</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_UfP4VvqlInQ/SW0-4zNw0MI/AAAAAAAAAGs/OitGMRpnDik/s1600-h/27122008_2.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5290954282771730626" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 51px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_UfP4VvqlInQ/SW0-4zNw0MI/AAAAAAAAAGs/OitGMRpnDik/s400/27122008_2.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;Dokuz Eylül Üniversite' sinin ev sahipliğini yaptığı 2 gün süren Ineta eğitimi tamamalandı. &lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;Ç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. &lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;Umarız en kısa sürede yeni etkinliklerle Daron Yöndem' i tekrar aramızda görürüz.&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;Kendisine Dokuz Eylül Üniversitesi adına teşekkür ediyoruz.&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;**Detaylı bilgi için &lt;a href="http://daron.yondem.com/tr/" target="_blank"&gt;Daron Yöndem' in adresini&lt;/a&gt; ziyaret edebilirsiniz.&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5157240648556773022-8479642614661364699?l=gulsahyildizoglu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gulsahyildizoglu.blogspot.com/feeds/8479642614661364699/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5157240648556773022&amp;postID=8479642614661364699' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5157240648556773022/posts/default/8479642614661364699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5157240648556773022/posts/default/8479642614661364699'/><link rel='alternate' type='text/html' href='http://gulsahyildizoglu.blogspot.com/2009/01/ineta-ege-hit.html' title='INETA EGE HIT'/><author><name>Gulsah_bilgi</name><uri>http://www.blogger.com/profile/17493600122532586605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='18' height='32' src='http://2.bp.blogspot.com/_UfP4VvqlInQ/SvNT2HY8TGI/AAAAAAAAAH8/HAYq7X-iXFc/S220/untitled.bmp'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_UfP4VvqlInQ/SW0-4zNw0MI/AAAAAAAAAGs/OitGMRpnDik/s72-c/27122008_2.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5157240648556773022.post-5236559509310754542</id><published>2009-01-13T17:06:00.000-08:00</published><updated>2009-01-13T17:10:24.026-08:00</updated><title type='text'>XNA’ de Modelin Hareketini Yönetmek</title><content type='html'>&lt;div align="justify"&gt;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. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Ş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.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;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.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;if (keyboardState.IsKeyDown(Keys.Left):&lt;/span&gt;   sol yönü belirten oka basılıp basılmadığını kontrol eder.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;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.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;if (keyboardState.IsKeyDown(Keys.Right)):&lt;/span&gt; sağ yönü belirten oka basılıp basılmadığını kontrol eder.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Bu oka basıldıysa modelin hareketi sağa olmalıdır. Bu durumda forpozitionX değişkeninin değeri arttırılır. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;if (keyboardState.IsKeyDown(Keys.Up)):&lt;/span&gt;    yukarı yönü belirten oka basılıp basılmadığını kontrol eder.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;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. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;if (keyboardState.IsKeyDown(Keys.Down)):&lt;/span&gt;  aşağı yönü belirten oka basılıp basılmadığını kontrol eder.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;float forpozitionX = 0.0f;&lt;br /&gt;float forpozitionY = 0.0f;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;protected override void Update(GameTime gameTime)&lt;br /&gt;        {&lt;br /&gt;            // Allows the game to exit&lt;br /&gt;            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)&lt;br /&gt;                this.Exit();&lt;br /&gt;&lt;br /&gt;            // TODO: Add your update logic here&lt;br /&gt;            //modeli hareket ettiren kodlar&lt;br /&gt;            KeyboardState keyboardState = Keyboard.GetState();&lt;br /&gt;            if (keyboardState.IsKeyDown(Keys.Left))&lt;br /&gt;            {&lt;br /&gt;                if(forpozitionX&gt;5.0f)               &lt;br /&gt;                forpozitionX -= 5.0f;&lt;br /&gt;                modelPosition = new Vector3(forpozitionX, forpozitionY,           0.0f);&lt;br /&gt;            }&lt;br /&gt;            if (keyboardState.IsKeyDown(Keys.Right))&lt;br /&gt;            {&lt;br /&gt;                forpozitionX += 5.0f;&lt;br /&gt;                modelPosition = new Vector3(forpozitionX, forpozitionY, 0.0f);&lt;br /&gt;            }&lt;br /&gt;            if (keyboardState.IsKeyDown(Keys.Up))&lt;br /&gt;            {&lt;br /&gt;                forpozitionY += 5.0f;&lt;br /&gt;                modelPosition = new Vector3(forpozitionX, forpozitionY, 0.0f);&lt;br /&gt;            }&lt;br /&gt;            if (keyboardState.IsKeyDown(Keys.Down))&lt;br /&gt;            {&lt;br /&gt;                if(forpozitionY&gt;5.0f)&lt;br /&gt;                forpozitionY -= 5.0f;&lt;br /&gt;                modelPosition = new Vector3(forpozitionX, forpozitionY, 0.0f);&lt;br /&gt;            }&lt;br /&gt;            base.Update(gameTime);&lt;br /&gt;        }&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5157240648556773022-5236559509310754542?l=gulsahyildizoglu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gulsahyildizoglu.blogspot.com/feeds/5236559509310754542/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5157240648556773022&amp;postID=5236559509310754542' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5157240648556773022/posts/default/5236559509310754542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5157240648556773022/posts/default/5236559509310754542'/><link rel='alternate' type='text/html' href='http://gulsahyildizoglu.blogspot.com/2009/01/xna-de-modelin-hareketini-ynetmek.html' title='XNA’ de Modelin Hareketini Yönetmek'/><author><name>Gulsah_bilgi</name><uri>http://www.blogger.com/profile/17493600122532586605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='18' height='32' src='http://2.bp.blogspot.com/_UfP4VvqlInQ/SvNT2HY8TGI/AAAAAAAAAH8/HAYq7X-iXFc/S220/untitled.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5157240648556773022.post-737767962285250592</id><published>2009-01-13T17:01:00.000-08:00</published><updated>2009-01-13T17:06:32.227-08:00</updated><title type='text'>XNA ‘de 3 Boyutlu Modeli Hareket Ettirmek</title><content type='html'>&lt;div align="justify"&gt; 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? &lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;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. &lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;Şimdi Update metonunun içine bu satırı yazalım:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5290949321016132002" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 47px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_UfP4VvqlInQ/SW06X_PCwaI/AAAAAAAAAGk/gDRzYTQPiJE/s400/ads%C4%B1z.bmp" border="0" /&gt;&lt;br /&gt;&lt;p align="justify"&gt;Draw metodu içindeki &lt;strong&gt;CreateRotationY&lt;/strong&gt; metodu (Modelin Y ekseninde dönmesini sağlıyor.)yerine &lt;strong&gt;CreateRotationX&lt;/strong&gt; metodunu kullanırsanız model X ekseninde döner, &lt;strong&gt;CreateRotationZ &lt;/strong&gt;kullanırsanız hareketini Z ekseninde yapar.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5157240648556773022-737767962285250592?l=gulsahyildizoglu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gulsahyildizoglu.blogspot.com/feeds/737767962285250592/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5157240648556773022&amp;postID=737767962285250592' title='1 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5157240648556773022/posts/default/737767962285250592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5157240648556773022/posts/default/737767962285250592'/><link rel='alternate' type='text/html' href='http://gulsahyildizoglu.blogspot.com/2009/01/xna-de-3-boyutlu-modeli-hareket.html' title='XNA ‘de 3 Boyutlu Modeli Hareket Ettirmek'/><author><name>Gulsah_bilgi</name><uri>http://www.blogger.com/profile/17493600122532586605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='18' height='32' src='http://2.bp.blogspot.com/_UfP4VvqlInQ/SvNT2HY8TGI/AAAAAAAAAH8/HAYq7X-iXFc/S220/untitled.bmp'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_UfP4VvqlInQ/SW06X_PCwaI/AAAAAAAAAGk/gDRzYTQPiJE/s72-c/ads%C4%B1z.bmp' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5157240648556773022.post-8196384753165848585</id><published>2009-01-13T16:40:00.000-08:00</published><updated>2009-01-13T16:59:28.251-08:00</updated><title type='text'>XNA’ de 3 Boyutlu Model Ekleme</title><content type='html'>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.&lt;br /&gt;&lt;br /&gt;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. &lt;div&gt;&lt;br /&gt;Bu yazımda size 3 boyutlu bir modeli eklemek için nelerin gerekli olduğundan ve projemizde yapmamız gerekenlerden bahsedeceğim. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;1.) Gerekli Tanımlamalar&lt;/strong&gt;&lt;/div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;div&gt;&lt;br /&gt;Öncelikle modelimiz ile ilgili tutacak bir Model nesnesi tanımlamalıyız.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Bu tanımlamayı &lt;strong&gt;Game1.cs&lt;/strong&gt; 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 &lt;strong&gt;“aspectRatio”&lt;/strong&gt; 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 &lt;strong&gt;“cameraPosition”&lt;/strong&gt; olsun. &lt;strong&gt;“projectionValue”&lt;/strong&gt; 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.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;public class Game1 : Microsoft.Xna.Framework.Game&lt;br /&gt;{&lt;br /&gt;GraphicsDeviceManager graphics;&lt;br /&gt;Model myModel;&lt;br /&gt;//projection icin gorus acini belirleyecek degisken.&lt;br /&gt;float aspectRatio;&lt;br /&gt;//kamera için&lt;br /&gt;Vector3 cameraPosition;&lt;br /&gt;float projection_value=30.0f;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;2.) Modeli Yüklemek&lt;/strong&gt;&lt;/div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;div align="justify"&gt;&lt;br /&gt;Modeli Yüklemek için LoadContent metodu içine eklememiz gereken bazı komut satırları var. Bunlardan &lt;/div&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;myModel = Content.Load&lt;model&gt;("Models/model1 ");&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;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?&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;strong&gt;“fbx”&lt;/strong&gt; 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ığı &lt;strong&gt;“RelativeFilename”&lt;/strong&gt; tanımlıdır. Burda dokunun bulunduğu dizinin adresi yer almaktadır.&lt;br /&gt;aspectRatio değeri aşağıdaki komut satırında görüldüğü gibi hesaplanır. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Kameranın yerini belirlemekte kullanacağımız &lt;strong&gt;“cameraPozition”&lt;/strong&gt; değişkeninin ilklemesini de aşağıdaki satırdaki gibi yapıyoruz. Burdaki ilk parametre &lt;strong&gt;“right”&lt;/strong&gt; ı belirten x eksenini ikinci parametre &lt;strong&gt;“up”&lt;/strong&gt; ı belirten y eksenini ve üçüncü parametre &lt;strong&gt;“look”&lt;/strong&gt; ı 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. &lt;/div&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;cameraPosition = new Vector3(0.0f, 10.0f, 5000.0f);&lt;/span&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;protected override void LoadContent()&lt;br /&gt;{&lt;br /&gt;//modeli yukle&lt;br /&gt;myModel = Content.Load&lt;model&gt;("Models/model1");&lt;br /&gt;//bakis acini belirle,cismin ne kadar darlık ya da genislikte gorulecegidir&lt;br /&gt;aspectRatio = (float)graphics.GraphicsDevice.Viewport.Width /&lt;br /&gt;(float)graphics.GraphicsDevice.Viewport.Height;&lt;br /&gt;// view matrisin icin kameranin yerini belirliyorsun&lt;br /&gt;cameraPosition = new Vector3(0.0f, 10.0f, 5000.0f); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3.) Modeli Çizdirmek&lt;/strong&gt;&lt;/p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;p align="justify"&gt;&lt;br /&gt;İ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.&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;Ö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. &lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;effect.EnableDefaultLighting();&lt;/span&gt; &lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;Yukarıdaki satır dokular üzerindeki ışıklandırmayı sağlar.&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Matrix.CreateLookAt(cameraPosition, Vector3.Zero, Vector3.Up);&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;ile modelimize kameranın bakacağı açıyı belirliyoruz.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;mesh.Draw();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Bu satır ile bir dokuyu çizmiş oluyoruz.&lt;/p&gt;&lt;div align="center"&gt;&lt;/div&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;float modelRotation = 0.0f;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;protected override void Draw(GameTime gameTime)&lt;br /&gt;{&lt;br /&gt;GraphicsDevice.Clear(Color.CornflowerBlue);&lt;br /&gt;&lt;br /&gt;// TODO: Add your drawing code here&lt;br /&gt;&lt;br /&gt;//world matrisi icin gerekli olan tanimlamalar&lt;br /&gt;Matrix[] transforms = new Matrix[myModel.Bones.Count];&lt;br /&gt;myModel.CopyAbsoluteBoneTransformsTo(transforms);&lt;br /&gt;&lt;br /&gt;//bu asamada modeli cizmeye baslioruz&lt;br /&gt;//model icin birden fazla doku olabilir bu yuzden bir dongu kullanioruz&lt;br /&gt;&lt;br /&gt;foreach (ModelMesh mesh in myModel.Meshes)&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;//her doku icinde belirli efektler olabilir bunlar icinde bir dongu kullan&lt;br /&gt;//bu dongu icinde gerekli olan yerlere kamerayi tut.&lt;br /&gt;foreach (BasicEffect effect in mesh.Effects)&lt;br /&gt;{&lt;br /&gt;//dokular üzerindeki isiklandirmayi sagla&lt;br /&gt;effect.EnableDefaultLighting();&lt;br /&gt;&lt;br /&gt;effect.World = transforms[mesh.ParentBone.Index] * Matrix.CreateRotationY(modelRotation) *&lt;br /&gt;Matrix.CreateTranslation(modelPosition);&lt;br /&gt;effect.View = Matrix.CreateLookAt(cameraPosition, Vector3.Zero, Vector3.Up);&lt;br /&gt;&lt;br /&gt;//projectiondaki bu 45 derecelik aciyi modeli ne kadar yakindan gorecegini belirler&lt;br /&gt;//bu aci ne kadar büyürse model sana o kadar uzak olur&lt;br /&gt;effect.Projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(projection_value),&lt;br /&gt;aspectRatio, 1.0f, 10000.0f);&lt;br /&gt;}//end of inner foreach loop&lt;br /&gt;&lt;br /&gt;//simdi bu dokuyu cizdir&lt;br /&gt;&lt;br /&gt;mesh.Draw();&lt;br /&gt;}//end of outer foreach loop&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;base.Draw(gameTime); &lt;/span&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ş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 :)&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;strong&gt;NOT:&lt;/strong&gt; Modelinize göre &lt;strong&gt;"projection_value"&lt;/strong&gt; 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.&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5157240648556773022-8196384753165848585?l=gulsahyildizoglu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gulsahyildizoglu.blogspot.com/feeds/8196384753165848585/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5157240648556773022&amp;postID=8196384753165848585' title='1 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5157240648556773022/posts/default/8196384753165848585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5157240648556773022/posts/default/8196384753165848585'/><link rel='alternate' type='text/html' href='http://gulsahyildizoglu.blogspot.com/2009/01/xna-de-3-boyutlu-model-ekleme.html' title='XNA’ de 3 Boyutlu Model Ekleme'/><author><name>Gulsah_bilgi</name><uri>http://www.blogger.com/profile/17493600122532586605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='18' height='32' src='http://2.bp.blogspot.com/_UfP4VvqlInQ/SvNT2HY8TGI/AAAAAAAAAH8/HAYq7X-iXFc/S220/untitled.bmp'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5157240648556773022.post-6514460123625619857</id><published>2008-11-29T17:32:00.000-08:00</published><updated>2008-11-29T17:54:40.126-08:00</updated><title type='text'>Windows Live Id ile Login Olma</title><content type='html'>&lt;div align="justify"&gt;Web sitelerine login olmak için bir form doldurmanız bekleniyor ardından bu formdaki mail adresinize gelen konfigürasyon linkine tıkladıktan sonra sisteme girişiniz aktif hale getiriliyordu. Ancak çoğu kişinin şikayeti bir siteye girmek için bir yığın bilgi doldurmak zorunda kalmasıdır. Microsoft’ un sunduğu “Windows Live Id Web Authentication” hizmeti sayesinde artık kullanılar mail adreslerine giriyorlarmış gibi siteye login olabiliyorlar.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1. Sistem Gereksinimleri&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;Bu servisten yararlanabilmeniz için sisteminizde olması gerekenler:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;·&lt;/strong&gt; ÖncelikleMicrosoft Internet Information Servise (IIS) ’inin kurulu olup olmadığından emin olun. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Bunun için iki yol var. Bunlardan biri Denetim Masasıà Program Ekle KaldıràWidows bileşenleri ekle Kaldır bölümüne gidin, IIS’ in yanındaki kutucuğun işretli olup olmadığına bakın. İşsretli değilse bir Windows cd’ sini takıp bu kutucuğu tıklayıp ileri seçeneğini seçin.&lt;br /&gt;&lt;br /&gt;Diğer yolu ilgili Windows işletim sisteminin kurulu olduğu dizin adı, buna Inetpub\wwwroot ekleyip run ‘dan çalıştırın. ( Örnek: C:\Inetpub\wwwroot) Böyle bir dizin yoksa IIS kurulu değildir. Kurmak için birinci yöntemdeki kurulum yollarını izleyiniz.&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;strong&gt;· &lt;/strong&gt;.NET Framework 2.0&lt;br /&gt;&lt;strong&gt;·&lt;/strong&gt; ASP.NET&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;strong&gt;2. Servisten Yararlanmak İçin Yapılması Gerekenler&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;"Windows Live Id Web Authentication” servisinden yararlanabilmeniz için &lt;a href="https://msm.live.com/app/default.aspx"&gt;https://msm.live.com/app/default.aspx&lt;/a&gt; sayfasından “Register an Applicaiton” linkine tıklayıp, Windows live id bilgilerinizi girdikten sonra karşınıza bir form çıkacak. Bu formdaki ilgili alanları doldurmanız karşılığında ücretsiz 30 gün bu servisten yararlanabiliyorsunuz.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;strong&gt;İlgili Alanlar Nasıl Doldurulacak?&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;strong&gt;Application Name:&lt;/strong&gt; Servisi kullanacağınız uygulamanın adı.&lt;br /&gt;&lt;strong&gt;Return URL:&lt;/strong&gt; Bu alana geçeri bir URL yazmanız beklenmektedir.&lt;br /&gt;&lt;strong&gt;Domain Name:&lt;/strong&gt; DNS tasrafından nitelendirilen bir domain ismi girmeniz beklenmektedir. Örneğin &lt;a href="http://www.xxx.com/"&gt;http://www.xxx.com/&lt;/a&gt; adresinde domain ismi xxx’ tir. Siteniz bir server üzerinden yayaınlanacaksa buraya gerekli ismi girmeniz beklenmektedir. Eğer projenizi localhost’ tan deneme amaçlı yapıyorsanız bu alanı boş bırakmanız gerekmektedir.&lt;br /&gt;&lt;strong&gt;Secret Key:&lt;/strong&gt; En az 16, en fazla 64 karakterden oluşan bir şifre.&lt;br /&gt;&lt;strong&gt;Application Verifier required:&lt;/strong&gt; 0 ‘ ı seçiniz.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Gerekli alanları doldurduktan sonra submit butonuna tıklayın. Size bir application id verilecek. Bu application id’ yi ve formu doldururken girmiş olduğunuz şifreyi web config’ e eklemeniz gerekmektedir. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;strong&gt;3. Servisi Denemek İçin Yapılan Uygulama&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Bu makaledeki örneğimizee &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=E565FC92-D5F6-4F5F-8713-4DD1C90DE19F&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=E565FC92-D5F6-4F5F-8713-4DD1C90DE19F&amp;amp;displaylang=en&lt;/a&gt; adresinde hangi dilde proje geliştiriyorsanız o dile uygun olan Windows live ID sdk ‘sını indirerek başlayalım. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;SDK’ yı bilgisayarımıza kuralım. Daha sonra Visual Studio .NET’ i açıp File, New, Web Site ‘ı seçtikten sonra projenin altına yani bir klasör ekleyelim . Klasörün adı App_Code olsun, bu klasöresağ tıklayıp “Add Existing Item” seçeneğini seçip&lt;strong&gt; C:\Program Files\Windows Live ID\WebAuth\App_Code&lt;/strong&gt;’ un içindeki &lt;strong&gt;WindowsLiveLogin.cs&lt;/strong&gt; dosyasını projeye ekleyelim.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Ardından projeye sağ tıklayıp &lt;strong&gt;C:\Program Files\Windows Live ID\WebAuth\Sample&lt;/strong&gt; dizini altındaki default.aspx &lt;strong&gt;“server page”&lt;/strong&gt; dosyasını projeye ekleyelim. Yine aynı şekilde webauth-handler.aspx dosyasını da ekleyelim.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Sıre geldi Web Config dosyasına servisten yararlanabilmek için gerekli bilgileri eklenmesine. Projemizdeki Web Config dosyasını açalım ve aşağıdaki kodları ekleyelim :&lt;/div&gt;&lt;span style="color:#000099;"&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_UfP4VvqlInQ/STHxZtmPOXI/AAAAAAAAAGA/cxXOMvuJJBM/s1600-h/ads%C4%B1z(1).JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5274262062666561906" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 123px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_UfP4VvqlInQ/STHxZtmPOXI/AAAAAAAAAGA/cxXOMvuJJBM/s400/ads%C4%B1z(1).JPG" border="0" /&gt;&lt;/a&gt; &lt;/span&gt;&lt;br /&gt;Projemiz çalıştırılmaya hazır. F5 tuşuna basın ve sign in adlı linke tıkladıktan sonra Winows live id ‘ leri ile kullanıcıların login olabilecekleri sayfaya gidebilirsiniz. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5157240648556773022-6514460123625619857?l=gulsahyildizoglu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gulsahyildizoglu.blogspot.com/feeds/6514460123625619857/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5157240648556773022&amp;postID=6514460123625619857' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5157240648556773022/posts/default/6514460123625619857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5157240648556773022/posts/default/6514460123625619857'/><link rel='alternate' type='text/html' href='http://gulsahyildizoglu.blogspot.com/2008/11/windows-live-id-ile-login-olma.html' title='Windows Live Id ile Login Olma'/><author><name>Gulsah_bilgi</name><uri>http://www.blogger.com/profile/17493600122532586605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='18' height='32' src='http://2.bp.blogspot.com/_UfP4VvqlInQ/SvNT2HY8TGI/AAAAAAAAAH8/HAYq7X-iXFc/S220/untitled.bmp'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_UfP4VvqlInQ/STHxZtmPOXI/AAAAAAAAAGA/cxXOMvuJJBM/s72-c/ads%C4%B1z(1).JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5157240648556773022.post-169019828089962736</id><published>2008-11-22T16:00:00.000-08:00</published><updated>2008-11-22T17:04:59.102-08:00</updated><title type='text'>XNA’ de Oyuncu İsmini Input Olarak Alma</title><content type='html'>&lt;div align="justify"&gt;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.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1. Karakterleri Tutan Diziyi Tanımlama&lt;/strong&gt;&lt;/div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;div align="justify"&gt;&lt;br /&gt;Klavyeden girilen karakterler &lt;strong&gt;“Keys”&lt;/strong&gt; adı verilen bir dizide tutulur. Bu diziden karakterlere &lt;strong&gt;“GetPressedKeys”&lt;/strong&gt; 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.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Bunun için iki boyutlu bir dizi tanımlanır. Dizinin adı &lt;strong&gt;“keyToCharacter”&lt;/strong&gt; 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 &lt;strong&gt;“Keys”&lt;/strong&gt; 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.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="color:#cc0000;"&gt;Tanımlanması gereken dizi:&lt;/span&gt;&lt;/div&gt;&lt;span style="color:#cc0000;"&gt;&lt;/span&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;private string[,]keyToCharacter = {{"A", "a"},{"B", "b"}, {"C", "c"}, {"D", "d"}, {"E", "e"}, {"Space", " "},&lt;br /&gt;{"F", "f"}, {"G", "g"}, {"H", "h"}, {"I", "i"}, {"J", "j"},&lt;br /&gt;{"K", "k"}, {"L", "l"}, {"M", "m"}, {"N", "n"}, {"O", "o"},&lt;br /&gt;{"P", "p"}, {"Q", "q"}, {"R", "r"}, {"S", "s"}, {"T", "t"},&lt;br /&gt;{"U", "u"}, {"V", "v"}, {"W", "w"}, {"X", "x"}, {"Y", "y"},&lt;br /&gt;{"Z", "z"},&lt;br /&gt;{"NumPad1", "1"}, {"NumPad2", "2"},{"NumPad3", "3"},{"NumPad4", "4"},&lt;br /&gt;{"NumPad5", "5"}, {"NumPad6", "6"},{"NumPad7", "7"},{"NumPad8", "8"},&lt;br /&gt;{"NumPad9", "9"}, {"NumPad0", "0"},&lt;br /&gt;{"D1", "1"}, {"D2", "2"}, {"D3", "3"}, {"D4", "4"}, {"D5", "5"},&lt;br /&gt;{"D6", "6"}, {"D7", "7"}, {"D8", "8"}, {"D9", "9"}, {"D0", "0"}&lt;br /&gt;};&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2. “EkranaYazma” Sınıfı&lt;/strong&gt;&lt;/div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;div align="justify"&gt;&lt;br /&gt;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ı &lt;strong&gt;“EkranaIsimYazma”&lt;/strong&gt; dır. Bu sınıfta 2 adet metot geçekleştirimi yapılmıştır ve gerekli alt alanlar tanımlanmıştır.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Linq;&lt;br /&gt;using Microsoft.Xna.Framework;&lt;br /&gt;using Microsoft.Xna.Framework.Audio;&lt;br /&gt;using Microsoft.Xna.Framework.Content;&lt;br /&gt;using Microsoft.Xna.Framework.GamerServices;&lt;br /&gt;using Microsoft.Xna.Framework.Graphics;&lt;br /&gt;using Microsoft.Xna.Framework.Input;&lt;br /&gt;using Microsoft.Xna.Framework.Media;&lt;br /&gt;using Microsoft.Xna.Framework.Net;&lt;br /&gt;using Microsoft.Xna.Framework.Storage;&lt;br /&gt;&lt;br /&gt;namespace EkranaOyuncuAdiniYazma&lt;br /&gt;{&lt;br /&gt;class EkranaIsimYazma&lt;br /&gt;{&lt;br /&gt;//tanımlanan alt alanlar&lt;br /&gt;private string[,]keyToCharacter = {{"A", "a"},{"B", "b"},{"C", "c"}, {"D", "d"}, {"E", "e"}, {"Space", " "},&lt;br /&gt;{"F", "f"}, {"G", "g"}, {"H", "h"}, {"I", "i"}, {"J", "j"},&lt;br /&gt;{"K", "k"}, {"L", "l"}, {"M", "m"}, {"N", "n"}, {"O", "o"},&lt;br /&gt;{"P", "p"}, {"Q", "q"}, {"R", "r"}, {"S", "s"}, {"T", "t"},&lt;br /&gt;{"U", "u"}, {"V", "v"}, {"W", "w"}, {"X", "x"}, {"Y", "y"},&lt;br /&gt;{"Z", "z"},&lt;br /&gt;{"NumPad1", "1"}, {"NumPad2", "2"},{"NumPad3", "3"},{"NumPad4", "4"},&lt;br /&gt;{"NumPad5", "5"}, {"NumPad6", "6"},{"NumPad7", "7"},{"NumPad8", "8"},&lt;br /&gt;{"NumPad9", "9"}, {"NumPad0", "0"},&lt;br /&gt;{"D1", "1"}, {"D2", "2"}, {"D3", "3"}, {"D4", "4"}, {"D5", "5"},&lt;br /&gt;{"D6", "6"}, {"D7", "7"}, {"D8", "8"}, {"D9", "9"}, {"D0", "0"}&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;private Keys[] keyMap;&lt;br /&gt;private KeyboardState keyboardState, lastKeyboardState;&lt;br /&gt;private const int maxNameLength = 15;&lt;br /&gt;private const int characterNum = 47;&lt;br /&gt;private string userName = "player 1";&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;“maxNameLength”&lt;/strong&gt; kullanıcının gireceği adın maksimum kaç karakterde olacağını, &lt;strong&gt;“userName”&lt;/strong&gt; kullanıcı adını, &lt;strong&gt;"keyMap"&lt;/strong&gt; kalvyeden basılan karakterlerin tümünü, &lt;strong&gt;“characterNum”&lt;/strong&gt; dizide tanımlanan karakter sayısını tutmaktadır.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;“CharacterDelete” metodu:&lt;/strong&gt;&lt;/div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;div align="justify"&gt;&lt;br /&gt;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 &lt;strong&gt;“back space”&lt;/strong&gt; tuşuna basıldığında çağrılır. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Metot gerçekleştirimie baktığımızda önce şu anki tuş durumunu anlamamız için &lt;strong&gt;“keyboardState”&lt;/strong&gt; adlı değişkene basılan tuşu aktaran metottan dönene değer atılır. Ardından &lt;strong&gt;“keyboardState”&lt;/strong&gt; nesnesine &lt;strong&gt;“IsKeyDown”&lt;/strong&gt; mesajını &lt;strong&gt;“Keys.Back”&lt;/strong&gt; argümanını vererek göndeririz. Böylece &lt;strong&gt;“backspace”&lt;/strong&gt; 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. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;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 &lt;strong&gt;“SubString”&lt;/strong&gt; metodudur.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;public string CharacterDelete()&lt;br /&gt;{&lt;br /&gt;keyboardState = Keyboard.GetState();&lt;br /&gt;&lt;br /&gt;if (keyboardState.IsKeyDown(Keys.Back) &amp;amp;&amp;amp; lastKeyboardState.IsKeyUp(Keys.Back) &amp;amp;&amp;amp; userName.Length &gt; 0)&lt;br /&gt;{&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;userName&lt;/span&gt; = &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;userName&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Substring&lt;/span&gt;(0, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;userName&lt;/span&gt;.Length - 1);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;return &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;userName&lt;/span&gt;;&lt;br /&gt;}//end of void &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;CharacterDelete&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;“CharacterDisplay” metodu:&lt;/strong&gt;&lt;/div&gt;&lt;strong&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/strong&gt;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 &lt;strong&gt;“keyMap”&lt;/strong&gt; 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?&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Programda en başta belirtilen karakterleri içeren &lt;strong&gt;“keyToCharacter”&lt;/strong&gt; dizisindeki karakterlerle girilen karakterler karşılaştırılır ve bu dizi içinde yer alan karakterler kullanıcı adını tutan &lt;strong&gt;“userName”&lt;/strong&gt; karakter katarına (“string”) eklenir.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Public string CharcterDisplay()&lt;br /&gt;{&lt;br /&gt;keyMap = (Keys[])keyboardState.GetPressedKeys();&lt;br /&gt;foreach (Keys key in keyMap)&lt;br /&gt;{&lt;br /&gt;for (int i = characterNum-1; i &gt;=0; i--)&lt;br /&gt;{&lt;br /&gt;if (key.ToString() == keyToCharacter[i, 0] &amp;amp;&amp;amp; lastKeyboardState.IsKeyUp(key))&lt;br /&gt;{&lt;br /&gt;userName += keyToCharacter[i, 1];&lt;br /&gt;break;&lt;br /&gt;}//end of inner if condition&lt;br /&gt;}//end of for loop&lt;br /&gt;}//end of foreach loop&lt;br /&gt;lastKeyboardState = keyboardState;&lt;br /&gt;return userName; &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;}//end of void CharcterDisplay&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="font-family:times new roman;font-size:130%;"&gt;&lt;strong&gt;“keyboardState”&lt;/strong&gt; değişkenini &lt;strong&gt;“lastKeyboardState”&lt;/strong&gt; 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).&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Times New Roman;font-size:130%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="font-family:Times New Roman;font-size:130%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;font-size:130%;"&gt;&lt;strong&gt;3. “Game1.cs” Sınıfı İçinde Yapılan Değişiklikler&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Texture2D backgroundTexture;&lt;br /&gt;Rectangle viewportRect;&lt;br /&gt;EkranaIsimYazma ekranaYazmaObj;&lt;br /&gt;string userName;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;font-size:130%;"&gt;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 &lt;strong&gt;“backgroundTexture”&lt;/strong&gt; isimli değişkeni ve bu resmin başlangıç koordinatlarını tutacak olan &lt;strong&gt;“viewportRect”&lt;/strong&gt; nesnesini tanımlarız.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;font-size:130%;"&gt;Ardından bu tanımlamalara ekrana isim yazmamış için gerekli olan değişkenleri ekleriz. Bunlardan biri &lt;strong&gt;“EkranaIsim Yazma”&lt;/strong&gt; sınıfındaki mesajları göndereceğimiz &lt;strong&gt;“ekranaYazmaObj”&lt;/strong&gt; 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 &lt;strong&gt;“userName”&lt;/strong&gt; değişkenidir.&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:times new roman;font-size:130%;"&gt;&lt;div align="justify"&gt;&lt;br /&gt;Ardından &lt;strong&gt;“LoadContent”&lt;/strong&gt; metodu içine:&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;backgroundTexture =Content.Load&lt;texture2d&gt;("Sprites\\background");&lt;br /&gt;Arial = Content.Load&lt;spritefont&gt;("Fonts/Arial");&lt;br /&gt;ekranaYazmaObj = new EkranaIsimYazma();&lt;br /&gt;//drawable area of the game screen.&lt;br /&gt;viewportRect = new Rectangle(0, 0,&lt;br /&gt;graphics.GraphicsDevice.Viewport.Width, graphics.GraphicsDevice.Viewport.Height);&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;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. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Arial = Content.Load&lt;spritefont&gt;("Fonts/Arial");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;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 &lt;strong&gt;“Sprite Font”&lt;/strong&gt; a tıklayıp &lt;strong&gt;“Arial.spritefont”&lt;/strong&gt; html’ ini projeye eklemektir.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;“Update”&lt;/strong&gt; 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:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;userName = ekranaYazmaObj.CharacterDelete();&lt;br /&gt;userName = ekranaYazmaObj.CharcterDisplay();&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Sıra geldi ismin ekrana çizilmesine. Çizilmek eyleminim kullandım, çünkü bir resim üzerine işlem yapıyoruz. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Ekrana resmi bastırmayı sağlayan metot &lt;strong&gt;“Draw”&lt;/strong&gt; metodudur. Bu metot içinde önce resmi ekleriz ardında bu resmin üzerine kullanıcın girmiş olduğu ismi ekleriz.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;spriteBatch.Begin(SpriteBlendMode.AlphaBlend);&lt;br /&gt;//Draw the backgroundTexture sized to the width&lt;br /&gt;//and height of the screen.&lt;br /&gt;spriteBatch.Draw(backgroundTexture, viewportRect, Color.White);&lt;br /&gt;//ikinci sekli de dogru arka plani ekrana bastirmada&lt;br /&gt;//aşagidaki satirda kullanilabilir&lt;br /&gt;//spriteBatch.Draw(backgroundTexture, new Vector2(0, 0), Color.White);&lt;br /&gt;spriteBatch.DrawString(Arial, "Your Name: " + userName + "&lt;", new Vector2(100, 100), Color.White); spriteBatch.End();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5157240648556773022-169019828089962736?l=gulsahyildizoglu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gulsahyildizoglu.blogspot.com/feeds/169019828089962736/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5157240648556773022&amp;postID=169019828089962736' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5157240648556773022/posts/default/169019828089962736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5157240648556773022/posts/default/169019828089962736'/><link rel='alternate' type='text/html' href='http://gulsahyildizoglu.blogspot.com/2008/11/xna-de-oyuncu-ismini-input-olarak-alma.html' title='XNA’ de Oyuncu İsmini Input Olarak Alma'/><author><name>Gulsah_bilgi</name><uri>http://www.blogger.com/profile/17493600122532586605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='18' height='32' src='http://2.bp.blogspot.com/_UfP4VvqlInQ/SvNT2HY8TGI/AAAAAAAAAH8/HAYq7X-iXFc/S220/untitled.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5157240648556773022.post-1894068424417437749</id><published>2008-10-03T18:20:00.000-07:00</published><updated>2008-10-03T18:31:32.009-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='imagine cup'/><category scheme='http://www.blogger.com/atom/ns#' term='imagine'/><category scheme='http://www.blogger.com/atom/ns#' term='DreamSpark'/><category scheme='http://www.blogger.com/atom/ns#' term='imagine cup 2009'/><title type='text'>Imagine Cup 2009</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_UfP4VvqlInQ/SOar5KU9muI/AAAAAAAAAF4/xgMPzb3qp9Y/s1600-h/IC09_Background_01+copy.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5253075013887433442" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_UfP4VvqlInQ/SOar5KU9muI/AAAAAAAAAF4/xgMPzb3qp9Y/s400/IC09_Background_01+copy.gif" border="0" /&gt;&lt;/a&gt; &lt;p align="justify"&gt;Imagine Cup 2009 finalleri bu yıl Mısır' da yapılıyor. Herkesin hayalinde Mısır' a gitmek vardır herhalde ve bu yılki teması önceki yıllara göre daha geniş. Bu da aklımızı sonuna kadar zorlamamızı sağlayacak. İşte şu olsaydı bunu yapardım olayından çok artık bunları bunları yapabilirim fikri egemen oluyor. Biz gençlerden Dünyayı değiştirecek bir fikir bulmamız isteniyor. &lt;span style="font-size:130%;color:#cc0000;"&gt;"Dünyanın en zorlu problemlerini teknoloji sayesinde çözdüğünüz bir dünya düşleyin!"&lt;/span&gt; Evet yarışmanın teması bu.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Imagine Cup'ta hepimizin ilgi alanlarından en az birini içeren 9 kategori var:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color:#ff0000;"&gt;Yazılım tasarımı &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#ff0000;"&gt;Gömülü Devre Geliştirme&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#ff0000;"&gt;Oyun Geliştirme&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#000000;"&gt;Mash up&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#000000;"&gt;IT&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#000000;"&gt;Robotics ve Algoritma&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#006600;"&gt;Fotoğraf&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#006600;"&gt;Kısa Film&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="color:#006600;"&gt;Tasarım&lt;/span&gt; &lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="justify"&gt;Mash up diğerlerine göre daha yeni bir kategori. Mash up' ın anlamı Dj'lerin farklı şarkıları karıştırıp yeni bir şarkı yapmasıdır. Oyun geliştirmede XNA az kodla ne kadar çok iş yapıldığını gösteriyor. Hem keyif alarak oynuyoruz hem de sosyal bir mesaj veriyoruz. Robotics' te Dünya finalinde gerçek robotları yönetebilme şansı. Gömülü sistem geliştirmede yarı finalist olanlara eBox 2300 ile projeyi gerçekleme fırsatı. &lt;/p&gt;&lt;p align="justify"&gt;Genciz, yetenekliyiz, aklımızda gerçekleştirmeyi planladığımız projeler var. Dünya böyle olsa değişir diyoruz. Eee o halde neden bir köşede oturup birgün keşfedilmeyi bekliyoruz. Biz zaten kendimizi keşfetmedik mi? Yazdığımız bir programla, hazırladığımız bir tasarımla, çektiğimiz bir fotoğraf karesiyle, kaydettiğimiz bir an ile ve nice teknoloji nimetleriyle isteklerimizi anlatabiliriz. &lt;/p&gt;&lt;p align="justify"&gt;Microsoft ayrıca yarışmaya kaydolan her öğrenciye yazılımlarını ücretsiz indirebileceği &lt;a href="http://dreamsparktr.msakademik.net/" target="_blank"&gt;DreamSpark&lt;/a&gt; üyeliği sağlıyor. Böylece kaliteli işler çıkarmak için herşey elimizin altında oluyor.&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;Yok artık olmaz demeyin denemeden hiç bir sonuca varamayız. O halde hep beraber Dünyayı Değiştirelim ve şu sözü hatırlayalım O Benim Dünyaaammm!!!&lt;/p&gt;&lt;br /&gt;&lt;div align="justify"&gt;9 Ekim 2008' de Dokuz Eylül Üniversitesi Tınaztepe Kampüsü' ndeki Dekanlık konferans salonunda İmagine Cup lansmanı düzenlenecektir. Lansmandaki katılım formunu dolduran herkese DreamSpark' a giriş yapmalarını sağlayacak key dağıtılacaktır. Herkesi beklerizzzz :)&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;**Kayıt için &lt;a href="https://imaginecup.com/Registration/Default.aspx" target="_blank"&gt;bu linki &lt;/a&gt;tıklamanız ve formu doldurmanız yeterli.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5157240648556773022-1894068424417437749?l=gulsahyildizoglu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gulsahyildizoglu.blogspot.com/feeds/1894068424417437749/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5157240648556773022&amp;postID=1894068424417437749' title='2 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5157240648556773022/posts/default/1894068424417437749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5157240648556773022/posts/default/1894068424417437749'/><link rel='alternate' type='text/html' href='http://gulsahyildizoglu.blogspot.com/2008/10/imagine-cup-2009.html' title='Imagine Cup 2009'/><author><name>Gulsah_bilgi</name><uri>http://www.blogger.com/profile/17493600122532586605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='18' height='32' src='http://2.bp.blogspot.com/_UfP4VvqlInQ/SvNT2HY8TGI/AAAAAAAAAH8/HAYq7X-iXFc/S220/untitled.bmp'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_UfP4VvqlInQ/SOar5KU9muI/AAAAAAAAAF4/xgMPzb3qp9Y/s72-c/IC09_Background_01+copy.gif' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5157240648556773022.post-3688572954367129312</id><published>2008-08-07T14:16:00.000-07:00</published><updated>2008-08-08T12:42:22.889-07:00</updated><title type='text'>TEK ANAHTARLI YENİ BİR ŞİFRELEME ALGORİTMASI DAHA</title><content type='html'>&lt;div align="justify"&gt;&lt;br /&gt;ÖZET&lt;br /&gt;&lt;br /&gt;Simetrik algoritmalar karakter tabanlı ve bit tabanlı sistemler olmak üzere iki bölümde incelenir. Açıklanan şifreleme algoritması bit tabanlı şifreleme algoritmalarını baz alarak gerçekleştirilmiştir. Bu makalede, öncelikle bit tabanlı algoritmalar hakkında bilgi verilmiştir ve bu kategoriye giren algoritmalardan örnekler sunulmuştur. Bu anlatımın takibinde projede kullanılan algoritma hakkında detaylı açıklamaya yer verilmiştir. Simetrik anahtar kullanılan bu algoritmada aynı anahtar ile şifreleme ve şifre çözümü yapılabilmektedir. Algoritma Feistel yapısı üzerine geliştirilmiştir, kullanılan teknikler arasında XOR operatörü ile şifreleme, S-box, E-box ve bitlerle ilgili işlemlerde kullanılan çeşitli operatörler bulunmaktadır. Algoritmanın başarılı çalıştığı örneklerle ispatlanmıştır ve bu örneklerden bir tanesi makalede sunulmuştur.&lt;br /&gt;&lt;br /&gt;Anahtar Kelimeler: Simetrik şifreleme algoritması, şifreleme algoritması, bit tabanlı şifreleme.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;YET ANOTHER ONE-KEY ENCYRPTION ALGORITHM&lt;br /&gt;&lt;br /&gt;ABSTRACT&lt;br /&gt;&lt;br /&gt;Symmetric algorithms is examined in two groups character wise systems and bit wise systems. Clarified encryption algorithm is implemented base on bit wise encryption algorithms. In this article, firstly some explanations are given about bit wise algorithms, and some examples are given about the algorithms in this category. Following the algorithm used in project is expounded in details. Via the same key encryption and decryption can be done in this algorithm that uses symmetric key. Algorithm is improved on Feistel structure, some of used techniques are encryption with XOR operator, substitution box, expansion box, and some operators used for bit operations. It is proved that, algorithm works successfully with examples and one of these algorithms is presented in this article.&lt;br /&gt;&lt;br /&gt;Keywords: Symmetric encryption algorithm, encryption algorithm, bit wise encryption.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. GİRİŞ&lt;br /&gt;Şifreleme bir mesajın gizliliğini sağlamak için kullanılan bir yöntemdir. Şifreleme çeşitlerinden biri olan simetrik şifrelemede ise amaç gönderici ile alıcının ortak bir anahtar üzerinde ve ortak bir şifreleme ile deşifreleme algoritması üzerinde anlaşıp, mesajı diğer kişilerden korumaktır.&lt;br /&gt;&lt;br /&gt;Simetrik şifrelemede beş bileşen bulunmaktadır. Bu bileşenler ve şifreleme işleminin nasıl yapıldığı Şekil 1’de gösterilmektedir.&lt;br /&gt;&lt;br /&gt;Simetrik şifrelemede güvenliği sağlayan anahtardır. Çünkü gizli olan tek şey anahtardır, şifreleme ve deşifreleme algoritmaları herkese açıktır. Farklı anahtarlar sayesinde aynı mesaj ve aynı algoritma ile birbirinden bağımsız şifreli metinler üretilebilir.&lt;br /&gt;&lt;br /&gt;Simetrik şifreleme yöntemleri metin üzerindeki işlemlerine göre iki grup altında sınıflandırılabilir. Bunlardan biri karakter tabanlı yani geleneksel şifreleme sistemleri (Monoalfabetik ve polialfabetik) ve diğeri ise bit tabanlı şifreleme yani modern şifreleme sistemleridir.&lt;br /&gt;&lt;br /&gt;Bit tabanlı şifreleme sistemlerine örnek olarak DES, TWOFISH, IRON ve AES verilebilir.&lt;br /&gt;&lt;br /&gt;a.) DES (Data Encryption Standard) : Dünyada en yaygın kullanılan şifreleme algoritmalarından birisidir. DES, IBM tarafından geliştirilmiştir. 1975 yılında “Federal Register” tarafından yayınlanmıştır. DES 64 bitlik veriyi 56 bitlik anahtar kullanarak şifreler [2]. Ayrıca klasik Feistel Ağı kullanılarak [3] temelde şifreleme işleminin deşifreleme işlemiyle aynı olması sağlanmıştır. Kullanılan teknikler yayılma ve karıştırmadır. DES’in en büyük dezavantajı anahtar uzunluğunun 56 bit olmasıdır. 1975 yılında yayınlanan bu algoritma günümüzde geliştirilen modern bilgisayarlar tarafından yapılan saldırılar karşısında yetersiz kalmaktadır. Daha güvenli şifreleme ihtiyacından dolayı DES, Triple-DES olarak geliştirilmiştir. Triple-DES algoritması geriye uyumluluğu da desteklemek amacıyla 2 adet 56 bitlik anahtar kullanır. Triple-DES algoritması, DES algoritmasının şifreleme, deşifreleme, şifreleme şeklinde uygulanmasıdır.&lt;br /&gt;&lt;br /&gt;b.) TWOFISH : 1998 yılında yayınlanan bu algoritma Bruce Schneier - John Kelsey - Doug Whiting - David Wagner - Chris Hall - Niels Ferguson tarafından yaratılmış ve analiz edilmiştir [4]. AES finalistlerinden biridir ve AES kadar hızlıdır. Aynı DES gibi Feistel yapısını kullanır. DES’den farklarından biri anahtar kullanılarak yaratılan değişken S-box (Substitution box – Değiştirme kutuları)’lara sahip olmasıdır. Ayrıca 128 bitlik düz metni 32 bitlik parçalara ayırarak işlemlerin çoğunu 32 bitlik değerler üzerinde gerçekleştirir. AES’den farklı olarak eklenen 2 adet 1 bitlik rotasyon, şifreleme ve deşifreleme algoritmalarını birbirinden farklı yapmış, bu ise uygulama maliyetini arttırmış, aynı zamanda yazılım uygulamalarını %5 yavaşlatmıştır [5].&lt;br /&gt;&lt;br /&gt;c.) IRON : Diğer iki algoritma gibi Feistel yapısını kullanır. IRON, 64 bitlik veri bloklarını 128 bitlik anahtarla şifrelemede kullanılır. Döngü (round) sayısı 16 ile 32 arasındadır. Alt anahtarlar döngü sayısına bağlıdır. Alt anahtarların sayısı döngü sayısına eşittir. Bu nedenden dolayı algoritma anahtar bağımlıdır. IRON algoritmasının var olan algoritmalardan farkı da budur. Bu algoritmanın avantajı bitler yerine 16-tabanındaki sayılar kullanmasıdır, dezavantajı ise yazılım için tasarlanmış olmasıdır [6].&lt;br /&gt;&lt;br /&gt;d.) AES (The Advanced Encryption Standard) : AES, John Daemen ve Vincent Rijmen tarafından Rijndael adıyla geliştirilmiş ve 2002 yılında standart haline gelmiştir. AES uzunluğu 128 bitte sabit olan blok ile uzunluğu 128, 192 ya da 256 bit olan anahtar kullanır. Kullanılan tekniklerden bazıları baytların yer değiştirmesi, 4x4’ lük matrisler üzerine yayılmış metin parçalarının satırlarına uygulanan kaydırma işlemleridir. 2006 yılı itibariyle en popüler simetrik algoritmalardan biridir [7].&lt;br /&gt;&lt;br /&gt;Makalenin devamında projede kullanılan algoritmadan, bu algoritmanın avantajlarından ve kısıtlamalarından söz edilmektedir. Ek olarak algoritmanın geliştirilmesi için neler yapılabilir konusu ele alınmıştır.&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;2. ALGORİTMANIN DETAYLARI&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;2.1 ) Şifreleme Algoritması&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Şekil 2’de belirtilen şifreleme algoritmasında kullanıcıdan şifrelenmesi istenen bir düz metin ve anahtar girmesi beklenmektedir. Anahtar uzunluğu sabit olmakla beraber 64 bittir. Yani 8 karakter uzunluğuna denk gelmektedir. Anahtar herhangi bir sayı, alfabede yer alan harfler ya da özel karakterler olabilir. Türkçe karakterler içerisinde bulunan ş,ğ,ö,ç,ü gibi harfler girildiğinde ise bu karakterler s,g,o,c,u harfleriyle yer değiştiriliyor. Temel şifreleme işlemi Şekil 2’de belirtilmiştir. Kullanılan yapı Feistel’dir.&lt;br /&gt;&lt;br /&gt;Anahtar uzunluğu 64 bitten kısa girildiğinde kullanıcıya 64 bitten daha kısa uzunlukta anahtar girmemesini söyleyen bir hata mesajı gönderiliyor. Eğer anahtar uzunluğu 64 bitten büyük girilirse ilk 64 biti alınıp geri kalan kısmı önemsenmiyor.&lt;br /&gt;&lt;br /&gt;Alt anahtarlar 64 bitlik anahtar kullanılarak üretiliyor. Alt anahtarların sayısı 16 ve her biri 48 bitten oluşmakta. Anahtar boyutları DES algoritmasıyla aynı ancak alt anahtarları üretmede kullanılan işlemler farklı [Bkz.Şekil2].&lt;br /&gt;&lt;br /&gt;Şifrelenecek metnin uzunluğu kullanıcının isteğiyle değişiklik gösteriyor. Sadece bir karakter olabileceği gibi çok uzun bir metin de olabilir. Ancak şifreleme algoritmasında bloklar halinde şifreleme tekniği kullanıldığından metin 64 bitlik bloklara bölünüyor.&lt;br /&gt;&lt;br /&gt;Kullanıcının girdiği metindeki karakter sayısı 8’ e bölünebilen bir sayı değilse metne boşluklar eklenerek 8’in katı olması sağlanıyor. Bu işlemlerden sonra Anahtarlari_uret fonksiyonu çağrılıyor.&lt;br /&gt;&lt;br /&gt;Anahtarlari_uret Fonksiyonu :&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;“Anahtarlari_uret” fonksiyonunun akış diyagramı Şekil 3’te verilmiştir.&lt;br /&gt;&lt;br /&gt;Bu fonksiyonda karakter katarı (string) olarak okunan anahtardaki herbir karakterin ASCII karşılığı alınıyor ve elemanları bayt olan bir diziye konuluyor. Daha sonra bu dizideki elemanların indeksleri “karakterleri_karistir” fonksiyonu ile değiştiriliyor. Bu fonksiyonda dizideki her elemanın toplamı bir değişkene atılır.Bu işlemden sonra elde edilen değişkenin 127’ ye göre modu alınır. En son elde edilen değerler dizideki elemanların yerlerini kaydırmak için kullanılır.&lt;br /&gt;&lt;br /&gt;Bu dizi fonksiyondan geri döndürüldükten sonra sahneye çıkma sırası ise Anahtarlar_uretiliyor fonksiyonundadır.&lt;br /&gt;&lt;br /&gt;Anahtarlar_uretiliyor Fonksiyonu:&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Şekil 4’te gösterilen her iki blok da 4 kez tekrar etmektedir.&lt;br /&gt;Bu blokların işlenmesinden sonra anahtar_ascii dizisindeki her sayı tek tek bitlerine ayrılır. 1 sayıdan 8 tane bit elde edilir ve bu bitler bir dizide toplanır. Toplam 64 tane bit elde edilir. Artık 8 elemanlı dizi, 64 elemanlı başka bir bayt dizisine dönüştürülmüş oldu. Bu işlem yer kaybına neden olur ama bitler üzerinde işlem kolaylığı sağlaması açısından yararlıdır [Bkz. Şekil4].&lt;br /&gt;&lt;br /&gt;Bu fonksiyonda Şekil 5’te belirtilen 4 tane alt fonksiyon çağrılmaktadır:&lt;br /&gt;&lt;br /&gt;Bu fonksiyonlardan bir tanesi anahtara ait olan 64 bitin bnrstr dizisindeki yerini karıştırmak için kullanılmaktadır. Fonksiyonun çalışması modüler aritmetik üzerine kuruludur. Eğer indeksin modu 2’ ye göre 0’a eşitse bu indeksteki değer cift_indeksteki_bitler_sol_tarafa dizisine, 1’se tek_indeksteki_bitler_sag_tarafa dizisine atanır. Daha sonra cift_indeksteki_bitler_sol_tarafa dizisindeki elemanlar ile tek_indeksteki_bitler_sag_tarafa dizisindeki elemanlar sırayla OR operatörü yardımıyla bit tabanlı bir işleme tabi tutulur ve her işlemin sonucunda oluşan yeni değer bnrstr dizisine atanır. 32 defa devam eden bu atamadan sonra, tek_indeksteki_bitler_sag_tarafa dizisindeki elemanların değili ile cift_indeksteki_bitler_sol_tarafa dizisindeki elemanların değilleri sırasıyla OR operatörü ile işlenir ve bu 32 değer bnrstr dizisinin kalan 32 elemanlık yerini doldurur.&lt;br /&gt;&lt;br /&gt;Anahtari_56ya_Dusur fonksiyonunda 64 bitlik anahtar uzunluğu permutation choice tekniği ile 56 bite düşürülür. Şekil 6’daki kod 56 kez bir döngü içinde tekrarlandığında hedefe ulaşılır [Bkz.Şekil6].&lt;br /&gt;&lt;br /&gt;Bu fonksiyondan sonra Şekil 7’de belirtilen Anahtari_48e_Dusur fonksiyonu 56 bite düşen anahtarı 48 bite azaltmak için kullanılır. Fakat bu fonksiyon içinde başka bir fonksiyon daha çağrılır. Çağrılan fonksiyonun amacı anahtardaki karmaşıklığı arttırıp, olabilecek ataklara karşı güvenliği sağlamaktır [Bkz.Şekil7].&lt;br /&gt;&lt;br /&gt;Anahtari_32_yap_48e_Cikar fonksiyonu anahtarı 48 bitten 32 bite azaltmak için S-box adı verilen yapıyı kullanır. Bu yapı sayesinde rastgele üretilmiş sayılardan oluşan bir tablodan geçen her 6 bit 4 bit olarak çıkar (Bu algoritmada ise 6 dizi elemanı geliyor ve bu 6 taneden herhangi 4’ ü olarak çıkıyor.). Toplam 8 adet S-box kullanılmıştır. Bu fonksiyonun sonunda ise “expansion box” tekniği ile 32 bitlik anahtar 48 bite arttırılır.&lt;br /&gt;&lt;br /&gt;“Expansion Box” Tekniği : Bazı bitler rastgele olarak tekrarlanır.&lt;br /&gt;&lt;br /&gt;Anahtari_48e_Dusur fonksiyonunu Anahtari_Shift_et fonksiyonu takip etmektedir. Bu fonksiyonda 16 adet alt anahtar üretilmektedir. Bir sonraki anahtar bir önceki anahtarın bitlerinin 1 kez sola kaydırılmasıyla üretilmiştir. Bu nedenle her anahtar bir öncekine bağlıdır. Bir bit değiştirildiğinde bir çok anahtar üretilmektedir. Terminolojide bu olaya avalans etkisi denilmektedir.&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;SIFRELEME_FONKSIYONU Fonksiyonu : &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Bu fonksiyonda (Şekil 8) öncelikle kullanıcıdan alınan düz metnin ilk 8 karakteri alınır ve Karakterleri_karistir_text fonksiyonunda her karakter ASCII değerine çevrilir ve bir dizide saklanır. Daha sonra bu dizinin elemanları anahtar dizisinin ASCII değerlerini toplayarak elemanlarını kaydırma algoritmasının nerdeyse aynısı olan bir algoritma ile yer değiştirir.&lt;br /&gt;&lt;br /&gt;Daha sonra dizideki her eleman bitlerine ayrılır ve toplam 64 bit elde edilip bir dizi içinde saklanır. Bu 64 elemanlı dizi sol ve sağ blok olmak üzere iki parçaya ayrılır, ve artık sahnenin sahibi Feistel yapısıdır.&lt;br /&gt;&lt;br /&gt;Li = Ri–1&lt;br /&gt;Ri = Li–1 xor F(Ri–1, Ki)&lt;br /&gt;&lt;br /&gt;16 kez döngü uygulanır ve bu 16 döngü sonunda elde edilen iki dizinin Feistel yapısındaki çaprazlaması sonucu şifreli metnin ilk bloğu oluşur. Şekil 8’de bu işlem akış diyagramı ile anlatılmıştır [Bkz. Şekil9]:&lt;br /&gt;&lt;br /&gt;R16 ve L16 şifreli metni oluşturan parçalardır. Feistel yapısı kullanıldığı için şifrenin çözümü anahtarı bilen kişi olan alıcı için çok kolaydır, anahtarı bilmeyen kişi olan saldırgan (opponent) için ise oldukça zordur.&lt;br /&gt;&lt;br /&gt;2.2 ) Deşifreleme Algoritması&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Şifreyi çözmek için öncelikle şifreli metnin ilk 64 bitlik bloğundan başlanır. Bu bloğun şifresi çözüldükten sonra eğer varsa diğer 64 bitlik blok deşifre edilir. Bu işlem şifreli metnin sonuna kadar devam eder.&lt;br /&gt;Şifreyi çözmede kullanılan fonksiyonda şifreli metin bloğu bitlerine ayrılır. Bu bitlerden ilk 32 si L0 parçasını, geri kalan 32 bit ise R0 parçasını oluşturur. Şifreleme algoritmasında anahtarları üretmek için kullanılan fonksiyonun aynısı deşifrelemede anahtarları tekrar üretmek için kullanılır. Aynı anahtardan 16 tane alt anahtar üretilir. Feistel yapısı kullanıldığından şifreyi çözmek için anahtarları fonksiyona tersten veririz (16. anahtardan başlanıp 1.anahtara doğru) .&lt;br /&gt;&lt;br /&gt;Şekil 9’daki akış diyagramı şifrelemedekine çok benzer, tek farklılık anahtarların tersten verilmesidir [Bkz. Şekil10]:&lt;br /&gt;&lt;br /&gt;En son aşamaya gelindiğinde yapılması gereken, şifrelerken karıştırılan dizideki karakterleri eski yerlerine geri koymaktır. Çünkü karakterleri karıştırılan dizi alt anahtarlarla şifreleme işlemine tabi tutulmuştur. Deşifrelemede tersten gidileceği için elimizdeki dizinin karakterlerindeki karışıklığı düzeltmemiz gerekmektedir.&lt;br /&gt;&lt;br /&gt;Bu işlemde yapılması gereken toplama işleminin tersi olan çıkarma işlemini kullanmaktır (1). Detaylı açıklamak gerekirse; şifrelerken örneğin 3. indekste bulunan elemanın indeksine 2 ekleyerek 5. indekste yer alması sağlanır, deşifre ederken de 5. indeksteki elemanın indeksinden 2 çıkarttıldığında 3.indeks yani olması gereken indeks bulunur. Bunun için kullanılan kod satırı aşağıda verilmiştir:&lt;br /&gt;&lt;br /&gt;degisen_karistirilan_karakter_dizisi[i]=karistirilan_karakter_dizisi[(i-shift_etme_miktari+64) % 64] (1)&lt;br /&gt;&lt;br /&gt;Elimizde artık düz metne ait olan bitler bulunmaktadır. Bu bitleri bir araya getirip topladığımızda düz metne ait karakterlerin ASCII karşılıklarını buluruz. Artık bu aşamadan sonra blokların birleştirilmesiyle düz metne ulaşılmış olunur.&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;3. ALGORİTMANIN AVANTAJLARI&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Avalans etkisi ve anahtar uzunluğu bu algoritmanın güçlü parçalarıdır. Çünkü anahtarı bulmak için yapılan saldırılarda anahtarın bir bitindeki değişiklik bir değil birden fazla farklı anahtarların oluşmasına neden olur. Anahtar uzunluğundan dolayı Kaba Kuvvet (Brute Force) saldırısıyla anahtarın bulunması çok zordur.&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;4. ALGORİTMADAKİ KISITLAMALAR&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Algoritmadaki ilk kısıtlama anahtar uzunluğunun sabit olmasıdır. Değişen uzunlukta anahtar kullanılamamaktadır. Diğer kısıtlama ise döngü sayısının sabit olmasıdır. Eğer döngü sayısı anahtar uzunluğuna bağlı olsaydı ve anahtar uzunluğu da değişebiliyor olsaydı, algoritma saldırılara karşı daha dirençli olurdu. Ayrıca donanım için tasarlanmadığından, donanıma uyum göstermeyebilir. Çalışma hızı, modüler aritmetik ve bit kaydırma işlemlerinden dolayı yavaşlamaktadır.&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;5. ÖRNEK UYGULAMA&lt;br /&gt;&lt;br /&gt;Düz Metin: Kriptoloji şifreleme ve deşifreleme işlemlerini kapsayan bir bilimdir ve diğer bilimlerde olduğu gibi bu biliminde bir tarihi vardır.&lt;br /&gt;&lt;br /&gt;Anahtar: Simetrik şifreleme bir mesajın gizliliğini sağlamak için kullanılan bir şifreleme türüdür.&lt;br /&gt;&lt;br /&gt;Şifrelenmiş-Metin: 25F221670F1FEC9C5DD9DD1B0E16EF0389DB391A524AF1C9D019568830E98A6C7B1C069A62BE11AD810A01AEC139168AC82AA81F468A1108DD22099E8650E7DB5C5CDADACF96FC46F9131DC7D518268ED21F008536E5CB76D91AA31AE6BE3728F1472C82DD582682DB484A5E09C4BF85DD0213B014506FD52CDA8CBF33CAB039940955DA74EDD57B&lt;br /&gt;&lt;br /&gt;De-şifre Edilmiş Metin: Kriptoloji sifreleme ve de-sifreleme islemlerini kapsayan bir bilimdir ve diger bilimlerde oldugu gibi bu biliminde bir tarihi vardir.&lt;br /&gt;&lt;br /&gt;(ASCII kodlamadaki kısıtlamalardan dolayı düz metin hexadecimal formda gösterilmiştir).&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;6. SONUÇ&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Algoritma daha önceden var olan şifreleme algoritmalarındaki tekniklerin üzerine yeni teknikler ekleyerek ve bu tekniklerin uygulama yerlerinin değiştirilmesiyle oluşturulmuştur. Algoritmanın başarılı bir şekilde çalıştığı örneklerle de test edilmiş, performans üzerindeki kısıtlamalarının ne olduğu açıkça dile getirilmiştir. Algoritma donanım için geliştirilmeye açıktır ve daha güvenilir bir sistem için yenilikleri içine alabilecek bir yapı üzerine kurulmuştur.&lt;br /&gt;&lt;br /&gt;Algoritmayı geliştirmek için algoritmasındaki gibi anahtar uzunluğuyla döngü sayısının değişken olması sağlanabilir. Döngü sayısı anahtar uzunluğuna bağlı olduğu sürece anahtar uzunluğunu bulmak güç olduğundan döngü sayısının da bulunması güçleşecektir.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;7. KAYNAKLAR&lt;br /&gt;&lt;br /&gt;[1]. Stallings W., Cryptography and Network Security: Principles and Practice Fourth Edition, Prentice Hall, New Jersey, 2006, ss.30.&lt;br /&gt;&lt;br /&gt;[2]. Stinson D. R., Cryptography, Theory and Practice, CRC Press, 1995, ss. 70.&lt;br /&gt;&lt;br /&gt;[3]. Stallings W., Network Security Essentials: Applications and Standards, Second Edition, Prentice Hall, New Jersey, 2003, ss. 33&lt;br /&gt;&lt;br /&gt;[4]. Twofish, Bruce Schneier kişisel websitesi, &lt;a href="http://www.schneier.com/twofish.html"&gt;http://www.schneier.com/twofish.html&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;[5]. Ferguson N., Schneir B., “Practical Cyrptography”, Wiley Publishing, 2003, ss. 59-61&lt;br /&gt;&lt;br /&gt;[6]. Demir N., Dalkılıç G., “Anahtar Bağımlı Bir Şifreleme Algoritması (IRON)”, Akademik Bilişim 2007, 31 Ocak – 2 Şubat 2007, Kastamonu.&lt;br /&gt;&lt;br /&gt;[7]. Wikipedia, The Free Encylopedia, http://en.wikipedia.org/wiki/Advanced_Encryption_Standard.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5157240648556773022-3688572954367129312?l=gulsahyildizoglu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gulsahyildizoglu.blogspot.com/feeds/3688572954367129312/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5157240648556773022&amp;postID=3688572954367129312' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5157240648556773022/posts/default/3688572954367129312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5157240648556773022/posts/default/3688572954367129312'/><link rel='alternate' type='text/html' href='http://gulsahyildizoglu.blogspot.com/2008/08/tek-anahtarli-yeni-bir-ifreleme.html' title='TEK ANAHTARLI YENİ BİR ŞİFRELEME ALGORİTMASI DAHA'/><author><name>Gulsah_bilgi</name><uri>http://www.blogger.com/profile/17493600122532586605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='18' height='32' src='http://2.bp.blogspot.com/_UfP4VvqlInQ/SvNT2HY8TGI/AAAAAAAAAH8/HAYq7X-iXFc/S220/untitled.bmp'/></author><thr:total>0</thr:total></entry></feed>
