<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://geeks.netindonesia.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>katulsomin - MIC ITB : beginner</title><link>http://geeks.netindonesia.net/blogs/katulsomin/archive/tags/beginner/default.aspx</link><description>Tags: beginner</description><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><item><title>Tutorial XNA : Bermain Dengan Musik dan Video</title><link>http://geeks.netindonesia.net/blogs/katulsomin/archive/2009/07/29/tutorial-xna-bermain-dengan-musik-dan-video.aspx</link><pubDate>Tue, 28 Jul 2009 20:02:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:182847</guid><dc:creator>katulsomin</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/katulsomin/rsscomments.aspx?PostID=182847</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/katulsomin/archive/2009/07/29/tutorial-xna-bermain-dengan-musik-dan-video.aspx#comments</comments><description>&lt;p&gt;Jaman sekarang, game bagus apa yang tidakpunya musik/video? Hampir enggak ada! Kalau kau ingin membuat game yang mengesankan, harus ada multimedianya. Itu harga mati. Jadi, tentu saja XNA akan membantu kita di aspek ini..&lt;/p&gt;  &lt;p&gt;Siap ? 1..2..3.. Let’s rock!&lt;/p&gt;  &lt;h3&gt;Audio&lt;/h3&gt;  &lt;p&gt;Pertama-tama kita tambahkan file lagu yang ingin dipakai ke dalam Project solution. Klik kanan Content-&amp;gt;Add-&amp;gt;Existing item&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.netindonesia.net/blogs/katulsomin/image_32F0BDC8.png"&gt;&lt;img src="http://geeks.netindonesia.net/blogs/katulsomin/image_thumb_1A40D4DE.png" title="image" style="border-width:0px;display:inline;" alt="image" border="0" height="262" width="376" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;Akan kebuka window seperti ini:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.netindonesia.net/blogs/katulsomin/image_063EB4A8.png"&gt;&lt;img src="http://geeks.netindonesia.net/blogs/katulsomin/Boolean%20EnablePostStatistics" title="image" style="border-width:0px;display:inline;" alt="image" border="0" height="272" width="364" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Kita tinggal ambil file audio yang kita mau saja. Format yang didukung untuk XNA 3.1 adalah .xap , .wav, .wma, dan .mp3 tercinta. Saya ambil sebuah lagu mp3 dan memberi nama asset name&amp;nbsp; ’musikku’. Lagu ini siap digunakan! ayo.&lt;/p&gt;  &lt;p&gt;Seperti biasa, pertama kita butuh kelas kontainer untuk lagu. Tambahkan kode berikut di kelas Game1.cs:&lt;/p&gt;  &lt;div id="codeSnippetWrapper" style="border:1px solid silver;margin:20px 0px 10px;padding:4px;overflow:auto;font-size:8pt;width:97.5%;cursor:text;direction:ltr;max-height:200px;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;   &lt;div id="codeSnippet" style="border-style:none;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;     &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;Song lagu;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Terus, kita load di dalam fungsi LoadContent:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="border:1px solid silver;margin:20px 0px 10px;padding:4px;overflow:auto;font-size:8pt;width:97.5%;cursor:text;direction:ltr;max-height:200px;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
  &lt;div id="codeSnippet" style="border-style:none;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;lagu = &lt;span&gt;this&lt;/span&gt;.Content.Load&amp;lt;Song&amp;gt;(&lt;span&gt;&amp;quot;musik&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
Oops, jangan lupa bersih-bersih di UnloadContent &lt;img src="http://spaces.live.com/rte/emoticons/smile_eyeroll.gif" alt="smile_eyeroll" /&gt; 

&lt;div id="codeSnippetWrapper" style="border:1px solid silver;margin:20px 0px 10px;padding:4px;overflow:auto;font-size:8pt;width:97.5%;cursor:text;direction:ltr;max-height:200px;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
  &lt;div id="codeSnippet" style="border-style:none;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;lagu.Dispose();&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Sip. Sekarang lagu tinggal dimainkan. Tulis kode ini di fungsi Update:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="border:1px solid silver;margin:20px 0px 10px;padding:4px;overflow:auto;font-size:8pt;width:97.5%;cursor:text;direction:ltr;max-height:200px;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
  &lt;div id="codeSnippet" style="border-style:none;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span&gt;if&lt;/span&gt; (MediaPlayer.State != MediaState.Playing)&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;{&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;    MediaPlayer.Play(lagu);&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;kode-kode ini sangat simpel hingga saya bingung apa yang perlu dijelaskan. XNA memang membuat serba mudah..&lt;img src="http://spaces.live.com/rte/emoticons/smile_regular.gif" alt="smile_regular" /&gt; (mengingat pahit saat harus pusing mengurus bit stream untuk musik di java.. sial!). Dan o&lt;i&gt;f course, &lt;/i&gt;ini hanya fitur basic..&amp;nbsp; kelas Song, MediaPlayer, MediaLibrary, dll.. memberikan berbagai fungsionalitas seperti Windows media player! Silahkan disoba-coba sendiri. &lt;/p&gt;

&lt;p&gt;Selain cara ‘langsung’ diatas, ada juga cara yang lebih rapi, dengan XACT. Tapi itu untuk post di lain hari (sori, awalnya mau aku bahas, tapi ternyata cukup dalam.. takutnya malah jadi ngebingungin).&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;h3&gt;Video&lt;/h3&gt;

&lt;p&gt;Menambahkan video ke XNA juga tidak sulit. Secara default, XNA mendukung format .wmv &lt;/p&gt;

&lt;p&gt;Pertama, masukkan file wmv yang hendak dipakai ke dalam project solution. Caranya persis sama dengan file audio. Untuk contoh ini asset name-nya “videoclip”&lt;/p&gt;

&lt;p&gt;Lalu, Tambahkan kode ini di kelas Game1.cs:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="border:1px solid silver;margin:20px 0px 10px;padding:4px;overflow:auto;font-size:8pt;width:97.5%;cursor:text;direction:ltr;max-height:200px;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
  &lt;div id="codeSnippet" style="border-style:none;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;Video video;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;VideoPlayer videoplayer = &lt;span&gt;new&lt;/span&gt; VideoPlayer();&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;kode untuk LoadContent..&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="border:1px solid silver;margin:20px 0px 10px;padding:4px;overflow:auto;font-size:8pt;width:97.5%;cursor:text;direction:ltr;max-height:200px;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
  &lt;div id="codeSnippet" style="border-style:none;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;video = Content.Load&amp;lt;Video&amp;gt;(&lt;span&gt;&amp;quot;videoclip&amp;quot;&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;videoplayer.Play(video);&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Hanya dengan begini saja, jika dicoba dijalankan suara dari video clip sudah akan keluar. Untuk mendapat gambar video juga, teksture dari video perlu kita gambar ke layar.&lt;/p&gt;

&lt;p&gt;Tambahkan ini ke fungsi Draw:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="border:1px solid silver;margin:20px 0px 10px;padding:4px;overflow:auto;font-size:8pt;width:97.5%;cursor:text;direction:ltr;max-height:200px;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
  &lt;div id="codeSnippet" style="border-style:none;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;Texture2D p = videoplayer.GetTexture();&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;spriteBatch.Begin();&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;gambarBola.Draw(spriteBatch);&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;spriteBatch.Draw(p, &lt;span&gt;new&lt;/span&gt; Vector2(0, 0), Color.White);&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;spriteBatch.End();&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Selesai! Sebagai tambahan, gambar video ini juga dapat kita manipulasi seperti gambar biasa. Silahkan coba sendiri!&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;…&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Wah, sudah selesai post ini. Awalnya saya kira butuh halaman yang lebih banyak, tapi sistem content pipeline di XNA membuat proses memasukkan multimedia menjadi mudah. Jadi sori yah kalo post ini singkat bener. &lt;img src="http://geeks.netindonesia.net/emoticons/emotion-10.gif" alt="Embarrassed" /&gt;&lt;/p&gt;

