<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Dwarfsoft [GPA] &#187; C#</title>
	<atom:link href="http://www.dwarfsoft.com/blog/tag/c/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dwarfsoft.com/blog</link>
	<description>Great Programming Artistry</description>
	<lastBuildDate>Tue, 06 Sep 2011 11:18:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Back Behind the Keyboard</title>
		<link>http://www.dwarfsoft.com/blog/2009/07/20/back-behind-the-keyboard/</link>
		<comments>http://www.dwarfsoft.com/blog/2009/07/20/back-behind-the-keyboard/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 04:31:21 +0000</pubDate>
		<dc:creator>dwarfsoft</dc:creator>
				<category><![CDATA[Home]]></category>
		<category><![CDATA[Scripting]]></category>
		<category><![CDATA[Study]]></category>
		<category><![CDATA[Uni]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[Application]]></category>
		<category><![CDATA[Book]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Certification]]></category>
		<category><![CDATA[Daugher]]></category>
		<category><![CDATA[Exam]]></category>
		<category><![CDATA[Graduation]]></category>
		<category><![CDATA[GTD]]></category>
		<category><![CDATA[Novell]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[PyTA]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[TED]]></category>
		<category><![CDATA[VBScript]]></category>
		<category><![CDATA[XNA]]></category>

		<guid isPermaLink="false">http://www.dwarfsoft.com/blog/?p=252</guid>
		<description><![CDATA[It has again been some time since my last update. I have been quite busy getting used to balancing my new life with my daughter now nearly 3 months old. Fatherhood has obviously taken a lot of my time that I previously used for development, and learning. The past few months have also seen my [...]]]></description>
			<content:encoded><![CDATA[<p>It has again been some time since my last update. I have been quite busy getting used to balancing my new life with my daughter now nearly 3 months old. Fatherhood has obviously taken a lot of my time that I previously used for development, and learning.</p>
<p>The past few months have also seen my University Graduation 3 days after my Daughters Birth, Family Visits, Job Applications, Job Interviews, and finally Permanency in my Servers Position.</p>
<p>Aside from that I have been working with some friends on converting the old TA Server to the C# .Net/Python version (PyTA). I have also been busy in mapping out my development goals and objectives for the coming months and years.</p>
<p><span id="more-252"></span></p>
<div class="wp-caption alignright" style="width: 84px"><a href="http://www.amazon.com/dp/0142000280?tag=dwgp-20&amp;camp=213381&amp;creative=390973&amp;linkCode=as4&amp;creativeASIN=0142000280&amp;adid=0VNZXPFS9EAVTH6R7JM5&amp;"><img title="David Allens Getting Things Done" src="http://rcm-images.amazon.com/images/I/4104N6ME70L._SL110_.jpg" alt="David Allens Getting Things Done" width="74" height="110" /></a><p class="wp-caption-text">David Allens Getting Things Done</p></div>
<p>In order to better manage my time and my priorities I have been implementing and reviewing <a href="http://www.davidco.com/">David Allen&#8217;s</a> &#8220;Getting Things Done&#8221;, and have been operating my own install of GTD-PHP. I have been using this to manage all aspects of my life, from professional to personal projects. This has allowed me a lot greater control of my personal and professional life and allowed me to manage my time far more effectively than ever before. Currently in this system I am managing 100 Active Projects, 44 Someday/Maybe Projects, and within those I have currently 147 Actions within those. I am still in the process of determining Next actions for some of these projects, but at least having visibility of all these things I need to do has given me greater control of managing the most important of these. Most of the projects without next actions are someday/maybe projects, and the others that are not could be put in someday/maybe until such time as I have time to process their next actions. I definitely encourage anybody to try this method of organisation, time management, prioritisation because it has helped me to lower my stress and be able to switch off from work when I get home. Just note that it does tend to increase the likelihood of adding more projects to your list than you started out doing <img src='http://www.dwarfsoft.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<p>Aside from this I have been attempting to build an Application Audit script at work that will pull the NAL objects from our system through LDAP. I have started coding this type of script now as a class which is in a .vbs file and then for implementing its use I have started using .wsf files to include and execute the required code. This adds to the usability of my existing code and makes my code far more acccessible for reuse in other applications. I had already started writing these types of classes before for my Ini File Handler, but previously I had been including the VBScript files internally using a manual Include function:</p>

<div class="wp_syntax"><div class="code"><pre class="vbnet" style="font-family:monospace;"><span style="color: #0600FF;">Function</span> Include<span style="color: #000000;">&#40;</span>vbsFile<span style="color: #000000;">&#41;</span>
   <span style="color: #FF8000;">Set</span> fso <span style="color: #008000;">=</span> <span style="color: #0600FF;">CreateObject</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;Scripting.FileSystemObject&quot;</span><span style="color: #000000;">&#41;</span>
   <span style="color: #0600FF;">If</span> fso.<span style="color: #0000FF;">FileExists</span><span style="color: #000000;">&#40;</span>vbsFile<span style="color: #000000;">&#41;</span> <span style="color: #FF8000;">Then</span>
      <span style="color: #FF8000;">Set</span> f <span style="color: #008000;">=</span> fso.<span style="color: #0000FF;">OpenTextFile</span><span style="color: #000000;">&#40;</span>vbsFile<span style="color: #000000;">&#41;</span>
      s <span style="color: #008000;">=</span> f.<span style="color: #0000FF;">ReadAll</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
      f.<span style="color: #0600FF;">Close</span>
      ExecuteGlobal s
   <span style="color: #0600FF;">End</span> <span style="color: #0600FF;">If</span>
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Function</span></pre></div></div>

<p>The .wsf include method is so much cleaner:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;script</span> <span style="color: #000066;">language</span>=<span style="color: #ff0000;">&quot;VBScript&quot;</span> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">&quot;Applications.vbs&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span></pre></div></div>

<p>When I have managed to get my projects and actions further under control I will have to provide updates. I have some plans for the XNA in a Day series which I started with breakout, but that is some way off. I am also planning on overhauling some of my previous projects and actually actioning them. </p>
<p>Cheers, Chris.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dwarfsoft.com/blog/2009/07/20/back-behind-the-keyboard/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XNA on the Second Day</title>
		<link>http://www.dwarfsoft.com/blog/2009/03/05/xna-on-the-second-day/</link>
		<comments>http://www.dwarfsoft.com/blog/2009/03/05/xna-on-the-second-day/#comments</comments>
		<pubDate>Wed, 04 Mar 2009 15:06:53 +0000</pubDate>
		<dc:creator>dwarfsoft</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[XNA]]></category>
		<category><![CDATA[Breakout]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Game]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.dwarfsoft.com/blog/?p=208</guid>
		<description><![CDATA[So I started attempting to write a game within a Day and blogged about it in &#8220;XNA in a Day&#8230; Almost&#8220;. Firstly I feel the need to explain some of the decisions that were made: I really didn&#8217;t have any preparation time, no prior experience with the Framework or the Language. I came in hacking [...]]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_217" class="wp-caption alignright" style="width: 160px"><a href="http://www.dwarfsoft.com/blog/2009/03/05/xna-on-the-second-day/xna-second-day/" rel="attachment wp-att-217"><img src="http://www.dwarfsoft.com/blog/wp-content/uploads/2009/03/xna-second-day-150x150.png" alt="Breakout after XNA on the Second Day" title="xna-second-day-breakout" width="150" height="150" class="size-thumbnail wp-image-217" /></a><p class="wp-caption-text">Breakout after XNA on the Second Day</p></div>So I started attempting to write a game within a Day and blogged about it in &#8220;<a href="http://www.dwarfsoft.com/blog/2009/03/03/xna-in-a-day/">XNA in a Day&#8230; Almost</a>&#8220;. Firstly I feel the need to explain some of the decisions that were made: I really didn&#8217;t have any preparation time, no prior experience with the Framework or the Language. I came in hacking things together instead of planning what I was going to do. I tried not to refactor code too much once it was in place.</p>
<p>The reason for this was that no matter how bad the game ended up, it would do mostly what it was told, and in the process I would have completed the project and have gained some valuable insight into both my own programming methodology, and into the XNA framework from start to finish. </p>
<p><span id="more-208"></span></p>
<p>I have decided not to paste all the code into this page, as it got quite hacky, even moreso than last time. I haven&#8217;t included the code also due to the fact that it can be considered a way NOT to make a game. There are things in the game that really should have been designed in order to work effectively. Anyway, to run the game you will need <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=6521D889-5414-49B8-AB32-E3FFF05A4C50&#038;displaylang=en">XNA 3.0</a> and the <a href="http://www.microsoft.com/downloads/details.aspx?familyid=AB99342F-5D1A-413D-8319-81DA479AB0D7&#038;displaylang=en">.NET Framework</a>.</p>
<p><a href='http://www.dwarfsoft.com/blog/2009/03/05/xna-on-the-second-day/forays-in-xna-breakout/' rel='attachment wp-att-209'>Breakout Game Binary</a><br />
<a href='http://www.dwarfsoft.com/blog/2009/03/05/xna-on-the-second-day/forays-in-xna-breakout-project/' rel='attachment wp-att-210'>Breakout game Project Files</a></p>
<p>Also: I do understand that the game is not exactly polished. There is no backing music, there is only the sound effect for collisions, and the Vector of the ball from restart is not increased. There is, however, some level progression. For each &#8220;level&#8221; increased, the Maximum Vector of the Ball and Paddle increases by 1 in X and Y (obviously the paddle doesn&#8217;t increase in Y though <img src='http://www.dwarfsoft.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ).</p>
<p><strong>Things I Learned</strong>, which I posted over at <a href="http://xnaexperience.wordpress.com/2009/03/03/a-xna-experience-article/">A XNA Experience</a></p>
<ol>
<li>A SpriteManager class would be very useful (instead of relying on the Collision class)</li>
<li>The Different Sprites should have their own Class Inherited from Sprite, so that Movement is not so Hacked</li>
<li>Collisions should Callback to the Game class so that appropriate scoring need not be Hacked.</li>
<li>Offscreening all the Block Sprites in one location really does make the Collision Detection System Work…. badly (as none of the Blocks ever move because of their collision, its a waste of resources) <img src='http://www.dwarfsoft.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li>Collisions should only be checked on the Moving object, not all objects, so as to save some of those precious cycles.</li>
<li>For some reason when the ball and paddle head toward each other and collide on a diagonal, the ball gets stuck. I still haven&#8217;t figured this out, but it should be fixed by having a Class for the Paddle and a Class for the Ball with their own unique Move()/Collision detection functions.</li>
</ol>
<p>At some point in the future I would like to attempt to remake the game, with the above elements taken on board, and see how long it takes to finish a polished game from that basis point. Effectively this game is like a prototype so that important design decisions can be extracted for the real thing.</p>
<p>I will consider what my next project will be and what time frame I expect to be able to complete it in.</p>
<p>Cheers, Chris.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dwarfsoft.com/blog/2009/03/05/xna-on-the-second-day/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>XNA in a Day&#8230; Almost</title>
		<link>http://www.dwarfsoft.com/blog/2009/03/03/xna-in-a-day/</link>
		<comments>http://www.dwarfsoft.com/blog/2009/03/03/xna-in-a-day/#comments</comments>
		<pubDate>Tue, 03 Mar 2009 05:34:20 +0000</pubDate>
		<dc:creator>dwarfsoft</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[XNA]]></category>
		<category><![CDATA[Breakout]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Game]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.dwarfsoft.com/blog/?p=194</guid>
		<description><![CDATA[So, after starting my look into XNA under the guise of &#8220;Forays in XNA&#8221;, I was able to determine that the core code for developing a Breakout clone was achievable within a day. Considering that I work full time, and currently my wife is heavily pregnant, the fact that I can achieve this within a [...]]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_202" class="wp-caption alignright" style="width: 160px"><img src="http://www.dwarfsoft.com/blog/wp-content/uploads/2009/03/breakout-1-150x150.png" alt="A screenshot of Breakout during development" title="breakout-1" width="150" height="150" class="size-thumbnail wp-image-202" /><p class="wp-caption-text">A screenshot of Breakout during development</p></div>So, after starting my look into XNA under the guise of &#8220;Forays in XNA&#8221;, I was able to determine that the core code for developing a Breakout clone was achievable within a day. Considering that I work full time, and currently my wife is heavily pregnant, the fact that I can achieve this within a day should motivate the rest of you to do the same, or at least work harder <img src='http://www.dwarfsoft.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<div id="attachment_191" class="wp-caption alignright" style="width: 110px"><img class="size-full wp-image-191" title="whiteblock" src="http://www.dwarfsoft.com/blog/wp-content/uploads/2009/03/whiteblock.png" alt="My fantastically crafted White Block" width="50" height="20" /><p class="wp-caption-text">My fantastically crafted White Block</p></div>
<p>So, the first thing I did was I went out and created my images. I used the template from the previous image, which was created by creating some shapes in MS Paint, and then making the background transparent and saving as a PNG using <a href="http://www.gimp.org/">The GIMP</a>.</p>
<div id="attachment_195" class="wp-caption alignleft" style="width: 110px"><img class="size-full wp-image-195" title="whiteball" src="http://www.dwarfsoft.com/blog/wp-content/uploads/2009/03/whiteball.png" alt="My fantastically crafted White Ball image" width="20" height="18" /><p class="wp-caption-text">My fantastically crafted White Ball image</p></div>
<div id="attachment_196" class="wp-caption alignright" style="width: 110px"><img class="size-full wp-image-196" title="whitepaddle" src="http://www.dwarfsoft.com/blog/wp-content/uploads/2009/03/whitepaddle.png" alt="My fantastically crafted White Paddle image" width="100" height="20" /><p class="wp-caption-text">My fantastically crafted White Paddle image</p></div>
<p>I have also created a blank project as before and from the main project Window in C# I create a couple of classes. The first class is called Sprite.cs, the second is Wall.cs, and the third is Collision.cs. The biggest issue I had out of the creation of my Breakout game was the Collision detection. I used some primitive collision detection algorithms that just failed to rebound the ball correctly when it hit the side of an object, and as I am also using blocks with transparencies (and the ball has transparencies as well) the collision detection needs to account for that also.</p>
<p><span id="more-194"></span></p>
<p>So firstly, the smallest class is the Collision detection class. I copied most of it from <a href="http://www.ziggyware.com/readarticle.php?article_id=48">ZiggyWare</a>. It did require a slight bit of modification to work for me in XNA Game Studio 3.0, and I have modified my own Sprite Class to at least cater for what the Collision Detection class is looking for.</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">Microsoft.Xna.Framework</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">Forays_in_XNA</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.Collections</span><span style="color: #008000;">;</span>
&nbsp;
<span style="color: #0600FF; font-weight: bold;">namespace</span> Forays_in_XNA
<span style="color: #008000;">&#123;</span>
    <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">class</span> Collision
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #0600FF; font-weight: bold;">static</span> <span style="color: #6666cc; font-weight: bold;">bool</span> Intersects<span style="color: #008000;">&#40;</span>Rectangle a, Rectangle b<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #008080; font-style: italic;">// check if two Rectangles intersect</span>
            <span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #008000;">&#40;</span>a<span style="color: #008000;">.</span><span style="color: #0000FF;">Right</span> <span style="color: #008000;">&gt;</span> b<span style="color: #008000;">.</span><span style="color: #0000FF;">Left</span> <span style="color: #008000;">&amp;&amp;</span> a<span style="color: #008000;">.</span><span style="color: #0000FF;">Left</span> <span style="color: #008000;">&lt;</span> b<span style="color: #008000;">.</span><span style="color: #0000FF;">Right</span> <span style="color: #008000;">&amp;&amp;</span>
                    a<span style="color: #008000;">.</span><span style="color: #0000FF;">Bottom</span> <span style="color: #008000;">&gt;</span> b<span style="color: #008000;">.</span><span style="color: #0000FF;">Top</span> <span style="color: #008000;">&amp;&amp;</span> a<span style="color: #008000;">.</span><span style="color: #0000FF;">Top</span> <span style="color: #008000;">&lt;</span> b<span style="color: #008000;">.</span><span style="color: #0000FF;">Bottom</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #0600FF; font-weight: bold;">static</span> <span style="color: #6666cc; font-weight: bold;">bool</span> Intersects<span style="color: #008000;">&#40;</span>Sprite a, Sprite b<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>Collision<span style="color: #008000;">.</span><span style="color: #0000FF;">Intersects</span><span style="color: #008000;">&#40;</span>a<span style="color: #008000;">.</span><span style="color: #0000FF;">bounds</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>, b<span style="color: #008000;">.</span><span style="color: #0000FF;">bounds</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                <span style="color: #6666cc; font-weight: bold;">uint</span><span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span> bitsA <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> <span style="color: #6666cc; font-weight: bold;">uint</span><span style="color: #008000;">&#91;</span>a<span style="color: #008000;">.</span><span style="color: #0000FF;">Width</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">*</span> a<span style="color: #008000;">.</span><span style="color: #0000FF;">Height</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">;</span>
                a<span style="color: #008000;">.</span><span style="color: #0000FF;">texture</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">GetData</span><span style="color: #008000;">&#40;</span>bitsA<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
                <span style="color: #6666cc; font-weight: bold;">uint</span><span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span> bitsB <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> <span style="color: #6666cc; font-weight: bold;">uint</span><span style="color: #008000;">&#91;</span>b<span style="color: #008000;">.</span><span style="color: #0000FF;">Width</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">*</span> b<span style="color: #008000;">.</span><span style="color: #0000FF;">Height</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">;</span>
                b<span style="color: #008000;">.</span><span style="color: #0000FF;">texture</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">GetData</span><span style="color: #008000;">&#40;</span>bitsB<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
                <span style="color: #6666cc; font-weight: bold;">int</span> x1 <span style="color: #008000;">=</span> Math<span style="color: #008000;">.</span><span style="color: #0000FF;">Max</span><span style="color: #008000;">&#40;</span>a<span style="color: #008000;">.</span><span style="color: #0000FF;">bounds</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">X</span>, b<span style="color: #008000;">.</span><span style="color: #0000FF;">bounds</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">X</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                <span style="color: #6666cc; font-weight: bold;">int</span> x2 <span style="color: #008000;">=</span> Math<span style="color: #008000;">.</span><span style="color: #0000FF;">Min</span><span style="color: #008000;">&#40;</span>a<span style="color: #008000;">.</span><span style="color: #0000FF;">bounds</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">X</span> <span style="color: #008000;">+</span> a<span style="color: #008000;">.</span><span style="color: #0000FF;">bounds</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Width</span>, b<span style="color: #008000;">.</span><span style="color: #0000FF;">bounds</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">X</span> <span style="color: #008000;">+</span> b<span style="color: #008000;">.</span><span style="color: #0000FF;">bounds</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Width</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
                <span style="color: #6666cc; font-weight: bold;">int</span> y1 <span style="color: #008000;">=</span> Math<span style="color: #008000;">.</span><span style="color: #0000FF;">Max</span><span style="color: #008000;">&#40;</span>a<span style="color: #008000;">.</span><span style="color: #0000FF;">bounds</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span>, b<span style="color: #008000;">.</span><span style="color: #0000FF;">bounds</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                <span style="color: #6666cc; font-weight: bold;">int</span> y2 <span style="color: #008000;">=</span> Math<span style="color: #008000;">.</span><span style="color: #0000FF;">Min</span><span style="color: #008000;">&#40;</span>a<span style="color: #008000;">.</span><span style="color: #0000FF;">bounds</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span> <span style="color: #008000;">+</span> a<span style="color: #008000;">.</span><span style="color: #0000FF;">bounds</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Height</span>, b<span style="color: #008000;">.</span><span style="color: #0000FF;">bounds</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span> <span style="color: #008000;">+</span> b<span style="color: #008000;">.</span><span style="color: #0000FF;">bounds</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Height</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
                <span style="color: #0600FF; font-weight: bold;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">int</span> y <span style="color: #008000;">=</span> y1<span style="color: #008000;">;</span> y <span style="color: #008000;">&lt;</span> y2<span style="color: #008000;">;</span> <span style="color: #008000;">++</span>y<span style="color: #008000;">&#41;</span>
                <span style="color: #008000;">&#123;</span>
                    <span style="color: #0600FF; font-weight: bold;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">int</span> x <span style="color: #008000;">=</span> x1<span style="color: #008000;">;</span> x <span style="color: #008000;">&lt;</span> x2<span style="color: #008000;">;</span> <span style="color: #008000;">++</span>x<span style="color: #008000;">&#41;</span>
                    <span style="color: #008000;">&#123;</span>
                        <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>bitsA<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#40;</span>x <span style="color: #008000;">-</span> a<span style="color: #008000;">.</span><span style="color: #0000FF;">bounds</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">X</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">+</span>
                                    <span style="color: #008000;">&#40;</span>y <span style="color: #008000;">-</span> a<span style="color: #008000;">.</span><span style="color: #0000FF;">bounds</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">*</span> a<span style="color: #008000;">.</span><span style="color: #0000FF;">texture</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Width</span><span style="color: #008000;">&#93;</span> <span style="color: #008000;">&amp;</span>
                                    0xFF000000<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&gt;&gt;</span> <span style="color: #FF0000;">24</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&gt;</span> <span style="color: #FF0000;">20</span> <span style="color: #008000;">&amp;&amp;</span>
                            <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>bitsB<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#40;</span>x <span style="color: #008000;">-</span> b<span style="color: #008000;">.</span><span style="color: #0000FF;">bounds</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">X</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">+</span> b<span style="color: #008000;">.</span><span style="color: #0000FF;">texture</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Width</span><span style="color: #008000;">&#93;</span> <span style="color: #008000;">&amp;</span>
                                    0xFF000000<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&gt;&gt;</span> <span style="color: #FF0000;">24</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&gt;</span> <span style="color: #FF0000;">20</span><span style="color: #008000;">&#41;</span>
                        <span style="color: #008000;">&#123;</span>
                            <span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #0600FF; font-weight: bold;">true</span><span style="color: #008000;">;</span>
                        <span style="color: #008000;">&#125;</span>
                    <span style="color: #008000;">&#125;</span>
                <span style="color: #008000;">&#125;</span>
&nbsp;
            <span style="color: #008000;">&#125;</span>
            <span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #0600FF; font-weight: bold;">false</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #0600FF; font-weight: bold;">private</span> ArrayList SpriteArray <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> ArrayList<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
        <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">void</span> Register<span style="color: #008000;">&#40;</span>Sprite sprite<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            SpriteArray<span style="color: #008000;">.</span><span style="color: #0000FF;">Add</span><span style="color: #008000;">&#40;</span>sprite<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            sprite<span style="color: #008000;">.</span><span style="color: #0000FF;">collision</span> <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #0600FF; font-weight: bold;">public</span> Sprite IsCollision<span style="color: #008000;">&#40;</span>Sprite sprite<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0600FF; font-weight: bold;">foreach</span> <span style="color: #008000;">&#40;</span>Sprite block <span style="color: #0600FF; font-weight: bold;">in</span> SpriteArray<span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                <span style="color: #008080; font-style: italic;">// don't check for collision between the same object</span>
                <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">!</span>block<span style="color: #008000;">.</span><span style="color: #0000FF;">Equals</span><span style="color: #008000;">&#40;</span>sprite<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&amp;&amp;</span> block<span style="color: #008000;">.</span><span style="color: #0000FF;">mVisible</span><span style="color: #008000;">&#41;</span>
                <span style="color: #008000;">&#123;</span>
                    <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>Collision<span style="color: #008000;">.</span><span style="color: #0000FF;">Intersects</span><span style="color: #008000;">&#40;</span>sprite, block<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
                    <span style="color: #008000;">&#123;</span>
                        <span style="color: #008080; font-style: italic;">//mCollisionWith = block;</span>
                        <span style="color: #0600FF; font-weight: bold;">return</span> block<span style="color: #008000;">;</span>
                    <span style="color: #008000;">&#125;</span>
                <span style="color: #008000;">&#125;</span>
            <span style="color: #008000;">&#125;</span>
            <span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">void</span> Move<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0600FF; font-weight: bold;">foreach</span> <span style="color: #008000;">&#40;</span>Sprite sprite <span style="color: #0600FF; font-weight: bold;">in</span> SpriteArray<span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                sprite<span style="color: #008000;">.</span><span style="color: #0000FF;">Move</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span></pre></div></div>

<p>As you can see, I have extended the standard Collision Class to also act as a Sprite Handler. This was purely done on a laziness front, and I can push that out into a class on its own if I had a need to. The Collision class would otherwise be a class of static functions which would never need to be instantiated.</p>
<p><!--more--></p>
<p>Considering that the Collision Class requires the use of the Sprite Class, the next thing we will look at is the Sprite Class</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.Collections.Generic</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.Linq</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.Text</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">Microsoft.Xna.Framework</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">Microsoft.Xna.Framework.Graphics</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">Microsoft.Xna.Framework.Content</span><span style="color: #008000;">;</span>
&nbsp;
<span style="color: #0600FF; font-weight: bold;">namespace</span> Forays_in_XNA
<span style="color: #008000;">&#123;</span>
    <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">class</span> Sprite
    <span style="color: #008000;">&#123;</span>
        <span style="color: #008080; font-style: italic;">//The current position of the Sprite</span>
        <span style="color: #0600FF; font-weight: bold;">public</span> Vector2 Position <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Vector2<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">0</span>, <span style="color: #FF0000;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #0600FF; font-weight: bold;">public</span> Vector2 Vector <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Vector2<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">0</span>, <span style="color: #FF0000;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #0600FF; font-weight: bold;">public</span> Rectangle Bounds <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Rectangle<span style="color: #008000;">&#40;</span><span style="color: #008000;">-</span><span style="color: #FF0000;">1</span>,<span style="color: #008000;">-</span><span style="color: #FF0000;">1</span>,<span style="color: #008000;">-</span><span style="color: #FF0000;">1</span>,<span style="color: #008000;">-</span><span style="color: #FF0000;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
        <span style="color: #008080; font-style: italic;">//The texture object used when drawing the sprite</span>
        <span style="color: #0600FF; font-weight: bold;">private</span> Texture2D mSpriteTexture<span style="color: #008000;">;</span>
&nbsp;
        <span style="color: #008080; font-style: italic;">//What this object collided into in the Move() function</span>
        <span style="color: #0600FF; font-weight: bold;">private</span> Sprite mCollidedWith <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">;</span>
&nbsp;
        <span style="color: #008080; font-style: italic;">//Whether this sprite is visible or not (at least, to the collision detecion system)</span>
        <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">bool</span> mVisible <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">true</span><span style="color: #008000;">;</span>
&nbsp;
        <span style="color: #008080; font-style: italic;">//The texture colour</span>
        <span style="color: #0600FF; font-weight: bold;">private</span> Color mColor<span style="color: #008000;">;</span>
&nbsp;
        <span style="color: #008080; font-style: italic;">//The Collision Detection System that this Sprite is Registered With</span>
        <span style="color: #0600FF; font-weight: bold;">public</span> Collision collision<span style="color: #008000;">;</span>
&nbsp;
        <span style="color: #008080; font-style: italic;">//Load the texture for the sprite using the Content Pipeline</span>
        <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">void</span> LoadContent<span style="color: #008000;">&#40;</span>ContentManager theContentManager, <span style="color: #6666cc; font-weight: bold;">string</span> theAssetName<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            mSpriteTexture <span style="color: #008000;">=</span> theContentManager<span style="color: #008000;">.</span><span style="color: #0000FF;">Load</span><span style="color: #008000;">&#40;</span>theAssetName<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            mColor <span style="color: #008000;">=</span> Color<span style="color: #008000;">.</span><span style="color: #0000FF;">White</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #008080; font-style: italic;">//Load the texture for the sprite using the Content Pipeline</span>
        <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">void</span> LoadContent<span style="color: #008000;">&#40;</span>ContentManager theContentManager, <span style="color: #6666cc; font-weight: bold;">string</span> theAssetName, Color colour<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            mSpriteTexture <span style="color: #008000;">=</span> theContentManager<span style="color: #008000;">.</span><span style="color: #0000FF;">Load</span><span style="color: #008000;">&#40;</span>theAssetName<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            mColor <span style="color: #008000;">=</span> colour<span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #008080; font-style: italic;">//Draw the sprite to the screen</span>
        <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">void</span> Draw<span style="color: #008000;">&#40;</span>SpriteBatch theSpriteBatch<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            theSpriteBatch<span style="color: #008000;">.</span><span style="color: #0000FF;">Draw</span><span style="color: #008000;">&#40;</span>mSpriteTexture, Position, mColor<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #008080; font-style: italic;">// Cater for returning the texture directly from the Sprite Class</span>
        <span style="color: #0600FF; font-weight: bold;">public</span> Texture2D texture<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0600FF; font-weight: bold;">return</span> mSpriteTexture<span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #008080; font-style: italic;">// Cater for returning the texture Width directly from the Sprite Class</span>
        <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">int</span> Width<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0600FF; font-weight: bold;">return</span> mSpriteTexture<span style="color: #008000;">.</span><span style="color: #0000FF;">Width</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #008080; font-style: italic;">// Cater for returning the texture Height directly from the Sprite Class</span>
        <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">int</span> Height<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0600FF; font-weight: bold;">return</span> mSpriteTexture<span style="color: #008000;">.</span><span style="color: #0000FF;">Height</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #008080; font-style: italic;">//Return the Bounding Box of the sprite.</span>
        <span style="color: #0600FF; font-weight: bold;">public</span> Rectangle bounds<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #008000;">new</span> Rectangle<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">int</span><span style="color: #008000;">&#41;</span>Position<span style="color: #008000;">.</span><span style="color: #0000FF;">X</span>, <span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">int</span><span style="color: #008000;">&#41;</span>Position<span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span>, mSpriteTexture<span style="color: #008000;">.</span><span style="color: #0000FF;">Width</span>, mSpriteTexture<span style="color: #008000;">.</span><span style="color: #0000FF;">Height</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #008080; font-style: italic;">//Returns the color that has been masked onto this sprite</span>
        <span style="color: #0600FF; font-weight: bold;">public</span> Color Colour<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0600FF; font-weight: bold;">return</span> mColor<span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #0600FF; font-weight: bold;">public</span> Sprite IsCollision<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>collision <span style="color: #008000;">!=</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                mCollidedWith <span style="color: #008000;">=</span> collision<span style="color: #008000;">.</span><span style="color: #0000FF;">IsCollision</span><span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>mCollidedWith <span style="color: #008000;">!=</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">&#41;</span>
                    mCollidedWith<span style="color: #008000;">.</span><span style="color: #0000FF;">Vector</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span> <span style="color: #008000;">=</span> <span style="color: #FF0000;">2</span><span style="color: #008000;">;</span>
                <span style="color: #0600FF; font-weight: bold;">return</span> mCollidedWith<span style="color: #008000;">;</span>
            <span style="color: #008000;">&#125;</span>
            <span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #008080; font-style: italic;">//Initiate a controlled move with Collision detection, so that we can rebound off the sides</span>
        <span style="color: #008080; font-style: italic;">//and tops of blocks.</span>
        <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">bool</span> Move<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            Sprite collided <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">;</span>
            <span style="color: #6666cc; font-weight: bold;">float</span> x <span style="color: #008000;">=</span> Vector<span style="color: #008000;">.</span><span style="color: #0000FF;">X</span><span style="color: #008000;">;</span>
            <span style="color: #6666cc; font-weight: bold;">float</span> y <span style="color: #008000;">=</span> Vector<span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span><span style="color: #008000;">;</span>
            <span style="color: #6666cc; font-weight: bold;">float</span> ax <span style="color: #008000;">=</span> Math<span style="color: #008000;">.</span><span style="color: #0000FF;">Abs</span><span style="color: #008000;">&#40;</span>x<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #6666cc; font-weight: bold;">float</span> ay <span style="color: #008000;">=</span> Math<span style="color: #008000;">.</span><span style="color: #0000FF;">Abs</span><span style="color: #008000;">&#40;</span>y<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #6666cc; font-weight: bold;">float</span> y1, x1<span style="color: #008000;">;</span>
&nbsp;
            <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>Math<span style="color: #008000;">.</span><span style="color: #0000FF;">Abs</span><span style="color: #008000;">&#40;</span>x<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&gt;=</span> Math<span style="color: #008000;">.</span><span style="color: #0000FF;">Abs</span><span style="color: #008000;">&#40;</span>y<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                x1 <span style="color: #008000;">=</span> x <span style="color: #008000;">/</span> ax<span style="color: #008000;">;</span>
                y1 <span style="color: #008000;">=</span> y <span style="color: #008000;">/</span> ax<span style="color: #008000;">;</span>
&nbsp;
                <span style="color: #6666cc; font-weight: bold;">float</span> ax1 <span style="color: #008000;">=</span> Math<span style="color: #008000;">.</span><span style="color: #0000FF;">Abs</span><span style="color: #008000;">&#40;</span>x1<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
                <span style="color: #0600FF; font-weight: bold;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">float</span> i <span style="color: #008000;">=</span> <span style="color: #FF0000;">0</span>,j <span style="color: #008000;">=</span> <span style="color: #FF0000;">0</span><span style="color: #008000;">;</span> <span style="color: #008000;">&#40;</span>i <span style="color: #008000;">&lt;</span> ax<span style="color: #008000;">&#41;</span> <span style="color: #008000;">;</span> i <span style="color: #008000;">+=</span> ax1,j <span style="color: #008000;">+=</span> y1<span style="color: #008000;">&#41;</span>
                <span style="color: #008000;">&#123;</span>
                    Position<span style="color: #008000;">.</span><span style="color: #0000FF;">X</span> <span style="color: #008000;">+=</span> x1<span style="color: #008000;">;</span>
                    Position<span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span> <span style="color: #008000;">+=</span> y1<span style="color: #008000;">;</span>
&nbsp;
                    <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Position</span><span style="color: #008000;">.</span><span style="color: #0000FF;">X</span> <span style="color: #008000;">+</span> <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Width</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&gt;</span> Bounds<span style="color: #008000;">.</span><span style="color: #0000FF;">Width</span><span style="color: #008000;">&#41;</span>
                    <span style="color: #008000;">&#123;</span>
                        <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Vector</span><span style="color: #008000;">.</span><span style="color: #0000FF;">X</span> <span style="color: #008000;">=</span> <span style="color: #008000;">-</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Vector</span><span style="color: #008000;">.</span><span style="color: #0000FF;">X</span><span style="color: #008000;">;</span>
                        x1 <span style="color: #008000;">*=</span> <span style="color: #008000;">-</span><span style="color: #FF0000;">1</span><span style="color: #008000;">;</span>
                    <span style="color: #008000;">&#125;</span>
                    <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Position</span><span style="color: #008000;">.</span><span style="color: #0000FF;">X</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&lt;</span> Bounds<span style="color: #008000;">.</span><span style="color: #0000FF;">X</span><span style="color: #008000;">&#41;</span>
                    <span style="color: #008000;">&#123;</span>
                        <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Vector</span><span style="color: #008000;">.</span><span style="color: #0000FF;">X</span> <span style="color: #008000;">=</span> <span style="color: #008000;">-</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Vector</span><span style="color: #008000;">.</span><span style="color: #0000FF;">X</span><span style="color: #008000;">;</span>
                        x1 <span style="color: #008000;">*=</span> <span style="color: #008000;">-</span><span style="color: #FF0000;">1</span><span style="color: #008000;">;</span>
                    <span style="color: #008000;">&#125;</span>
&nbsp;
                    <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Position</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span> <span style="color: #008000;">+</span> <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Height</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&gt;</span> Bounds<span style="color: #008000;">.</span><span style="color: #0000FF;">Height</span><span style="color: #008000;">&#41;</span>
                    <span style="color: #008000;">&#123;</span>
                        <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Vector</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span> <span style="color: #008000;">=</span> <span style="color: #008000;">-</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Vector</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span><span style="color: #008000;">;</span>
                        y1 <span style="color: #008000;">*=</span> <span style="color: #008000;">-</span><span style="color: #FF0000;">1</span><span style="color: #008000;">;</span>
                    <span style="color: #008000;">&#125;</span>
                    <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Position</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&lt;</span> Bounds<span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span><span style="color: #008000;">&#41;</span>
                    <span style="color: #008000;">&#123;</span>
                        <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Vector</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span> <span style="color: #008000;">=</span> <span style="color: #008000;">-</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Vector</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span><span style="color: #008000;">;</span>
                        y1 <span style="color: #008000;">*=</span> <span style="color: #008000;">-</span><span style="color: #FF0000;">1</span><span style="color: #008000;">;</span>
                    <span style="color: #008000;">&#125;</span> 
&nbsp;
                    <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>IsCollision<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">!=</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">&#41;</span>
                    <span style="color: #008000;">&#123;</span>
                        <span style="color: #6666cc; font-weight: bold;">bool</span> ycoll <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">false</span><span style="color: #008000;">;</span>
                        <span style="color: #6666cc; font-weight: bold;">bool</span> xcoll <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">false</span><span style="color: #008000;">;</span>
                        collided <span style="color: #008000;">=</span> mCollidedWith<span style="color: #008000;">;</span>
                        <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Position</span><span style="color: #008000;">.</span><span style="color: #0000FF;">X</span> <span style="color: #008000;">-=</span> x1<span style="color: #008000;">;</span>
                        <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>IsCollision<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">!=</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">&#41;</span>
                        <span style="color: #008000;">&#123;</span>
                            ycoll <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">true</span><span style="color: #008000;">;</span>
                        <span style="color: #008000;">&#125;</span>
                        <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Position</span><span style="color: #008000;">.</span><span style="color: #0000FF;">X</span> <span style="color: #008000;">+=</span> x1<span style="color: #008000;">;</span>
                        <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Position</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span> <span style="color: #008000;">-=</span> y1<span style="color: #008000;">;</span>
                        <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>IsCollision<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">!=</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">&#41;</span>
                        <span style="color: #008000;">&#123;</span>
                            xcoll <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">true</span><span style="color: #008000;">;</span>
                        <span style="color: #008000;">&#125;</span>
                        <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Position</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span> <span style="color: #008000;">+=</span> y1<span style="color: #008000;">;</span>
                        <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>xcoll<span style="color: #008000;">&#41;</span>
                        <span style="color: #008000;">&#123;</span>
                            <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Vector</span><span style="color: #008000;">.</span><span style="color: #0000FF;">X</span> <span style="color: #008000;">*=</span> <span style="color: #008000;">-</span><span style="color: #FF0000;">1</span><span style="color: #008000;">;</span>
                            x1 <span style="color: #008000;">*=</span> <span style="color: #008000;">-</span><span style="color: #FF0000;">1</span><span style="color: #008000;">;</span>
                        <span style="color: #008000;">&#125;</span>
                        <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>ycoll<span style="color: #008000;">&#41;</span>
                        <span style="color: #008000;">&#123;</span>
                            <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Vector</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span> <span style="color: #008000;">*=</span> <span style="color: #008000;">-</span><span style="color: #FF0000;">1</span><span style="color: #008000;">;</span>
                            y1 <span style="color: #008000;">*=</span> <span style="color: #008000;">-</span><span style="color: #FF0000;">1</span><span style="color: #008000;">;</span>
                        <span style="color: #008000;">&#125;</span>
                        <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">!</span><span style="color: #008000;">&#40;</span>ycoll <span style="color: #008000;">||</span> xcoll<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
                        <span style="color: #008000;">&#123;</span>
                            <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Vector</span><span style="color: #008000;">.</span><span style="color: #0000FF;">X</span> <span style="color: #008000;">*=</span> <span style="color: #008000;">-</span><span style="color: #FF0000;">1</span><span style="color: #008000;">;</span>
                            <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Vector</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span> <span style="color: #008000;">*=</span> <span style="color: #008000;">-</span><span style="color: #FF0000;">1</span><span style="color: #008000;">;</span>
                        <span style="color: #008000;">&#125;</span>
&nbsp;
                    <span style="color: #008000;">&#125;</span>
                <span style="color: #008000;">&#125;</span>
            <span style="color: #008000;">&#125;</span>
            <span style="color: #0600FF; font-weight: bold;">else</span>
            <span style="color: #008000;">&#123;</span>
                x1 <span style="color: #008000;">=</span> x <span style="color: #008000;">/</span> ay<span style="color: #008000;">;</span>
                y1 <span style="color: #008000;">=</span> y <span style="color: #008000;">/</span> ay<span style="color: #008000;">;</span>
&nbsp;
                <span style="color: #6666cc; font-weight: bold;">float</span> ay1 <span style="color: #008000;">=</span> Math<span style="color: #008000;">.</span><span style="color: #0000FF;">Abs</span><span style="color: #008000;">&#40;</span>y1<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
                <span style="color: #0600FF; font-weight: bold;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">float</span> i <span style="color: #008000;">=</span> <span style="color: #FF0000;">0</span>,j <span style="color: #008000;">=</span> <span style="color: #FF0000;">0</span><span style="color: #008000;">;</span> <span style="color: #008000;">&#40;</span>j <span style="color: #008000;">&lt;</span> ay<span style="color: #008000;">&#41;</span> <span style="color: #008000;">;</span> i <span style="color: #008000;">+=</span> x1,j <span style="color: #008000;">+=</span> ay1<span style="color: #008000;">&#41;</span>
                <span style="color: #008000;">&#123;</span>
                    Position<span style="color: #008000;">.</span><span style="color: #0000FF;">X</span> <span style="color: #008000;">+=</span> x1<span style="color: #008000;">;</span>
                    Position<span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span> <span style="color: #008000;">+=</span> y1<span style="color: #008000;">;</span>
&nbsp;
                    <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Position</span><span style="color: #008000;">.</span><span style="color: #0000FF;">X</span> <span style="color: #008000;">+</span> <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Width</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&gt;</span> Bounds<span style="color: #008000;">.</span><span style="color: #0000FF;">Width</span><span style="color: #008000;">&#41;</span>
                    <span style="color: #008000;">&#123;</span>
                        <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Vector</span><span style="color: #008000;">.</span><span style="color: #0000FF;">X</span> <span style="color: #008000;">=</span> <span style="color: #008000;">-</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Vector</span><span style="color: #008000;">.</span><span style="color: #0000FF;">X</span><span style="color: #008000;">;</span>
                        x1 <span style="color: #008000;">*=</span> <span style="color: #008000;">-</span><span style="color: #FF0000;">1</span><span style="color: #008000;">;</span>
                    <span style="color: #008000;">&#125;</span>
                    <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Position</span><span style="color: #008000;">.</span><span style="color: #0000FF;">X</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&lt;</span> Bounds<span style="color: #008000;">.</span><span style="color: #0000FF;">X</span><span style="color: #008000;">&#41;</span>
                    <span style="color: #008000;">&#123;</span>
                        <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Vector</span><span style="color: #008000;">.</span><span style="color: #0000FF;">X</span> <span style="color: #008000;">=</span> <span style="color: #008000;">-</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Vector</span><span style="color: #008000;">.</span><span style="color: #0000FF;">X</span><span style="color: #008000;">;</span>
                        x1 <span style="color: #008000;">*=</span> <span style="color: #008000;">-</span><span style="color: #FF0000;">1</span><span style="color: #008000;">;</span>
                    <span style="color: #008000;">&#125;</span>
&nbsp;
                    <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Position</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span> <span style="color: #008000;">+</span> <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Height</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&gt;</span> Bounds<span style="color: #008000;">.</span><span style="color: #0000FF;">Height</span><span style="color: #008000;">&#41;</span>
                    <span style="color: #008000;">&#123;</span>
                        <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Vector</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span> <span style="color: #008000;">=</span> <span style="color: #008000;">-</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Vector</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span><span style="color: #008000;">;</span>
                        y1 <span style="color: #008000;">*=</span> <span style="color: #008000;">-</span><span style="color: #FF0000;">1</span><span style="color: #008000;">;</span>
                    <span style="color: #008000;">&#125;</span>
                    <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Position</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&lt;</span> Bounds<span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span><span style="color: #008000;">&#41;</span>
                    <span style="color: #008000;">&#123;</span>
                        <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Vector</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span> <span style="color: #008000;">=</span> <span style="color: #008000;">-</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Vector</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span><span style="color: #008000;">;</span>
                        y1 <span style="color: #008000;">*=</span> <span style="color: #008000;">-</span><span style="color: #FF0000;">1</span><span style="color: #008000;">;</span>
                    <span style="color: #008000;">&#125;</span> 
&nbsp;
                    <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>IsCollision<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">!=</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">&#41;</span>
                    <span style="color: #008000;">&#123;</span>
                        <span style="color: #6666cc; font-weight: bold;">bool</span> ycoll <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">false</span><span style="color: #008000;">;</span>
                        <span style="color: #6666cc; font-weight: bold;">bool</span> xcoll <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">false</span><span style="color: #008000;">;</span>
                        collided <span style="color: #008000;">=</span> mCollidedWith<span style="color: #008000;">;</span>
                        <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Position</span><span style="color: #008000;">.</span><span style="color: #0000FF;">X</span> <span style="color: #008000;">-=</span> x1<span style="color: #008000;">;</span>
                        <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>IsCollision<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">!=</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">&#41;</span>
                        <span style="color: #008000;">&#123;</span>
                            ycoll <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">true</span><span style="color: #008000;">;</span>
                        <span style="color: #008000;">&#125;</span>
                        <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Position</span><span style="color: #008000;">.</span><span style="color: #0000FF;">X</span> <span style="color: #008000;">+=</span> x1<span style="color: #008000;">;</span>
                        <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Position</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span> <span style="color: #008000;">-=</span> y1<span style="color: #008000;">;</span>
                        <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>IsCollision<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">!=</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">&#41;</span>
                        <span style="color: #008000;">&#123;</span>
                            xcoll <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">true</span><span style="color: #008000;">;</span>
                        <span style="color: #008000;">&#125;</span>
                        <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Position</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span> <span style="color: #008000;">+=</span> y1<span style="color: #008000;">;</span>
                        <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>xcoll<span style="color: #008000;">&#41;</span>
                        <span style="color: #008000;">&#123;</span>
                            <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Vector</span><span style="color: #008000;">.</span><span style="color: #0000FF;">X</span> <span style="color: #008000;">*=</span> <span style="color: #008000;">-</span><span style="color: #FF0000;">1</span><span style="color: #008000;">;</span>
                            x1 <span style="color: #008000;">*=</span> <span style="color: #008000;">-</span><span style="color: #FF0000;">1</span><span style="color: #008000;">;</span>
                        <span style="color: #008000;">&#125;</span>
                        <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>ycoll<span style="color: #008000;">&#41;</span>
                        <span style="color: #008000;">&#123;</span>
                            <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Vector</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span> <span style="color: #008000;">*=</span> <span style="color: #008000;">-</span><span style="color: #FF0000;">1</span><span style="color: #008000;">;</span>
                            y1 <span style="color: #008000;">*=</span> <span style="color: #008000;">-</span><span style="color: #FF0000;">1</span><span style="color: #008000;">;</span>
                        <span style="color: #008000;">&#125;</span>
                        <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">!</span><span style="color: #008000;">&#40;</span>ycoll <span style="color: #008000;">||</span> xcoll<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
                        <span style="color: #008000;">&#123;</span>
                            <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Vector</span><span style="color: #008000;">.</span><span style="color: #0000FF;">X</span> <span style="color: #008000;">*=</span> <span style="color: #008000;">-</span><span style="color: #FF0000;">1</span><span style="color: #008000;">;</span>
                            <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Vector</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span> <span style="color: #008000;">*=</span> <span style="color: #008000;">-</span><span style="color: #FF0000;">1</span><span style="color: #008000;">;</span>
                        <span style="color: #008000;">&#125;</span>
                    <span style="color: #008000;">&#125;</span>
                <span style="color: #008000;">&#125;</span>
            <span style="color: #008000;">&#125;</span>
&nbsp;
            <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>collided <span style="color: #008000;">!=</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>collided<span style="color: #008000;">.</span><span style="color: #0000FF;">mVisible</span><span style="color: #008000;">&#41;</span>
                <span style="color: #008000;">&#123;</span>
                    collided<span style="color: #008000;">.</span><span style="color: #0000FF;">Position</span><span style="color: #008000;">.</span><span style="color: #0000FF;">X</span> <span style="color: #008000;">=</span> <span style="color: #008000;">-</span><span style="color: #FF0000;">50</span><span style="color: #008000;">;</span>
                    collided<span style="color: #008000;">.</span><span style="color: #0000FF;">Position</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span> <span style="color: #008000;">=</span> <span style="color: #008000;">-</span><span style="color: #FF0000;">50</span><span style="color: #008000;">;</span>
                    collided<span style="color: #008000;">.</span><span style="color: #0000FF;">mVisible</span> <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">false</span><span style="color: #008000;">;</span>
                <span style="color: #008000;">&#125;</span>
            <span style="color: #008000;">&#125;</span>
            <span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #0600FF; font-weight: bold;">false</span><span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span></pre></div></div>

<p>As is evident, the largest function in the class is the Move() function. Each Sprite is given the opportunity to move based on its Vector. Because I wanted to be able to increase the speed (and therefore increase the Vector) I needed to do a few things in this function to make it rebound correctly off different objects. First, I needed to decide whether x or y was the larger Vector part, and then step by a delta of 1 on the largest of these. For example, if the Vector is (5,2) then the Delta of x is x1 = 1. This leaves the Delta of y as y1 = 2/5. By stepping with a delta of 1 as the largest value, we can see what edge collides first with any surrounding boxes. This allows the rebound to either bounce up, down, left or right, or diagonally in the event that it collides with a corner.</p>
<p>Most of the the code is trying to cope with continuing the delta increments after a rebound has taken place. This increases the number of calls to IsCollision, but ensures the accuracy of the Collision Detection. As we are only doing a Breakout game, it shouldn&#8217;t affect the Gameplay at all. One thing to note is that I still have the rebound working for the Bottom of the screen, rather than a game-over/life-lost event. This will be modified soon to compensate. Once a block is collided with it is moved off the screen, and it is set to non visible. The mVisible flag was added to stop the collision detection from going crazy as more blocks are piled in the same offscreen dumping ground.<br />
<!--more--><br />
The Wall class is used to generate the Random Coloured Wall, and to register each sprite with the Collision detection Class.</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.Collections.Generic</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.Linq</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.Text</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">Microsoft.Xna.Framework.Graphics</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">Microsoft.Xna.Framework.Content</span><span style="color: #008000;">;</span>
&nbsp;
<span style="color: #0600FF; font-weight: bold;">namespace</span> Forays_in_XNA
<span style="color: #008000;">&#123;</span>
    <span style="color: #6666cc; font-weight: bold;">class</span> Wall
    <span style="color: #008000;">&#123;</span>
        <span style="color: #0600FF; font-weight: bold;">private</span> Sprite<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span> mWall<span style="color: #008000;">;</span>
        <span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #0600FF; font-weight: bold;">const</span> <span style="color: #6666cc; font-weight: bold;">int</span> startx <span style="color: #008000;">=</span> <span style="color: #FF0000;">3</span><span style="color: #008000;">;</span>
        <span style="color: #008080; font-style: italic;">//private const int height = 20;</span>
        <span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #0600FF; font-weight: bold;">const</span> <span style="color: #6666cc; font-weight: bold;">int</span> xcount <span style="color: #008000;">=</span> <span style="color: #FF0000;">16</span><span style="color: #008000;">;</span>
        <span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #0600FF; font-weight: bold;">const</span> <span style="color: #6666cc; font-weight: bold;">int</span> ycount <span style="color: #008000;">=</span> <span style="color: #FF0000;">5</span><span style="color: #008000;">;</span>
        <span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #0600FF; font-weight: bold;">const</span> <span style="color: #6666cc; font-weight: bold;">int</span> xpad <span style="color: #008000;">=</span> <span style="color: #FF0000;">3</span><span style="color: #008000;">;</span>
        <span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #0600FF; font-weight: bold;">const</span> <span style="color: #6666cc; font-weight: bold;">int</span> ypad <span style="color: #008000;">=</span> <span style="color: #FF0000;">3</span><span style="color: #008000;">;</span>
&nbsp;
        <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">void</span> LoadContent<span style="color: #008000;">&#40;</span>ContentManager theContentManager<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            mWall <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Sprite<span style="color: #008000;">&#91;</span>ycount<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">;</span>
            <span style="color: #0600FF; font-weight: bold;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">int</span> i <span style="color: #008000;">=</span> <span style="color: #FF0000;">0</span><span style="color: #008000;">;</span> i <span style="color: #008000;">&lt;</span> ycount<span style="color: #008000;">;</span> <span style="color: #008000;">++</span>i<span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                mWall<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Sprite<span style="color: #008000;">&#91;</span>xcount<span style="color: #008000;">&#93;</span><span style="color: #008000;">;</span>
                <span style="color: #0600FF; font-weight: bold;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">int</span> j <span style="color: #008000;">=</span> <span style="color: #FF0000;">0</span><span style="color: #008000;">;</span> j <span style="color: #008000;">&lt;</span> xcount<span style="color: #008000;">;</span> <span style="color: #008000;">++</span>j<span style="color: #008000;">&#41;</span>
                <span style="color: #008000;">&#123;</span>
                    mWall<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span> <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Sprite<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                <span style="color: #008000;">&#125;</span>
            <span style="color: #008000;">&#125;</span>
            <span style="color: #6666cc; font-weight: bold;">int</span> x <span style="color: #008000;">=</span> startx<span style="color: #008000;">;</span>
            <span style="color: #6666cc; font-weight: bold;">int</span> y <span style="color: #008000;">=</span> <span style="color: #FF0000;">0</span><span style="color: #008000;">;</span>
            <span style="color: #6666cc; font-weight: bold;">int</span> height <span style="color: #008000;">=</span> <span style="color: #FF0000;">0</span><span style="color: #008000;">;</span>
&nbsp;
            <span style="color: #0600FF; font-weight: bold;">foreach</span> <span style="color: #008000;">&#40;</span>Sprite<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span> Line <span style="color: #0600FF; font-weight: bold;">in</span> mWall<span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0600FF; font-weight: bold;">foreach</span> <span style="color: #008000;">&#40;</span>Sprite sprite <span style="color: #0600FF; font-weight: bold;">in</span> Line<span style="color: #008000;">&#41;</span>
                <span style="color: #008000;">&#123;</span>
                    sprite<span style="color: #008000;">.</span><span style="color: #0000FF;">LoadContent</span><span style="color: #008000;">&#40;</span>theContentManager, <span style="color: #666666;">&quot;whiteblock&quot;</span>, randomColour<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                    sprite<span style="color: #008000;">.</span><span style="color: #0000FF;">Position</span><span style="color: #008000;">.</span><span style="color: #0000FF;">X</span> <span style="color: #008000;">=</span> x<span style="color: #008000;">;</span>
                    sprite<span style="color: #008000;">.</span><span style="color: #0000FF;">Position</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span> <span style="color: #008000;">=</span> y<span style="color: #008000;">;</span>
&nbsp;
                    x <span style="color: #008000;">=</span> x <span style="color: #008000;">+</span> sprite<span style="color: #008000;">.</span><span style="color: #0000FF;">Width</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">+</span> xpad<span style="color: #008000;">;</span>
                    height <span style="color: #008000;">=</span> sprite<span style="color: #008000;">.</span><span style="color: #0000FF;">Height</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">+</span>ypad<span style="color: #008000;">;</span>
                <span style="color: #008000;">&#125;</span>
                x <span style="color: #008000;">=</span> startx<span style="color: #008000;">;</span>
                y <span style="color: #008000;">=</span> y <span style="color: #008000;">+</span> height<span style="color: #008000;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #008080; font-style: italic;">//Draw the sprite to the screen</span>
        <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">void</span> Draw<span style="color: #008000;">&#40;</span>SpriteBatch theSpriteBatch<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
           <span style="color: #0600FF; font-weight: bold;">foreach</span> <span style="color: #008000;">&#40;</span>Sprite<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span> Line <span style="color: #0600FF; font-weight: bold;">in</span> mWall<span style="color: #008000;">&#41;</span>
           <span style="color: #008000;">&#123;</span>
                <span style="color: #0600FF; font-weight: bold;">foreach</span> <span style="color: #008000;">&#40;</span>Sprite sprite <span style="color: #0600FF; font-weight: bold;">in</span> Line<span style="color: #008000;">&#41;</span>
                <span style="color: #008000;">&#123;</span>
                    theSpriteBatch<span style="color: #008000;">.</span><span style="color: #0000FF;">Draw</span><span style="color: #008000;">&#40;</span>sprite<span style="color: #008000;">.</span><span style="color: #0000FF;">texture</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>, sprite<span style="color: #008000;">.</span><span style="color: #0000FF;">Position</span>, sprite<span style="color: #008000;">.</span><span style="color: #0000FF;">Colour</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                <span style="color: #008000;">&#125;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #008080; font-style: italic;">//Pick a random colour for this block</span>
        <span style="color: #0600FF; font-weight: bold;">public</span> Color randomColour<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            Random rnd1 <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Random<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            <span style="color: #6666cc; font-weight: bold;">int</span> rnd <span style="color: #008000;">=</span> <span style="color: #008000;">&#40;</span>rnd1<span style="color: #008000;">.</span><span style="color: #0000FF;">Next</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">110</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">+</span><span style="color: #FF0000;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">/</span><span style="color: #FF0000;">10</span><span style="color: #008000;">;</span>
            Color color <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Color<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            color <span style="color: #008000;">=</span> Color<span style="color: #008000;">.</span><span style="color: #0000FF;">White</span><span style="color: #008000;">;</span>
            <span style="color: #0600FF; font-weight: bold;">switch</span> <span style="color: #008000;">&#40;</span>rnd<span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0600FF; font-weight: bold;">case</span> <span style="color: #FF0000;">1</span><span style="color: #008000;">:</span>
                    color <span style="color: #008000;">=</span> Color<span style="color: #008000;">.</span><span style="color: #0000FF;">YellowGreen</span><span style="color: #008000;">;</span>
                    <span style="color: #0600FF; font-weight: bold;">break</span><span style="color: #008000;">;</span>
                <span style="color: #0600FF; font-weight: bold;">case</span> <span style="color: #FF0000;">2</span><span style="color: #008000;">:</span>
                    color <span style="color: #008000;">=</span> Color<span style="color: #008000;">.</span><span style="color: #0000FF;">AliceBlue</span><span style="color: #008000;">;</span>
                    <span style="color: #0600FF; font-weight: bold;">break</span><span style="color: #008000;">;</span>
                <span style="color: #0600FF; font-weight: bold;">case</span> <span style="color: #FF0000;">3</span><span style="color: #008000;">:</span>
                    color <span style="color: #008000;">=</span> Color<span style="color: #008000;">.</span><span style="color: #0000FF;">Bisque</span><span style="color: #008000;">;</span>
                    <span style="color: #0600FF; font-weight: bold;">break</span><span style="color: #008000;">;</span>
                <span style="color: #0600FF; font-weight: bold;">case</span> <span style="color: #FF0000;">4</span><span style="color: #008000;">:</span>
                    color <span style="color: #008000;">=</span> Color<span style="color: #008000;">.</span><span style="color: #0000FF;">BlueViolet</span><span style="color: #008000;">;</span>
                    <span style="color: #0600FF; font-weight: bold;">break</span><span style="color: #008000;">;</span>
                <span style="color: #0600FF; font-weight: bold;">case</span> <span style="color: #FF0000;">5</span><span style="color: #008000;">:</span>
                    color <span style="color: #008000;">=</span> Color<span style="color: #008000;">.</span><span style="color: #0000FF;">Chocolate</span><span style="color: #008000;">;</span>
                    <span style="color: #0600FF; font-weight: bold;">break</span><span style="color: #008000;">;</span>
                <span style="color: #0600FF; font-weight: bold;">case</span> <span style="color: #FF0000;">6</span><span style="color: #008000;">:</span>
                    color <span style="color: #008000;">=</span> Color<span style="color: #008000;">.</span><span style="color: #0000FF;">DarkGoldenrod</span><span style="color: #008000;">;</span>
                    <span style="color: #0600FF; font-weight: bold;">break</span><span style="color: #008000;">;</span>
                <span style="color: #0600FF; font-weight: bold;">case</span> <span style="color: #FF0000;">7</span><span style="color: #008000;">:</span>
                    color <span style="color: #008000;">=</span> Color<span style="color: #008000;">.</span><span style="color: #0000FF;">Crimson</span><span style="color: #008000;">;</span>
                    <span style="color: #0600FF; font-weight: bold;">break</span><span style="color: #008000;">;</span>
                <span style="color: #0600FF; font-weight: bold;">case</span> <span style="color: #FF0000;">8</span><span style="color: #008000;">:</span>
                    color <span style="color: #008000;">=</span> Color<span style="color: #008000;">.</span><span style="color: #0000FF;">DarkGreen</span><span style="color: #008000;">;</span>
                    <span style="color: #0600FF; font-weight: bold;">break</span><span style="color: #008000;">;</span>
                <span style="color: #0600FF; font-weight: bold;">case</span> <span style="color: #FF0000;">9</span><span style="color: #008000;">:</span>
                    color <span style="color: #008000;">=</span> Color<span style="color: #008000;">.</span><span style="color: #0000FF;">DarkMagenta</span><span style="color: #008000;">;</span>
                    <span style="color: #0600FF; font-weight: bold;">break</span><span style="color: #008000;">;</span>
                <span style="color: #0600FF; font-weight: bold;">case</span> <span style="color: #FF0000;">10</span><span style="color: #008000;">:</span>
                    color <span style="color: #008000;">=</span> Color<span style="color: #008000;">.</span><span style="color: #0000FF;">DarkOliveGreen</span><span style="color: #008000;">;</span>
                    <span style="color: #0600FF; font-weight: bold;">break</span><span style="color: #008000;">;</span>
                <span style="color: #0600FF; font-weight: bold;">case</span> <span style="color: #FF0000;">11</span><span style="color: #008000;">:</span>
                    color <span style="color: #008000;">=</span> Color<span style="color: #008000;">.</span><span style="color: #0000FF;">White</span><span style="color: #008000;">;</span>
                    <span style="color: #0600FF; font-weight: bold;">break</span><span style="color: #008000;">;</span>
            <span style="color: #008000;">&#125;</span>
            <span style="color: #0600FF; font-weight: bold;">return</span> color<span style="color: #008000;">;</span>
        <span style="color: #008000;">&#125;</span>
&nbsp;
        <span style="color: #008080; font-style: italic;">//Register all the wall sprites with the Collision detection/sprite manager</span>
        <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">void</span> RegisterCollision<span style="color: #008000;">&#40;</span>Collision collision<span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            <span style="color: #0600FF; font-weight: bold;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">int</span> i <span style="color: #008000;">=</span> <span style="color: #FF0000;">0</span><span style="color: #008000;">;</span> i <span style="color: #008000;">&lt;</span> ycount<span style="color: #008000;">;</span> <span style="color: #008000;">++</span>i<span style="color: #008000;">&#41;</span>
            <span style="color: #008000;">&#123;</span>
                <span style="color: #0600FF; font-weight: bold;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">int</span> j <span style="color: #008000;">=</span> <span style="color: #FF0000;">0</span><span style="color: #008000;">;</span> j <span style="color: #008000;">&lt;</span> xcount<span style="color: #008000;">;</span> <span style="color: #008000;">++</span>j<span style="color: #008000;">&#41;</span>
                <span style="color: #008000;">&#123;</span>
                    collision<span style="color: #008000;">.</span><span style="color: #0000FF;">Register</span><span style="color: #008000;">&#40;</span>mWall<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
                <span style="color: #008000;">&#125;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span></pre></div></div>

<p>As we see the Wall class just creates the wall sprites, and passes each off to the Collision class which is being used as the Sprite Manager.</p>
<p>In the Game1.cs class we have a number of member variables declared</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">        SpriteBatch spriteBatch<span style="color: #008000;">;</span>
        Wall mWall<span style="color: #008000;">;</span>
        Sprite mBall<span style="color: #008000;">;</span>
        Collision mCollision<span style="color: #008000;">;</span></pre></div></div>

<p>These are each initialized in the Initialize function</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">            mWall <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Wall<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            mBall <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Sprite<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            mCollision <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Collision<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p>The loading of the Content is done in order to get the Sprites available and ready for drawing.</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">            mWall<span style="color: #008000;">.</span><span style="color: #0000FF;">LoadContent</span><span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Content</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            mBall<span style="color: #008000;">.</span><span style="color: #0000FF;">LoadContent</span><span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Content</span>, <span style="color: #666666;">&quot;whiteball&quot;</span>,Color<span style="color: #008000;">.</span><span style="color: #0000FF;">White</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            mBall<span style="color: #008000;">.</span><span style="color: #0000FF;">Position</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span> <span style="color: #008000;">=</span> Window<span style="color: #008000;">.</span><span style="color: #0000FF;">ClientBounds</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Height</span> <span style="color: #008000;">-</span> mBall<span style="color: #008000;">.</span><span style="color: #0000FF;">Height</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            mBall<span style="color: #008000;">.</span><span style="color: #0000FF;">Position</span><span style="color: #008000;">.</span><span style="color: #0000FF;">X</span> <span style="color: #008000;">=</span> Window<span style="color: #008000;">.</span><span style="color: #0000FF;">ClientBounds</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Width</span><span style="color: #008000;">/</span><span style="color: #FF0000;">2</span><span style="color: #008000;">;</span>
&nbsp;
            mBall<span style="color: #008000;">.</span><span style="color: #0000FF;">Vector</span><span style="color: #008000;">.</span><span style="color: #0000FF;">X</span> <span style="color: #008000;">=</span> <span style="color: #FF0000;">2</span><span style="color: #008000;">;</span>
            mBall<span style="color: #008000;">.</span><span style="color: #0000FF;">Vector</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Y</span> <span style="color: #008000;">=</span> <span style="color: #008000;">-</span><span style="color: #FF0000;">4</span><span style="color: #008000;">;</span>
&nbsp;
            mBall<span style="color: #008000;">.</span><span style="color: #0000FF;">Bounds</span> <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Rectangle<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">0</span>, <span style="color: #FF0000;">0</span>, Window<span style="color: #008000;">.</span><span style="color: #0000FF;">ClientBounds</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Width</span>, Window<span style="color: #008000;">.</span><span style="color: #0000FF;">ClientBounds</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Height</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
            mCollision<span style="color: #008000;">.</span><span style="color: #0000FF;">Register</span><span style="color: #008000;">&#40;</span>mBall<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            mWall<span style="color: #008000;">.</span><span style="color: #0000FF;">RegisterCollision</span><span style="color: #008000;">&#40;</span>mCollision<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p>The Ball has its bounds set and a Vector given. I have then modified the Update Section to do the following</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">            UpdateInput<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            mCollision<span style="color: #008000;">.</span><span style="color: #0000FF;">Move</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p>The UpdateInput function has been created to handle the Keypresses within the game. At the moment it only increases or decreases the Vector that the ball travels at, but as soon as the paddle is implemented the controls will be used to move left and right. I intend on also normalising the surfaces so that the paddle can be rotated to change its reflection angle. I could probably get away with this by just modifying based on the angle of the paddle against where the paddle is struck, though the code to counter for the corners will be quite difficult to master.</p>
<p>One Last function that is used in the Game1.cs Class is the Draw Function</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">            spriteBatch<span style="color: #008000;">.</span><span style="color: #0000FF;">Begin</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            mWall<span style="color: #008000;">.</span><span style="color: #0000FF;">Draw</span><span style="color: #008000;">&#40;</span>spriteBatch<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            mBall<span style="color: #008000;">.</span><span style="color: #0000FF;">Draw</span><span style="color: #008000;">&#40;</span>spriteBatch<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
            spriteBatch<span style="color: #008000;">.</span><span style="color: #0000FF;">End</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p>More to come soon&#8230; such as scoring and the paddle controller. I had hoped to complete this within the day, but unfortunately I am also fasting so my concentration levels have been extremely low. As I complete this article for posting I already have the Paddle working, as well as Scoring and the like. Tune in to see how it all pans out.</p>
<p>Cheers, Chris.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dwarfsoft.com/blog/2009/03/03/xna-in-a-day/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Forays into XNA &#8211; First Impressions</title>
		<link>http://www.dwarfsoft.com/blog/2009/03/02/forays-into-xna-first-impressions/</link>
		<comments>http://www.dwarfsoft.com/blog/2009/03/02/forays-into-xna-first-impressions/#comments</comments>
		<pubDate>Mon, 02 Mar 2009 11:05:39 +0000</pubDate>
		<dc:creator>dwarfsoft</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Game]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[XNA]]></category>

		<guid isPermaLink="false">http://www.dwarfsoft.com/blog/?p=184</guid>
		<description><![CDATA[I have started thinking about my possible development opportunities, and have decided that in order to document from 0-100mph I should start with a framework that I have never used, and a language which I have rarely used, in order to give me insight into the newbie mind. By starting from scratch I feel that [...]]]></description>
			<content:encoded><![CDATA[<p>I have started thinking about my possible development opportunities, and have decided that in order to document from 0-100mph I should start with a framework that I have never used, and a language which I have rarely used, in order to give me insight into the newbie mind. By starting from scratch I feel that the articles will cover some of those smaller aspects that we usually quickly learn and forget about. Coming from another language will allow me to document the differences from what I was expecting to what is presented and why this is so.</p>
<p>So, the installation of the <a href="http://msdn.microsoft.com/en-us/xna/default.aspx">XNA Game Studio 3.0</a> has completed, as has the installation of <a href="http://www.microsoft.com/express/vcsharp/">Visual C# 2008 Express Edition</a>. The first place I was sent to was the <a href="http://creators.xna.com/en-US/quickstart_main">XNA Creators Club Online</a>. I set up my profile there, although this wasn&#8217;t really necessary.</p>
<p><span id="more-184"></span></p>
<p>The next step was to start looking into the XNA Game Studio Documentation. I immediately hit the Programming Guide to see what code was needed to get pictures displaying on the screen. So, seeing the short code to actually put something onto the screen I immediately set out to create myself a Sprite. (I did actually have a browse over at <a href="http://www.xnadevelopment.com/tutorials/creatinga2dsprite/CreatingA2DSprite.shtml">xnadevelopment.com</a> as to how they did this first). </p>
<div id="attachment_189" class="wp-caption aligncenter" style="width: 110px"><img class="size-full wp-image-189" title="greenblock" src="http://www.dwarfsoft.com/blog/wp-content/uploads/2009/03/whiteblock.png" alt="My fantastically crafted Green Block Image" width="50" height="20" /><p class="wp-caption-text">My My fantastically crafted White Block</p></div>
<p>So I added the block into the project&#8217;s content area. Next, I added the following into my base class:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">SpriteBatch spriteBatch<span style="color: #008000;">;</span>
Vector2 mPosition <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Vector2<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">0</span>, <span style="color: #FF0000;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
Texture2D mSpriteBlock<span style="color: #008000;">;</span></pre></div></div>

<p>and loaded the sprite in the LoadContent() member function:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">mSpriteBlock <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Content</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Load</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;whiteblock&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p>Finally, int the Draw member function the following needs to be added to actually draw a sprite:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">spriteBatch<span style="color: #008000;">.</span><span style="color: #0000FF;">Begin</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
spriteBatch<span style="color: #008000;">.</span><span style="color: #0000FF;">Draw</span><span style="color: #008000;">&#40;</span>mSpriteBlock, mPosition, Color<span style="color: #008000;">.</span><span style="color: #0000FF;">White</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
spriteBatch<span style="color: #008000;">.</span><span style="color: #0000FF;">End</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p>So, after a very short period of time, I have a sprite on screen, without a lot of code, and plenty else to go before a game is completed. </p>
<p>I will be attempting to build a Breakout clone in my next post: XNA in a Day.</p>
<p>Cheers, Chris.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dwarfsoft.com/blog/2009/03/02/forays-into-xna-first-impressions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