&lt;p&gt;Di post selanjutnya, saya mau ngebahas 3D di XNA.&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/katulsomin/archive/2009/07/29/tutorial-xna-bermain-dengan-musik-dan-video.aspx&amp;amp;subject=Tutorial XNA : Bermain Dengan Musik dan Video" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/katulsomin/archive/2009/07/29/tutorial-xna-bermain-dengan-musik-dan-video.aspx&amp;amp;t=Tutorial+XNA+%3a+Bermain+Dengan+Musik+dan+Video" target="_blank" title="Submit Tutorial XNA : Bermain Dengan Musik dan Video to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/katulsomin/archive/2009/07/29/tutorial-xna-bermain-dengan-musik-dan-video.aspx&amp;amp;title=Tutorial+XNA+%3a+Bermain+Dengan+Musik+dan+Video" target="_blank" title="Submit Tutorial XNA : Bermain Dengan Musik dan Video to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/katulsomin/archive/2009/07/29/tutorial-xna-bermain-dengan-musik-dan-video.aspx&amp;amp;phase=2" target="_blank" title="Submit Tutorial XNA : Bermain Dengan Musik dan Video to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/katulsomin/archive/2009/07/29/tutorial-xna-bermain-dengan-musik-dan-video.aspx&amp;amp;title=Tutorial+XNA+%3a+Bermain+Dengan+Musik+dan+Video" target="_blank" title="Add Tutorial XNA : Bermain Dengan Musik dan Video to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=182847" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/katulsomin/archive/tags/tutorial/default.aspx">tutorial</category><category domain="http://geeks.netindonesia.net/blogs/katulsomin/archive/tags/MIC+ITB/default.aspx">MIC ITB</category><category domain="http://geeks.netindonesia.net/blogs/katulsomin/archive/tags/beginner/default.aspx">beginner</category><category domain="http://geeks.netindonesia.net/blogs/katulsomin/archive/tags/XNA/default.aspx">XNA</category></item><item><title>Tutorial XNA: Menerima input Keyboard, Mouse, Gamepad dan Voice Recognition</title><link>http://geeks.netindonesia.net/blogs/katulsomin/archive/2009/07/09/tutorial-xna-menerima-input-keyboard-mouse-gamepad-dan-voice-recognition.aspx</link><pubDate>Wed, 08 Jul 2009 19:34:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:182407</guid><dc:creator>katulsomin</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/katulsomin/rsscomments.aspx?PostID=182407</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/katulsomin/archive/2009/07/09/tutorial-xna-menerima-input-keyboard-mouse-gamepad-dan-voice-recognition.aspx#comments</comments><description>&lt;p&gt;Maaf updatenya lama sekali.. biasalah liburan. Di post kecil ini akan saya jelaskan caranya menerima input user. Saya akan menggunakan kelas dan project yang sebelumnya, biar gampang.&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;h3&gt;Input Keyboard&lt;/h3&gt;  &lt;p&gt;Keyboard.. paling basic untuk game di PC, dan cara mengelolanya sangat mudah di XNA. Secara default, kita bisa langsung mengakses keadaan keyboard dengan menggunakan method getState dalam objek keyboard. Biar lebih mudah dimengerti, coba tambahkan kode berikut pada Game1.cs, fungsi Update:&lt;/p&gt;  &lt;div id="codeSnippetWrapper" style="border:1px solid silver;margin:20px 0px 10px;padding:4px;overflow:auto;font-size:8pt;width:97.5%;cursor:text;direction:ltr;max-height:200px;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;   &lt;div id="codeSnippet" style="border-style:none;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;     &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum1"&gt;   1:&lt;/span&gt; KeyboardState tombolditekan = Keyboard.GetState();&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum2"&gt;   2:&lt;/span&gt; &lt;span&gt;if&lt;/span&gt; (tombolditekan.IsKeyDown(Keys.Up))&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum3"&gt;   3:&lt;/span&gt;     gambarBola.posisi += &lt;span&gt;new&lt;/span&gt; Vector2(0, -5);&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum4"&gt;   4:&lt;/span&gt; &lt;span&gt;if&lt;/span&gt; (tombolditekan.IsKeyDown(Keys.Down))&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum5"&gt;   5:&lt;/span&gt;     gambarBola.posisi += &lt;span&gt;new&lt;/span&gt; Vector2(0, 5);&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum6"&gt;   6:&lt;/span&gt; &lt;span&gt;if&lt;/span&gt; (tombolditekan.IsKeyDown(Keys.Left))&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum7"&gt;   7:&lt;/span&gt;     gambarBola.posisi += &lt;span&gt;new&lt;/span&gt; Vector2(-5, 0);&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum8"&gt;   8:&lt;/span&gt; &lt;span&gt;if&lt;/span&gt; (tombolditekan.IsKeyDown(Keys.Right))&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum9"&gt;   9:&lt;/span&gt;     gambarBola.posisi += &lt;span&gt;new&lt;/span&gt; Vector2(5, 0);&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Kode diatas sangat simpel. Kita mengambil state dari keyboard dan membandingkannya dengan state tertentu. Dalam kasus ini, kode diatas akan membuat gambar bola bergerak dengan tombol arah di keyboard. Gampang!&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;h3&gt;Input Mouse&lt;/h3&gt;

&lt;p&gt;Satu lagi yang umum. Caranya juga tidak jauh beda dengan keyboard. Bedanya disini kita mengakses state dari objek Mouse. Contoh kode:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="border:1px solid silver;margin:20px 0px 10px;padding:4px;overflow:auto;font-size:8pt;width:97.5%;cursor:text;direction:ltr;max-height:200px;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
  &lt;div id="codeSnippet" style="border-style:none;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum1"&gt;   1:&lt;/span&gt; MouseState tikus = Mouse.GetState();&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum2"&gt;   2:&lt;/span&gt; gambarBola.posisi = &lt;span&gt;new&lt;/span&gt; Vector2(tikus.X, tikus.Y);&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Jika anda menebak kode diatas akan membuat gambarBola mengikuti posisi mouse.. yah anda benar. kode diatas sangat jelas sehingga rasanya tidak perlu dijelaskan lagi&lt;img src="http://spaces.live.com/rte/emoticons/smile_sniff.gif" alt="smile_sniff" /&gt;. XNA serba menyediakan, kita tinggal mencoba dan pasti bisa membuat game.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;h3&gt;Input GamePad&lt;/h3&gt;

&lt;p&gt;Sebetulnya salah satu tujuan XNA adalah Microsoft ingin membangun komunitas game amatir untuk XBOX, jadi jelas saja dukungan XNA untuk XBOX sangat baik. objek GamePad tersedia untuk menerima input dari XBOX. Hanya saja, saya tidak punya XBOX..&lt;img src="http://spaces.live.com/rte/emoticons/smile_sad.gif" alt="smile_sad" /&gt; jadi tidak bisa mengetes gamePad deh. Tapi, secara teori tidak jauh beda dengan mouse atau keyboard, kok.&lt;/p&gt;

&lt;p&gt;Maka jika saya modifikasi kode untuk keyboard menjadi gamepad, hasilnya begini:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="border:1px solid silver;margin:20px 0px 10px;padding:4px;overflow:auto;font-size:8pt;width:97.5%;cursor:text;direction:ltr;max-height:200px;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
  &lt;div id="codeSnippet" style="border-style:none;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum1"&gt;   1:&lt;/span&gt; GamePadState tombolditekan = GamePad.GetState(PlayerIndex.One);&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum2"&gt;   2:&lt;/span&gt; &lt;span&gt;if&lt;/span&gt; (tombolditekan.IsButtonDown(Buttons.DPadUp))&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum3"&gt;   3:&lt;/span&gt;     gambarBola.posisi += &lt;span&gt;new&lt;/span&gt; Vector2(0, -5);&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum4"&gt;   4:&lt;/span&gt; &lt;span&gt;if&lt;/span&gt; (tombolditekan.IsButtonDown(Buttons.DPadDown))&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum5"&gt;   5:&lt;/span&gt;     gambarBola.posisi += &lt;span&gt;new&lt;/span&gt; Vector2(0, 5);&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum6"&gt;   6:&lt;/span&gt; &lt;span&gt;if&lt;/span&gt; (tombolditekan.IsButtonDown(Buttons.DPadLeft))&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum7"&gt;   7:&lt;/span&gt;     gambarBola.posisi += &lt;span&gt;new&lt;/span&gt; Vector2(-5, 0);&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum8"&gt;   8:&lt;/span&gt; &lt;span&gt;if&lt;/span&gt; (tombolditekan.IsButtonDown(Buttons.DPadRight))&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum9"&gt;   9:&lt;/span&gt;     gambarBola.posisi += &lt;span&gt;new&lt;/span&gt; Vector2(5, 0);&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Tidak jauh beda, kan? Hanya ganti beberapa method saja. Walau saya ingatkan, kode yang ini tidak bisa saya tes. Tapi.. secara teori solid. Saya hampir yakin 99% kode diatas jalan.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;h3&gt;Input Suara – Voice recognition&lt;/h3&gt;

&lt;p&gt;Nah ini baru menarik! tidak semua game menggunakan ini, karena masalah dukungan user(tidak semua orang punya microphone) dan karena memang tingkat kesulitannya lebih dibandingkan penerima input klasik diatas. Tapi hebatnya framework .NET 3.0 (dan maka otomatis XNA juga) mendukung penggunaannya, hingga ini bukan hal yang sulit! Cool, huh? Tapi yang didukung dengan baik sekarang hanya bahasa inggris, jadi kalau mau bikin game lokal masih nanti.. oh ya, dan ini hanya untuk game PC, XBOX masih belum didukung. Tapi &lt;i&gt;still, it’s freaking cool.&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;Pertama- tama, kita siapkan dulu voice recognition enginenya. masukkan kode berikut ke dalam game1.cs Kode ini akan membuat game kita meload engine yang sudah tersedia di framework.&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="border:1px solid silver;margin:20px 0px 10px;padding:4px;overflow:auto;font-size:8pt;width:97.5%;cursor:text;direction:ltr;max-height:200px;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
  &lt;div id="codeSnippet" style="border-style:none;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum1"&gt;   1:&lt;/span&gt; &lt;span&gt;using&lt;/span&gt; System.Speech;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum2"&gt;   2:&lt;/span&gt; &lt;span&gt;using&lt;/span&gt; System.Speech.Recognition;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;lalu kita buat objek SpeechRecognitionEngine. Tambahkan ini ke kelas game1.cs&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="border:1px solid silver;margin:20px 0px 10px;padding:4px;overflow:auto;font-size:8pt;width:97.5%;cursor:text;direction:ltr;max-height:200px;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
  &lt;div id="codeSnippet" style="border-style:none;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum1"&gt;   1:&lt;/span&gt; SpeechRecognitionEngine suara;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Sekarang, kita siapkan engine tersebut! tambahkan kode ini ke fungsi Initialize:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="border:1px solid silver;margin:20px 0px 10px;padding:4px;overflow:auto;font-size:8pt;width:97.5%;cursor:text;direction:ltr;max-height:200px;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
  &lt;div id="codeSnippet" style="border-style:none;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum1"&gt;   1:&lt;/span&gt; suara = &lt;span&gt;new&lt;/span&gt; SpeechRecognitionEngine();&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum2"&gt;   2:&lt;/span&gt;             suara.SetInputToDefaultAudioDevice();&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum3"&gt;   3:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum4"&gt;   4:&lt;/span&gt;             GrammarBuilder grammarBuilder = &lt;span&gt;new&lt;/span&gt; GrammarBuilder();&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum5"&gt;   5:&lt;/span&gt;             grammarBuilder.Append(&lt;span&gt;new&lt;/span&gt; Choices(      &lt;span&gt;//membuat grammar baru yang dikenali program&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum6"&gt;   6:&lt;/span&gt;               &lt;span&gt;&amp;quot;left&amp;quot;&lt;/span&gt;,&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum7"&gt;   7:&lt;/span&gt;               &lt;span&gt;&amp;quot;right&amp;quot;&lt;/span&gt;,&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum8"&gt;   8:&lt;/span&gt;               &lt;span&gt;&amp;quot;up&amp;quot;&lt;/span&gt;,&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum9"&gt;   9:&lt;/span&gt;               &lt;span&gt;&amp;quot;down&amp;quot;&lt;/span&gt;));&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum10"&gt;  10:&lt;/span&gt;             Grammar customGrammar = &lt;span&gt;new&lt;/span&gt; Grammar(grammarBuilder);&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum11"&gt;  11:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum12"&gt;  12:&lt;/span&gt;             suara.UnloadAllGrammars(); &lt;span&gt;// kosongkan grammar default&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum13"&gt;  13:&lt;/span&gt;             suara.LoadGrammar(customGrammar); &lt;span&gt;//masukkan grammar yang baru&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum14"&gt;  14:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum15"&gt;  15:&lt;/span&gt;             suara.SpeechRecognized += &lt;span&gt;new&lt;/span&gt; EventHandler&amp;lt;SpeechRecognizedEventArgs&amp;gt;(sre_SpeechRecognized);&lt;span&gt;// event baru&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum16"&gt;  16:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum17"&gt;  17:&lt;/span&gt;             suara.RecognizeAsync(RecognizeMode.Multiple); // membuat program bisa menerima beberapa input sekaligus&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Satu langkah lagi, kita butuh prosedur untuk meng-handle masukan suara:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="border:1px solid silver;margin:20px 0px 10px;padding:4px;overflow:auto;font-size:8pt;width:97.5%;cursor:text;direction:ltr;max-height:200px;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
  &lt;div id="codeSnippet" style="border-style:none;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum1"&gt;   1:&lt;/span&gt; &lt;span&gt;void&lt;/span&gt; suara_SpeechRecognized(&lt;span&gt;object&lt;/span&gt; sender, SpeechRecognizedEventArgs e)&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum2"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum3"&gt;   3:&lt;/span&gt;  &lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum4"&gt;   4:&lt;/span&gt;   &lt;span&gt;switch&lt;/span&gt; (e.Result.Text)&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum5"&gt;   5:&lt;/span&gt;   {&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum6"&gt;   6:&lt;/span&gt;     &lt;span&gt;case&lt;/span&gt; &lt;span&gt;&amp;quot;up&amp;quot;&lt;/span&gt;:&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum7"&gt;   7:&lt;/span&gt;          gambarBola.posisi += &lt;span&gt;new&lt;/span&gt; Vector2(0, -5);&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum8"&gt;   8:&lt;/span&gt;         &lt;span&gt;break&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum9"&gt;   9:&lt;/span&gt;     &lt;span&gt;case&lt;/span&gt; &lt;span&gt;&amp;quot;down&amp;quot;&lt;/span&gt;:&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum10"&gt;  10:&lt;/span&gt;          gambarBola.posisi += &lt;span&gt;new&lt;/span&gt; Vector2(0, 5);&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum11"&gt;  11:&lt;/span&gt;         &lt;span&gt;break&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum12"&gt;  12:&lt;/span&gt;      &lt;span&gt;case&lt;/span&gt; &lt;span&gt;&amp;quot;left&amp;quot;&lt;/span&gt;:&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum13"&gt;  13:&lt;/span&gt;            gambarBola.posisi += &lt;span&gt;new&lt;/span&gt; Vector2(-5, 0);&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum14"&gt;  14:&lt;/span&gt;            &lt;span&gt;break&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum15"&gt;  15:&lt;/span&gt;     &lt;span&gt;case&lt;/span&gt; &lt;span&gt;&amp;quot;right&amp;quot;&lt;/span&gt;:&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum16"&gt;  16:&lt;/span&gt;              gambarBola.posisi += &lt;span&gt;new&lt;/span&gt; Vector2(5, 0);&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum17"&gt;  17:&lt;/span&gt;             &lt;span&gt;break&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum18"&gt;  18:&lt;/span&gt;   }&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum19"&gt;  19:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Dengan prosedur kumpulan kode diatas, apa bila ada perinatah suara yang dikenali, game akan menangkapnya dan mengurusnya. Jika semua berjalan lancar, bola kita akan bisa digerakkan hanya dengan perintah suara! &lt;i&gt;XNA sure is cool huh&lt;/i&gt;?&lt;img src="http://spaces.live.com/rte/emoticons/smile_wink.gif" alt="smile_wink" /&gt;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Segini dulu post kali ini.. insya Allah post berikutnya membahas XACT dan Sound di XNA.&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/katulsomin/archive/2009/07/09/tutorial-xna-menerima-input-keyboard-mouse-gamepad-dan-voice-recognition.aspx&amp;amp;subject=Tutorial XNA: Menerima input Keyboard, Mouse, Gamepad dan Voice Recognition" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/katulsomin/archive/2009/07/09/tutorial-xna-menerima-input-keyboard-mouse-gamepad-dan-voice-recognition.aspx&amp;amp;t=Tutorial+XNA%3a+Menerima+input+Keyboard%2c+Mouse%2c+Gamepad+dan+Voice+Recognition" target="_blank" title="Submit Tutorial XNA: Menerima input Keyboard, Mouse, Gamepad dan Voice Recognition to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/katulsomin/archive/2009/07/09/tutorial-xna-menerima-input-keyboard-mouse-gamepad-dan-voice-recognition.aspx&amp;amp;title=Tutorial+XNA%3a+Menerima+input+Keyboard%2c+Mouse%2c+Gamepad+dan+Voice+Recognition" target="_blank" title="Submit Tutorial XNA: Menerima input Keyboard, Mouse, Gamepad dan Voice Recognition to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/katulsomin/archive/2009/07/09/tutorial-xna-menerima-input-keyboard-mouse-gamepad-dan-voice-recognition.aspx&amp;amp;phase=2" target="_blank" title="Submit Tutorial XNA: Menerima input Keyboard, Mouse, Gamepad dan Voice Recognition to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/katulsomin/archive/2009/07/09/tutorial-xna-menerima-input-keyboard-mouse-gamepad-dan-voice-recognition.aspx&amp;amp;title=Tutorial+XNA%3a+Menerima+input+Keyboard%2c+Mouse%2c+Gamepad+dan+Voice+Recognition" target="_blank" title="Add Tutorial XNA: Menerima input Keyboard, Mouse, Gamepad dan Voice Recognition to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=182407" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/katulsomin/archive/tags/tutorial/default.aspx">tutorial</category><category domain="http://geeks.netindonesia.net/blogs/katulsomin/archive/tags/MIC+ITB/default.aspx">MIC ITB</category><category domain="http://geeks.netindonesia.net/blogs/katulsomin/archive/tags/beginner/default.aspx">beginner</category><category domain="http://geeks.netindonesia.net/blogs/katulsomin/archive/tags/game/default.aspx">game</category><category domain="http://geeks.netindonesia.net/blogs/katulsomin/archive/tags/XNA/default.aspx">XNA</category><category domain="http://geeks.netindonesia.net/blogs/katulsomin/archive/tags/input/default.aspx">input</category><category domain="http://geeks.netindonesia.net/blogs/katulsomin/archive/tags/sound+recognition/default.aspx">sound recognition</category></item><item><title>Tutorial XNA : Memasukkan Gambar dan Menggerakkannya</title><link>http://geeks.netindonesia.net/blogs/katulsomin/archive/2009/06/29/tutorial-xna-memasukkan-gambar-dan-menggerakkannya.aspx</link><pubDate>Mon, 29 Jun 2009 16:10:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:182115</guid><dc:creator>katulsomin</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/katulsomin/rsscomments.aspx?PostID=182115</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/katulsomin/archive/2009/06/29/tutorial-xna-memasukkan-gambar-dan-menggerakkannya.aspx#comments</comments><description>  &lt;p&gt;Sesuai janji, sekarang akan saya jelaskan caranya memasukkan gambar dan mengolahnya dalam XNA Game Studio. Saya sarankan untuk pemula, baca dulu pengantar tutorial XNA saya sebelumnya. Saya ingatkan, saya juga belum mahir. Jadi kalau ada kesalahan atau saran kasih tahu, ya. Siip.. &lt;br /&gt;&lt;/p&gt;  &lt;h3&gt;Menambah Asset Project&lt;/h3&gt;  &lt;p&gt;Sebelum gambar hendak di otak-atik, file gambar perlu dimasukkan dulu sebagai asset. Untuk contoh ini, saya akan memakai gambar bola ini:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.netindonesia.net/blogs/katulsomin/600pxSoccer_ball.svg_60BC1BC3.png"&gt;&lt;img src="http://geeks.netindonesia.net/blogs/katulsomin/600pxSoccer_ball.svg_thumb_6FF28490.png" title="600px-Soccer_ball.svg" style="border:0px none;display:inline;" alt="600px-Soccer_ball.svg" border="0" height="120" width="120" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Dalam solution explorer, klik kanan Content, Add –&amp;gt; Existing Item&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.netindonesia.net/blogs/katulsomin/629200962515PM_0FA3EF0A.png"&gt;&lt;img src="http://geeks.netindonesia.net/blogs/katulsomin/629200962515PM_thumb_4F04334B.png" title="6-29-2009 6-25-15 PM" style="border:0px none;display:inline;" alt="6-29-2009 6-25-15 PM" border="0" height="309" width="443" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;Lalu tinggal pilih file gambar yang hendak dimasukkan. Jika sudah, klik file tersebut, dan akan muncul properties-nya:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.netindonesia.net/blogs/katulsomin/image_58821323.png"&gt;&lt;img src="http://geeks.netindonesia.net/blogs/katulsomin/image_thumb_6ACD6A96.png" title="image" style="border:0px none;display:inline;" alt="image" border="0" height="233" width="256" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Asset Name adalah nama yang digunakan bila kita hendak meload file tersebut. Lebih baik Asset Name diubah menjadi nama yang lebih pendek dan mudah diingat, dan disini Asset Name saya ubah menjadi “bola”. Properties yang lain tidak perlu diubah, tapi kalau mau silahkan experimen sendiri.&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;h3&gt;Menampilkan Gambar&lt;/h3&gt;  &lt;p&gt;Disini saya jelaskan dulu cara yang paling standar, agar lebih mudah dimengerti cara kerjanya, Baru nanti agak lebih mantep, OK? &lt;img src="http://geeks.netindonesia.net/emoticons/emotion-1.gif" alt="Smile" /&gt;&lt;/p&gt;  &lt;p&gt;Pertama-tama, harus disediakan kelas container untuk gambar. Masukkan kode berikut ke dalam kelas Game1.cs&lt;/p&gt;  &lt;div id="codeSnippetWrapper" style="border:1px solid silver;margin:20px 0px 10px;padding:4px;overflow:auto;font-size:8pt;width:97.5%;cursor:text;direction:ltr;max-height:200px;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;   &lt;div id="codeSnippet" style="border-style:none;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;     &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum1"&gt;   1:&lt;/span&gt; Vector2 posisi = &lt;span&gt;new&lt;/span&gt; Vector2(0, 0); &lt;span&gt;// untuk menampung posisi gambar&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum2"&gt;   2:&lt;/span&gt; Texture2D gambar; &lt;span&gt;// Untuk menampung grafik dari gambar&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Sekarang, ayo kita load asset bola kedalam game. Sesuai struktur XNA, urusan load asset ditangani di prosedur LoadContent. Tambahkan kode ini di prosedur tersebut.&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="border:1px solid silver;margin:20px 0px 10px;padding:4px;overflow:auto;font-size:8pt;width:97.5%;cursor:text;direction:ltr;max-height:200px;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
  &lt;div id="codeSnippet" style="border-style:none;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum1"&gt;   1:&lt;/span&gt; gambar = &lt;span&gt;this&lt;/span&gt;.Content.Load&amp;lt;Texture2D&amp;gt;(&lt;span&gt;&amp;quot;bola&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Untuk kebersihan memori, jangan lupa untuk menambahkan kode untuk unload-nya juga di UnloadContent:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="border:1px solid silver;margin:20px 0px 10px;padding:4px;overflow:auto;font-size:8pt;width:97.5%;cursor:text;direction:ltr;max-height:200px;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
  &lt;div id="codeSnippet" style="border-style:none;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum1"&gt;   1:&lt;/span&gt; gambar.Dispose();&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Setelah persiapan diatas telah selesai, saatnya kita gambar ke layar. Untuk proses menggambar, kita akan berurusan dengan kelas spriteBatch. spriteBatch adalah kelas XNA untuk menggambar ke layar. Ok, sekarang tambahkan code ini kedalam prosedur Draw:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="border:1px solid silver;margin:20px 0px 10px;padding:4px;overflow:auto;font-size:8pt;width:97.5%;cursor:text;direction:ltr;max-height:200px;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
  &lt;div id="codeSnippet" style="border-style:none;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum1"&gt;   1:&lt;/span&gt; spriteBatch.Begin();&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum2"&gt;   2:&lt;/span&gt; spriteBatch.Draw(gambar, posisi, Color.White);&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum3"&gt;   3:&lt;/span&gt; spriteBatch.End();&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Bila berhasil, saat kita coba Run Game1.cs akan muncul window seperti ini:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://geeks.netindonesia.net/blogs/katulsomin/image_792DFE2A.png"&gt;&lt;img src="http://geeks.netindonesia.net/blogs/katulsomin/image_thumb_122C5F21.png" title="image" style="border:0px none;display:inline;" alt="image" border="0" height="332" width="428" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Enggak susah, kan? &lt;img src="http://spaces.live.com/rte/emoticons/smile_regular.gif" alt="smile_regular" /&gt;&lt;/p&gt;

&lt;h3&gt;Membuat Kelas Sprite Sederhana dan Menggerakkan Gambar&lt;/h3&gt;

&lt;p&gt;Kalau yang berpengalaman OOP, kayaknya udah melihat masalah pada cara diatas. Bila untuk menggambar dibutuhkan 2 variable yang berbeda, itu tidak efektif. Apa lagi jika kebutuhan makin kompleks dan variable makin banyak. Akan lebih baik jika kita membuat sebuah kelas Sprite yang memiliki property dan method yang lengkap untuk mengurusnya. Karena itu, mari kita buat sebuah kelas sprite sederhana agar mengendalikan gambar lebih mudah!&lt;/p&gt;

&lt;p&gt;Untuk membuat kelas baru, klik kanan di project name, Add –&amp;gt; New Item&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;a href="http://geeks.netindonesia.net/blogs/katulsomin/image_07FAC4B4.png"&gt;&lt;img src="http://geeks.netindonesia.net/blogs/katulsomin/image_thumb_7979E585.png" title="image" style="border:0px none;display:inline;" alt="image" border="0" height="427" width="418" /&gt;&lt;/a&gt; &lt;/p&gt;





&lt;p&gt;&amp;nbsp;Dan pilih Class, untuk contoh ini saya beri nama SpriteSederhana.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://geeks.netindonesia.net/blogs/katulsomin/image_6D9F3157.png"&gt;&lt;img src="http://geeks.netindonesia.net/blogs/katulsomin/image_thumb_7CD82AD5.png" title="image" style="border:0px none;display:inline;" alt="image" border="0" height="337" width="437" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Ini kode saya untuk kelas Sprite Sederhana:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="border:1px solid silver;margin:20px 0px 10px;padding:4px;overflow:auto;font-size:8pt;width:97.5%;cursor:text;direction:ltr;max-height:200px;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
  &lt;div id="codeSnippet" style="border-style:none;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum1"&gt;   1:&lt;/span&gt; &lt;span&gt;using&lt;/span&gt; Microsoft.Xna.Framework.Graphics;   &lt;span&gt;// Untuk Texture2D&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum2"&gt;   2:&lt;/span&gt; &lt;span&gt;using&lt;/span&gt; Microsoft.Xna.Framework;  &lt;span&gt;//  Untuk Vector2&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum3"&gt;   3:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum4"&gt;   4:&lt;/span&gt; &lt;span&gt;namespace&lt;/span&gt; Latihan&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum5"&gt;   5:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum6"&gt;   6:&lt;/span&gt;     &lt;span&gt;class&lt;/span&gt; SpriteSederhana&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum7"&gt;   7:&lt;/span&gt;     {&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum8"&gt;   8:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum9"&gt;   9:&lt;/span&gt;         &lt;span&gt;public&lt;/span&gt; Texture2D texture { get; set;}  &lt;span&gt;// Sprite texture&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum10"&gt;  10:&lt;/span&gt;         &lt;span&gt;public&lt;/span&gt; Vector2 posisi { get; set; }  &lt;span&gt;// posisi Sprite&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum11"&gt;  11:&lt;/span&gt;         &lt;span&gt;public&lt;/span&gt; SpriteSederhana (Texture2D newTexture, Vector2 newPosisi) &lt;span&gt;//konstruktor&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum12"&gt;  12:&lt;/span&gt;         {&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum13"&gt;  13:&lt;/span&gt;             texture = newTexture;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum14"&gt;  14:&lt;/span&gt;             posisi = newPosisi;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum15"&gt;  15:&lt;/span&gt;         }&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum16"&gt;  16:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum17"&gt;  17:&lt;/span&gt;         &lt;span&gt;public&lt;/span&gt; &lt;span&gt;void&lt;/span&gt; Draw(SpriteBatch spriteBatch)&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum18"&gt;  18:&lt;/span&gt;         {&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum19"&gt;  19:&lt;/span&gt;             spriteBatch.Draw(texture, posisi, Color.White); &lt;span&gt;//Untuk menggambar ke layar&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum20"&gt;  20:&lt;/span&gt;         }&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum21"&gt;  21:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum22"&gt;  22:&lt;/span&gt;         &lt;span&gt;public&lt;/span&gt; &lt;span&gt;void&lt;/span&gt; Dispose()&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum23"&gt;  23:&lt;/span&gt;         {&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum24"&gt;  24:&lt;/span&gt;             texture.Dispose(); &lt;span&gt;//Untuk unload Content&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum25"&gt;  25:&lt;/span&gt;         }&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum26"&gt;  26:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum27"&gt;  27:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Setelah itu, Game1.cs juga perlu sedikit diubah untuk memanfaatkan kelas sprite baru kita.&lt;/p&gt;

&lt;p&gt;Ganti yang lama dengan Variable baru:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="border:1px solid silver;margin:20px 0px 10px;padding:4px;overflow:auto;font-size:8pt;width:97.5%;cursor:text;direction:ltr;max-height:200px;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
  &lt;div id="codeSnippet" style="border-style:none;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum1"&gt;   1:&lt;/span&gt; SpriteSederhana gambarBola;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Untuk LoadContent:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="border:1px solid silver;margin:20px 0px 10px;padding:4px;overflow:auto;font-size:8pt;width:97.5%;cursor:text;direction:ltr;max-height:200px;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
  &lt;div id="codeSnippet" style="border-style:none;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum1"&gt;   1:&lt;/span&gt; gambarBola = &lt;span&gt;new&lt;/span&gt; SpriteSederhana(&lt;span&gt;this&lt;/span&gt;.Content.Load&amp;lt;Texture2D&amp;gt;(&lt;span&gt;&amp;quot;bola&amp;quot;&lt;/span&gt;), &lt;span&gt;new&lt;/span&gt; Vector2(0f, 0f));&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;











&lt;p&gt;&amp;nbsp;Untuk UnloadContent:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="border:1px solid silver;margin:20px 0px 10px;padding:4px;overflow:auto;font-size:8pt;width:97.5%;cursor:text;direction:ltr;max-height:200px;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
  &lt;div id="codeSnippet" style="border-style:none;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum1"&gt;   1:&lt;/span&gt; gambarBola.Dispose();&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Terakhir, untuk Draw:&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="border:1px solid silver;margin:20px 0px 10px;padding:4px;overflow:auto;font-size:8pt;width:97.5%;cursor:text;direction:ltr;max-height:200px;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
  &lt;div id="codeSnippet" style="border-style:none;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum1"&gt;   1:&lt;/span&gt; spriteBatch.Begin();&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum2"&gt;   2:&lt;/span&gt; gambarBola.Draw(spriteBatch);&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum3"&gt;   3:&lt;/span&gt; spriteBatch.End();&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Sekarang, jika dicoba di-run, bola juga akan terlihat seperti cara standar. Tapi, karena sudah dalam kelas tersendiri, akan lebih mudah untuk menambahkan method untuk mengendalikannya. Ayo, kita coba biar gambar bola ini bisa bergerak!&lt;/p&gt;

&lt;p&gt;Tambahkan method berikut di SpriteSederhana.cs&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="border:1px solid silver;margin:20px 0px 10px;padding:4px;overflow:auto;font-size:8pt;width:97.5%;cursor:text;direction:ltr;max-height:200px;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
  &lt;div id="codeSnippet" style="border-style:none;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum1"&gt;   1:&lt;/span&gt; &lt;span&gt;public&lt;/span&gt; &lt;span&gt;void&lt;/span&gt; GerakHorizontal(&lt;span&gt;int&lt;/span&gt; kecepatan)&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum2"&gt;   2:&lt;/span&gt;  {&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum3"&gt;   3:&lt;/span&gt;      posisi = &lt;span&gt;new&lt;/span&gt; Vector2(posisi.X + kecepatan, posisi.Y);&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum4"&gt;   4:&lt;/span&gt;  }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;







&lt;p&gt;&amp;nbsp;Sekarang, kita coba method itu di prosedur Update Game1.cs&lt;/p&gt;

&lt;div id="codeSnippetWrapper" style="border:1px solid silver;margin:20px 0px 10px;padding:4px;overflow:auto;font-size:8pt;width:97.5%;cursor:text;direction:ltr;max-height:200px;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
  &lt;div id="codeSnippet" style="border-style:none;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum1"&gt;   1:&lt;/span&gt; &lt;span&gt;protected&lt;/span&gt; &lt;span&gt;override&lt;/span&gt; &lt;span&gt;void&lt;/span&gt; Update(GameTime gameTime)&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum2"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum3"&gt;   3:&lt;/span&gt;     &lt;span&gt;// Allows the game to exit&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum4"&gt;   4:&lt;/span&gt;     &lt;span&gt;if&lt;/span&gt; (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum5"&gt;   5:&lt;/span&gt;         &lt;span&gt;this&lt;/span&gt;.Exit();&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum6"&gt;   6:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum7"&gt;   7:&lt;/span&gt;     &lt;span&gt;// TODO: Add your update logic here&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum8"&gt;   8:&lt;/span&gt;     gambarBola.GerakHorizontal(1);&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum9"&gt;   9:&lt;/span&gt;     &lt;span&gt;base&lt;/span&gt;.Update(gameTime);&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum10"&gt;  10:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Coba di run. Jika Bola tersebut bergerak ke kanan, berhasil! Tentunya, kecepatan bola bergerak bisa diubah tergantung masukan kepada fungsi GerakHorizontal. Jika mau membuat GerakVertikal, tidak jauh beda. Hanya saja yang diubah adalah y, bukan x. Silahkan coba sendiri!&lt;img src="http://geeks.netindonesia.net/emoticons/emotion-5.gif" alt="Wink" /&gt;&lt;/p&gt;

&lt;p&gt;Oke, untuk kali ini segini dulu yah. Kalau tertarik sih saya sarankan eksperimen sendiri. Insya Allah post berikutnya saya tunjukkan bagaimana mengendalikan gambar dari input user.&lt;img src="http://geeks.netindonesia.net/emoticons/emotion-1.gif" alt="Smile" /&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/katulsomin/archive/2009/06/29/tutorial-xna-memasukkan-gambar-dan-menggerakkannya.aspx&amp;amp;subject=Tutorial XNA : Memasukkan Gambar dan Menggerakkannya" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/katulsomin/archive/2009/06/29/tutorial-xna-memasukkan-gambar-dan-menggerakkannya.aspx&amp;amp;t=Tutorial+XNA+%3a+Memasukkan+Gambar+dan+Menggerakkannya" target="_blank" title="Submit Tutorial XNA : Memasukkan Gambar dan Menggerakkannya to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/katulsomin/archive/2009/06/29/tutorial-xna-memasukkan-gambar-dan-menggerakkannya.aspx&amp;amp;title=Tutorial+XNA+%3a+Memasukkan+Gambar+dan+Menggerakkannya" target="_blank" title="Submit Tutorial XNA : Memasukkan Gambar dan Menggerakkannya to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/katulsomin/archive/2009/06/29/tutorial-xna-memasukkan-gambar-dan-menggerakkannya.aspx&amp;amp;phase=2" target="_blank" title="Submit Tutorial XNA : Memasukkan Gambar dan Menggerakkannya to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/katulsomin/archive/2009/06/29/tutorial-xna-memasukkan-gambar-dan-menggerakkannya.aspx&amp;amp;title=Tutorial+XNA+%3a+Memasukkan+Gambar+dan+Menggerakkannya" target="_blank" title="Add Tutorial XNA : Memasukkan Gambar dan Menggerakkannya to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=182115" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/katulsomin/archive/tags/tutorial/default.aspx">tutorial</category><category domain="http://geeks.netindonesia.net/blogs/katulsomin/archive/tags/MIC+ITB/default.aspx">MIC ITB</category><category domain="http://geeks.netindonesia.net/blogs/katulsomin/archive/tags/beginner/default.aspx">beginner</category><category domain="http://geeks.netindonesia.net/blogs/katulsomin/archive/tags/XNA/default.aspx">XNA</category><category domain="http://geeks.netindonesia.net/blogs/katulsomin/archive/tags/pemula/default.aspx">pemula</category></item><item><title>Tutorial XNA : Prelude</title><link>http://geeks.netindonesia.net/blogs/katulsomin/archive/2009/06/29/tutorial-xna-prelude.aspx</link><pubDate>Sun, 28 Jun 2009 18:25:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:182065</guid><dc:creator>katulsomin</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/katulsomin/rsscomments.aspx?PostID=182065</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/katulsomin/archive/2009/06/29/tutorial-xna-prelude.aspx#comments</comments><description>&lt;p&gt;Sebelum ditugaskan menulis blog oleh MIC ITB, saya tidak tahu sama sekali tentang XNA. Masalahnya, majalah PC terlalu mahal untuk kantong mahasiswa, dan waktu internet termakan facebook&lt;img src="http://spaces.live.com/rte/emoticons/smile_embaressed.gif" alt="smile_embaressed" /&gt;. Tugas MIC ITB mengharuskan post saya agar bermanfaat, dan post saya sebelumnya tentang silverlight, saya pikir lagi sepertinya tidak begitu membantu orang lain.. terlalu terburu-buru dan lebih seperti curhat. Karena itu sekarang saya ingin menulis tutorial yang lebih &lt;i&gt;step by step&lt;/i&gt;, agar lebih mudah dipahami dan tidak langsung menyodorkan hasil jadi untuk dipelajari. Tutorial ini akan saya buat berdasarkan dari banyak sumber lain yang saya baca dan ambil sarinya, lalu disajikan disini dengan ramuan saya sendiri untuk pembaca.&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;h2&gt;Pengertian dan konsep XNA&lt;/h2&gt;  &lt;p&gt;Apa sih XNA? XNA adalah sebuah framework dari Microsoft untuk memudahkan developer membangun game untuk PC dan XBOX, dan Zune. Gampangnya, semua buatan Microsoft. XNA juga adalah singkatan dari ‘XNA’s Not Acronymed’. Hehe, saya ketawa begitu tahu. Ternyata Microsoft punya rasa humor juga. &lt;img src="http://spaces.live.com/rte/emoticons/smile_regular.gif" alt="smile_regular" /&gt;&lt;/p&gt;  &lt;p&gt;Beberapa keunggulan XNA adalah:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Gratis. jadi, mengapa tidak? &lt;/li&gt;    &lt;li&gt;Portabilitas. Game yang kita buat dengan XNA dapat dijalankan di semua Platform yang mendukung XNA Framework. (Kalau mau bilang berarti ini hanya untuk windows, pikir lagi! Mono (alternatif open source yang kompatibel dengan .NET) juga akan mendukung XNA.) &lt;/li&gt;    &lt;li&gt;Kemudahan. XNA mengurus berbagai kode rutin untuk mengontrol multimedia dan lain-lain, yang merupakan kebutuhan mendasar bagi semua game. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;h2&gt;Persiapan untuk membuat game dengan XNA.&lt;/h2&gt;  &lt;p&gt;&lt;i&gt;Ready&lt;/i&gt;?&lt;/p&gt;  &lt;p&gt;Pertama-tama, kau perlu mendownload XNA Game Studio 3.1 dan Visual C# Express Edition dari website ini &lt;a href="http://creators.xna.com/en-US/downloads" title="http://creators.xna.com/en-US/downloads"&gt;http://creators.xna.com/en-US/downloads&lt;/a&gt;. jangan khawatir, downloadnya gratis.&lt;/p&gt;  &lt;p&gt;Install Visual C# terlebih dahulu, lalu baru XNA, karena XNA Game Studio sebetulnya mirip “extension” untuk Visual Studio.&lt;/p&gt;  &lt;p&gt;Selesai? Oke. Buka Visual C#, pilih “New Project” dan akan muncul window ini:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.netindonesia.net/blogs/katulsomin/image3_0A1EA45E.png"&gt;&lt;img src="http://geeks.netindonesia.net/blogs/katulsomin/image3_thumb_4DB30328.png" title="image" style="border:0px none;display:inline;" alt="image" border="0" height="357" width="493" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Pilih XNA Game Studio 3.1, lalu Windows Game. Untuk nama project ini saya beri nama “Latihan”. OK!&lt;/p&gt;  &lt;p&gt;XNA secara otomatis akan membuat beberapa file dan folder dalam project. Yang pertama kali terbuka untuk di edit adalah Game1.cs&lt;/p&gt;  &lt;p&gt;Cobalah di-run. Jika muncul window berwarna biru seperti ini, selamat! Langkah pertama selesai!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.netindonesia.net/blogs/katulsomin/image_741E7228.png"&gt;&lt;img src="http://geeks.netindonesia.net/blogs/katulsomin/image_thumb_18465D69.png" title="image" style="border-width:0px;display:inline;" alt="image" border="0" height="382" width="488" /&gt;&lt;/a&gt;&amp;nbsp; &lt;/p&gt;  &lt;h3&gt;&amp;nbsp;&lt;/h3&gt;  &lt;h2&gt;Struktur &lt;i&gt;default&lt;/i&gt; game XNA&lt;/h2&gt;  &lt;p&gt;Sebelum otak-atik dimulai, perlu tahu dulu struktur game yang dibuat oleh XNA ini. Ada 2 file kode utama yang dibuat secara otomatis, yaitu :&lt;/p&gt;  &lt;h3&gt;Program.cs&lt;/h3&gt;  &lt;p&gt;File ini menyimpan Main dari game yang kita buat. Jika kita lihat isinya:&lt;/p&gt;  &lt;div id="codeSnippetWrapper" style="border:1px solid silver;margin:20px 0px 10px;padding:4px;overflow:auto;font-size:8pt;width:97.5%;cursor:text;direction:ltr;max-height:200px;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;   &lt;div id="codeSnippet" style="border-style:none;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;     &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum1"&gt;   1:&lt;/span&gt; &lt;span&gt;using&lt;/span&gt; System;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum2"&gt;   2:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum3"&gt;   3:&lt;/span&gt; &lt;span&gt;namespace&lt;/span&gt; Latihan&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum4"&gt;   4:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum5"&gt;   5:&lt;/span&gt;     &lt;span&gt;static&lt;/span&gt; &lt;span&gt;class&lt;/span&gt; Program&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum6"&gt;   6:&lt;/span&gt;     {&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum7"&gt;   7:&lt;/span&gt;         &lt;span&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum8"&gt;   8:&lt;/span&gt;         &lt;span&gt;/// The main entry point for the application.&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum9"&gt;   9:&lt;/span&gt;         &lt;span&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum10"&gt;  10:&lt;/span&gt;         &lt;span&gt;static&lt;/span&gt; &lt;span&gt;void&lt;/span&gt; Main(&lt;span&gt;string&lt;/span&gt;[] args)&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum11"&gt;  11:&lt;/span&gt;         {&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum12"&gt;  12:&lt;/span&gt;             &lt;span&gt;using&lt;/span&gt; (Game1 game = &lt;span&gt;new&lt;/span&gt; Game1())&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum13"&gt;  13:&lt;/span&gt;             {&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum14"&gt;  14:&lt;/span&gt;                 game.Run();&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum15"&gt;  15:&lt;/span&gt;             }&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum16"&gt;  16:&lt;/span&gt;         }&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum17"&gt;  17:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum18"&gt;  18:&lt;/span&gt; }&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum19"&gt;  19:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Kode awal dari file ini simpel, yaitu membuat kelas baru dari Game1 dan menjalankannya. Program.cs ini memberikan kebebasan saat kita ingin mengurus command line code dan semacamnya, juga karena seluruh Game1 tersimpan dalam 1 kelas, jika kita ingin membuat sebuat multi-game atau sub game, file ini adalah tempat mengaturnya.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;h3&gt;Game1.cs&lt;/h3&gt;

&lt;p&gt;Game.cs adalah file yang menyimpan kelas yang akan meng-enkapsulasi game yang hendak kita buat. XNA juga sudah mengenerate berbagai prosedur standar yang tinggal kita isi. Penjelasan singkat tiap prosedur:&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;h4&gt;Initialize&lt;/h4&gt;

&lt;div id="codeSnippetWrapper" style="border:1px solid silver;margin:20px 0px 10px;padding:4px;overflow:auto;font-size:8pt;width:97.5%;cursor:text;direction:ltr;max-height:200px;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
  &lt;div id="codeSnippet" style="border-style:none;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum1"&gt;   1:&lt;/span&gt; &lt;span&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum2"&gt;   2:&lt;/span&gt; &lt;span&gt;/// Allows the game to perform any initialization it needs to before starting to run.&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum3"&gt;   3:&lt;/span&gt; &lt;span&gt;/// This is where it can query for any required services and load any non-graphic&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum4"&gt;   4:&lt;/span&gt; &lt;span&gt;/// related content.  Calling base.Initialize will enumerate through any components&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum5"&gt;   5:&lt;/span&gt; &lt;span&gt;/// and initialize them as well.&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum6"&gt;   6:&lt;/span&gt; &lt;span&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum7"&gt;   7:&lt;/span&gt; &lt;span&gt;protected&lt;/span&gt; &lt;span&gt;override&lt;/span&gt; &lt;span&gt;void&lt;/span&gt; Initialize()&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum8"&gt;   8:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum9"&gt;   9:&lt;/span&gt;     &lt;span&gt;// TODO: Add your initialization logic here&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum10"&gt;  10:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum11"&gt;  11:&lt;/span&gt;     &lt;span&gt;base&lt;/span&gt;.Initialize();&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum12"&gt;  12:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Ini adalah prosedur yang akan dilaksanakan sebelum sebuah sesi game dijalankan. Jika kita hendak melakukan inisialisasi variable, kelas, dan semacamnya untuk sebuah sesi game, tinggal kita masukkan disini, dan XNA akan mengurusnya dengan otomatis.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;h4&gt;LoadContent&lt;/h4&gt;

&lt;div id="codeSnippetWrapper" style="border:1px solid silver;margin:20px 0px 10px;padding:4px;overflow:auto;font-size:8pt;width:97.5%;cursor:text;direction:ltr;max-height:200px;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
  &lt;div id="codeSnippet" style="border-style:none;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum1"&gt;   1:&lt;/span&gt; &lt;span&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum2"&gt;   2:&lt;/span&gt; &lt;span&gt;/// LoadContent will be called once per game and is the place to load&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum3"&gt;   3:&lt;/span&gt; &lt;span&gt;/// all of your content.&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum4"&gt;   4:&lt;/span&gt; &lt;span&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum5"&gt;   5:&lt;/span&gt; &lt;span&gt;protected&lt;/span&gt; &lt;span&gt;override&lt;/span&gt; &lt;span&gt;void&lt;/span&gt; LoadContent()&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum6"&gt;   6:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum7"&gt;   7:&lt;/span&gt;     &lt;span&gt;// Create a new SpriteBatch, which can be used to draw textures.&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum8"&gt;   8:&lt;/span&gt;     spriteBatch = &lt;span&gt;new&lt;/span&gt; SpriteBatch(GraphicsDevice);&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum9"&gt;   9:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum10"&gt;  10:&lt;/span&gt;     &lt;span&gt;// TODO: use this.Content to load your game content here&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum11"&gt;  11:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;LoadContent tempatnya kita men-load berbagai content(grafik, musik, dll) kedalam game. Prosedur ini hanya akan dipanggil saat Game dijalankan pertama kali.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;h4&gt;UnloadContent&lt;/h4&gt;

&lt;div id="codeSnippetWrapper" style="border:1px solid silver;margin:20px 0px 10px;padding:4px;overflow:auto;font-size:8pt;width:97.5%;cursor:text;direction:ltr;max-height:200px;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
  &lt;div id="codeSnippet" style="border-style:none;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum1"&gt;   1:&lt;/span&gt; &lt;span&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum2"&gt;   2:&lt;/span&gt; &lt;span&gt;/// UnloadContent will be called once per game and is the place to unload&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum3"&gt;   3:&lt;/span&gt; &lt;span&gt;/// all content.&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum4"&gt;   4:&lt;/span&gt; &lt;span&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum5"&gt;   5:&lt;/span&gt; &lt;span&gt;protected&lt;/span&gt; &lt;span&gt;override&lt;/span&gt; &lt;span&gt;void&lt;/span&gt; UnloadContent()&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum6"&gt;   6:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum7"&gt;   7:&lt;/span&gt;     &lt;span&gt;// TODO: Unload any non ContentManager content here&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum8"&gt;   8:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Ada masukan, ada keluaran. UnloadContent adalah kebalikan LoadContent, dimana kita memasukkan kode untuk men-unload content yang seblumnya sudah kita masukkan. Disini tempat kita “bersih-bersih” sebelum, game selesai.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;h4&gt;Update&lt;/h4&gt;

&lt;div id="codeSnippetWrapper" style="border:1px solid silver;margin:20px 0px 10px;padding:4px;overflow:auto;font-size:8pt;width:97.5%;cursor:text;direction:ltr;max-height:200px;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
  &lt;div id="codeSnippet" style="border-style:none;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum1"&gt;   1:&lt;/span&gt; &lt;span&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum2"&gt;   2:&lt;/span&gt; &lt;span&gt;/// Allows the game to run logic such as updating the world,&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum3"&gt;   3:&lt;/span&gt; &lt;span&gt;/// checking for collisions, gathering input, and playing audio.&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum4"&gt;   4:&lt;/span&gt; &lt;span&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum5"&gt;   5:&lt;/span&gt; &lt;span&gt;/// &amp;lt;param name=&amp;quot;gameTime&amp;quot;&amp;gt;Provides a snapshot of timing values.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum6"&gt;   6:&lt;/span&gt; &lt;span&gt;protected&lt;/span&gt; &lt;span&gt;override&lt;/span&gt; &lt;span&gt;void&lt;/span&gt; Update(GameTime gameTime)&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum7"&gt;   7:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum8"&gt;   8:&lt;/span&gt;     &lt;span&gt;// Allows the game to exit&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum9"&gt;   9:&lt;/span&gt;     &lt;span&gt;if&lt;/span&gt; (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum10"&gt;  10:&lt;/span&gt;         &lt;span&gt;this&lt;/span&gt;.Exit();&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum11"&gt;  11:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum12"&gt;  12:&lt;/span&gt;     &lt;span&gt;// TODO: Add your update logic here&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum13"&gt;  13:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum14"&gt;  14:&lt;/span&gt;     &lt;span&gt;base&lt;/span&gt;.Update(gameTime);&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum15"&gt;  15:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Hampir semua game memiliki loop utama dimana setiap frame-nya informasi dan grafik game diupdate. Untuk XNA, loop tersebut adalah prosedur Update. Update akan dijalankan pada setiap frame game.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;h4&gt;Draw&lt;/h4&gt;

&lt;div id="codeSnippetWrapper" style="border:1px solid silver;margin:20px 0px 10px;padding:4px;overflow:auto;font-size:8pt;width:97.5%;cursor:text;direction:ltr;max-height:200px;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
  &lt;div id="codeSnippet" style="border-style:none;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;
    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum1"&gt;   1:&lt;/span&gt; &lt;span&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum2"&gt;   2:&lt;/span&gt; &lt;span&gt;/// This is called when the game should draw itself.&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum3"&gt;   3:&lt;/span&gt; &lt;span&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum4"&gt;   4:&lt;/span&gt; &lt;span&gt;/// &amp;lt;param name=&amp;quot;gameTime&amp;quot;&amp;gt;Provides a snapshot of timing values.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum5"&gt;   5:&lt;/span&gt; &lt;span&gt;protected&lt;/span&gt; &lt;span&gt;override&lt;/span&gt; &lt;span&gt;void&lt;/span&gt; Draw(GameTime gameTime)&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum6"&gt;   6:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum7"&gt;   7:&lt;/span&gt;     GraphicsDevice.Clear(Color.CornflowerBlue);&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum8"&gt;   8:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum9"&gt;   9:&lt;/span&gt;     &lt;span&gt;// TODO: Add your drawing code here&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;text-align:left;"&gt;&lt;span id="lnum10"&gt;  10:&lt;/span&gt;     &lt;span&gt;base&lt;/span&gt;.Draw(gameTime);&lt;/pre&gt;


    &lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;font-size:8pt;width:100%;color:black;direction:ltr;line-height:12pt;font-family:&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:white;text-align:left;"&gt;&lt;span id="lnum11"&gt;  11:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Prosedur ini tempat bekerja saat kita hendak menggambar sesuatu ke layar. Prosedur ini juga akan dijalankan untuk setiap frame dalam game. Perhatikan layar biru bila kita me-run game, di snippet diatas, kode yang melaksanakannya ada di baris ke 7.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Sori yah, post ini kebanyakan isinya cuman teori. Tenang, ini baru prelude.&lt;/p&gt;

&lt;p&gt;Untuk post selanjutnya, akan saya jelaskan bagaimana memasukkan gambar dan membuatnya bergerak. &lt;i&gt;stay tuned!&lt;/i&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/katulsomin/archive/2009/06/29/tutorial-xna-prelude.aspx&amp;amp;subject=Tutorial XNA : Prelude" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/katulsomin/archive/2009/06/29/tutorial-xna-prelude.aspx&amp;amp;t=Tutorial+XNA+%3a+Prelude" target="_blank" title="Submit Tutorial XNA : Prelude to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/katulsomin/archive/2009/06/29/tutorial-xna-prelude.aspx&amp;amp;title=Tutorial+XNA+%3a+Prelude" target="_blank" title="Submit Tutorial XNA : Prelude to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/katulsomin/archive/2009/06/29/tutorial-xna-prelude.aspx&amp;amp;phase=2" target="_blank" title="Submit Tutorial XNA : Prelude to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/katulsomin/archive/2009/06/29/tutorial-xna-prelude.aspx&amp;amp;title=Tutorial+XNA+%3a+Prelude" target="_blank" title="Add Tutorial XNA : Prelude to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=182065" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/katulsomin/archive/tags/tutorial/default.aspx">tutorial</category><category domain="http://geeks.netindonesia.net/blogs/katulsomin/archive/tags/MIC+ITB/default.aspx">MIC ITB</category><category domain="http://geeks.netindonesia.net/blogs/katulsomin/archive/tags/beginner/default.aspx">beginner</category><category domain="http://geeks.netindonesia.net/blogs/katulsomin/archive/tags/XNA/default.aspx">XNA</category></item><item><title>Proyek SilverLight Pertamaku: Game Memory Sederhana [Part 1]</title><link>http://geeks.netindonesia.net/blogs/katulsomin/archive/2009/06/18/mic-itb-tutorial-proyek-silverlight-pertamaku-game-memory-sederhana-part-1.aspx</link><pubDate>Thu, 18 Jun 2009 15:54:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:181778</guid><dc:creator>katulsomin</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/katulsomin/rsscomments.aspx?PostID=181778</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/katulsomin/archive/2009/06/18/mic-itb-tutorial-proyek-silverlight-pertamaku-game-memory-sederhana-part-1.aspx#comments</comments><description>&lt;p&gt;Baru kemarin, saya &lt;i&gt;blank&lt;/i&gt; total &lt;img src="http://geeks.netindonesia.net/emoticons/emotion-40.gif" alt="Hmm" /&gt; masalah SilverLight. Pengen belajar, dan untuk saya cara tercepat untuk mengerti adalah dengan mencoba.&lt;/p&gt;&lt;p&gt;Setelah membaca-baca beberapa tutorial dasar SilverLight, saya putuskan mau mencoba membuat sebuah game memory sederhana. Temanya salah satu karakter manga favorit saya, Crayon ShinChan..&lt;img src="http://geeks.netindonesia.net/emoticons/emotion-1.gif" alt="Smile" /&gt; &lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;img src="http://geeks.netindonesia.net/emoticons/emotion-30.gif" alt="Star" /&gt; Ronde 1 : Layout Grafik dulu..&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Layout dan grafik di silverlight menggunakan bahasa xaml, bahasa markup berbasis xml yang berfokus pada user interface. Cukup mudah dimengerti, saya cukup tahu tentang HTML dan XML, jadi konsep tidak ini begitu baru buat saya.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Dengan mengacu pada tutorial &lt;a href="http://weblogs.asp.net/scottgu/pages/silverlight-2-end-to-end-tutorial-building-a-digg-search-client.aspx"&gt;ini&lt;/a&gt; dan mengandalkan VS 2008, saya berniat untuk mengambil jalan &lt;i&gt;purist&lt;/i&gt;, hanya mengandalkan kode. Go!&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;~~~~&lt;img src="http://geeks.netindonesia.net/emoticons/emotion-42.gif" alt="Confused" /&gt; &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Membuat komponen tidak begitu sulit, tapi usaha menempatkan posisi dan pernak-pernik-nya bikin saya frustasi &lt;img src="http://geeks.netindonesia.net/emoticons/emotion-7.gif" alt="Tongue Tied" /&gt; memakai grid masih terasa kaku, tapi kalau memakai margin lebih repot lagi. Yah, saya memang tidak begitu berpengalaman membuat grafis dari code saja sih.. kalau membuat html saja selalu pakai Dreamweaver. Setelah 2 jam berkutat berusaha meluruskan component dan mengatur
posisinya agar pas, saya memilih mencoba memakai MS Expression Blend
&lt;img src="http://geeks.netindonesia.net/emoticons/emotion-10.gif" alt="Embarrassed" /&gt;&lt;/p&gt;&lt;p&gt;Memakai Blend ternyata jauh lebih mudah&lt;img src="http://geeks.netindonesia.net/emoticons/emotion-1.gif" alt="Smile" /&gt;. Sayang sekali WYSIWYG editor ini tidak menyatu dengan VS studio.&lt;/p&gt;&lt;p&gt;Oke, ini layout yang telah saya buat:&lt;/p&gt;&lt;p&gt;&lt;a href="http://geeks.netindonesia.net/blogs/katulsomin/layout.jpg"&gt;&lt;img src="http://geeks.netindonesia.net/blogs/katulsomin/layout.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;Walau &lt;i&gt;art sense&lt;/i&gt; saya kampungan, kurasa ini tidak terlalu buruk... Coding Time.&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;img src="http://geeks.netindonesia.net/emoticons/emotion-30.gif" alt="Star" /&gt; Ronde 2 : C#, I Choose You!&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Programming dalam Silverlight dapat menggunakan bahasa pemrograman .NET apa saja, tapi setelah menimbang-nimbang, saya memilih menggunakan C#. &lt;/p&gt;&lt;p&gt;Alasan?&lt;/p&gt;&lt;p&gt;1. Saya tidak pernah memakainya dan pengen belajar C# &lt;/p&gt;&lt;p&gt;2. Karena kebanyakan tutorial dan orang lain pake C#, biar lebih konek.&lt;/p&gt;&lt;p&gt;Saya belum tahu caranya menampilkan code diblog ini biar enak dibaca.. tapi seluruh source codenya bisa didownload disini : &lt;a href="http://geeks.netindonesia.net/blogs/katulsomin/sincan.zip"&gt;sincan.zip&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Pengalaman ngoding-nya:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Pertama-tama saya mau membuat collection untuk gambar-gambar yang akan diload dulu. &lt;i&gt;Shock&lt;/i&gt;! di C# tidak disediakan kelas generik Vector!&amp;nbsp; Aagh&lt;img src="http://geeks.netindonesia.net/emoticons/emotion-39.gif" alt="Super Angry" /&gt;, padahal Vector selalu menjadi kelas collection andalan saya di Java dan C++.. &lt;i&gt;Oh well&lt;/i&gt;, untungnya kelas list di C# tidak begitu jauh beda.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Lalu, saya mencari dulu algoritma yang cocok untuk &amp;quot;mengocok&amp;quot; gambarnya. Setelah konsultasi pada Syekh Google Al-Wikipedia, ketemu algoritma Fisher-yates Shuffle. Contoh di Wikipedia dalam Java, tapi mengubahnya ke C# hanya beberapa menit. Saya rasa coding di C# tidak jauh beda dengan Java. &lt;img src="http://geeks.netindonesia.net/emoticons/emotion-1.gif" alt="Smile" /&gt;&lt;/li&gt;&lt;li&gt;Membuat fungsi untuk loading image,menangani klik dari mouse, dll. Tidak bertemu masalah disini..&lt;/li&gt;&lt;li&gt;Tapi saat di test, enggak jalan. Ugh. Setelah ditelusuri, masalahnya ternyata pada saat membandingkan 2 gambar. Di library C# ternyata tidak mempunyai fungsi untuk membandingkan 2 gambar, sama atau tidak. 1 jam saya stuck disini. Saya sudah coba fungsi standar equals(), getHashCode(), getValue(), Source.. semuanya gagal. Sebetulnya masalah ini dapat dihindari hanya dengan membuat kelas turunan baru dari Image dengan informasi tambahan, tapi berarti banyak yang perlu diedit ulang.&lt;/li&gt;&lt;li&gt;Akhirnya saya membuat fungsi sendiri untuk membandingkan 2 Image berdasarkan hubungannya dengan List dari gambar. Alternatif lain yang lebih universal adalah mengecek per pixel, tapi kayaknya malah bakal ngelambatin untuk program ini.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Game Selesai!&amp;nbsp; ... atau paling tidak, versi betanya, sih.. sampai disini dulu part 1. &lt;img src="http://geeks.netindonesia.net/emoticons/emotion-1.gif" alt="Smile" /&gt;&lt;/p&gt;&lt;p&gt;di Part 2, Insya Allah game ini akan saya tambahkan animasi, suara, timer, scoring system, tampilan &amp;quot;You Win!&amp;quot; yang bagusan, dll.&amp;nbsp; &lt;img src="http://geeks.netindonesia.net/emoticons/emotion-11.gif" alt="Cool" /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;Gambar Crayon ShinChan saya dapat dari sini: http://abnormalchild.deviantart.com/art/kureyon-shin-chan-122920030 &lt;br /&gt;&lt;/p&gt;&lt;p&gt;Download Source Code-nya : &lt;a href="http://geeks.netindonesia.net/blogs/katulsomin/sincan.zip"&gt;sincan.zip&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Diharapkan saran dan kritiknya.. &lt;br /&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/katulsomin/archive/2009/06/18/mic-itb-tutorial-proyek-silverlight-pertamaku-game-memory-sederhana-part-1.aspx&amp;amp;subject=Proyek SilverLight Pertamaku: Game Memory Sederhana [Part 1]" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/katulsomin/archive/2009/06/18/mic-itb-tutorial-proyek-silverlight-pertamaku-game-memory-sederhana-part-1.aspx&amp;amp;t=Proyek+SilverLight+Pertamaku%3a+Game+Memory+Sederhana+%5bPart+1%5d" target="_blank" title="Submit Proyek SilverLight Pertamaku: Game Memory Sederhana [Part 1] to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/katulsomin/archive/2009/06/18/mic-itb-tutorial-proyek-silverlight-pertamaku-game-memory-sederhana-part-1.aspx&amp;amp;title=Proyek+SilverLight+Pertamaku%3a+Game+Memory+Sederhana+%5bPart+1%5d" target="_blank" title="Submit Proyek SilverLight Pertamaku: Game Memory Sederhana [Part 1] to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/katulsomin/archive/2009/06/18/mic-itb-tutorial-proyek-silverlight-pertamaku-game-memory-sederhana-part-1.aspx&amp;amp;phase=2" target="_blank" title="Submit Proyek SilverLight Pertamaku: Game Memory Sederhana [Part 1] to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/katulsomin/archive/2009/06/18/mic-itb-tutorial-proyek-silverlight-pertamaku-game-memory-sederhana-part-1.aspx&amp;amp;title=Proyek+SilverLight+Pertamaku%3a+Game+Memory+Sederhana+%5bPart+1%5d" target="_blank" title="Add Proyek SilverLight Pertamaku: Game Memory Sederhana [Part 1] to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=181778" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/katulsomin/archive/tags/tutorial/default.aspx">tutorial</category><category domain="http://geeks.netindonesia.net/blogs/katulsomin/archive/tags/MIC+ITB/default.aspx">MIC ITB</category><category domain="http://geeks.netindonesia.net/blogs/katulsomin/archive/tags/beginner/default.aspx">beginner</category><category domain="http://geeks.netindonesia.net/blogs/katulsomin/archive/tags/silverlight/default.aspx">silverlight</category><category domain="http://geeks.netindonesia.net/blogs/katulsomin/archive/tags/game/default.aspx">game</category></item></channel></rss>