<?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; Game Development</title>
	<atom:link href="http://www.dwarfsoft.com/blog/category/game-development/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>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>
		<item>
		<title>Microgames</title>
		<link>http://www.dwarfsoft.com/blog/2009/02/26/microgames/</link>
		<comments>http://www.dwarfsoft.com/blog/2009/02/26/microgames/#comments</comments>
		<pubDate>Thu, 26 Feb 2009 04:36:07 +0000</pubDate>
		<dc:creator>dwarfsoft</dc:creator>
				<category><![CDATA[Authoring]]></category>
		<category><![CDATA[Game Development]]></category>
		<category><![CDATA[Game]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.dwarfsoft.com/blog/?p=172</guid>
		<description><![CDATA[It seems that the idea of microgames and progressive development is a little in vogue at the moment. Andrew Russell, a long time friend and colleague from the early GameDev.Net and Tiberia days, has embarked on a game development project where he is seeking to develop a game every two weeks, and produce reusable components [...]]]></description>
			<content:encoded><![CDATA[<p>It seems that the idea of microgames and progressive development is a little in vogue at the moment. <a href="http://www.andrewrussellstudios.com/">Andrew Russell</a>, a long time friend and colleague from the early GameDev.Net and Tiberia days, has embarked on a game development project where he is seeking to develop a game every two weeks, and produce reusable components of each to ease into the development of the next. <a href="http://www.andrewrussellstudios.com/sketchable/origin/">The Origin of Sketchable</a> explains in a little more detail how he is attempting to achieve this. Strangely enough, he is already in a race against Trapper Zoid who is working on a project called <a href="http://www.trazoi.net/2009/02/24/sketchable-and-the-lab/">The Lab</a>.</p>
<p>As it turns out, this is an idea I was contemplating starting as well. My release intervals would have to be significantly longer, however, as I am incapable of committing a lot of time due to my hectic schedule of Work and Wife. The idea I was considering was to do with the book mentioned in the last post. By developing games and documenting the entire process from start to finish, it would help aspiring young developers understand the trials and tribulations of making even the simplest of games, and how much can be learned and applied to future developments. There are a few concepts I am looking forward to exploring, such as some advanced scripting in games, as I have been re-reading the <a href="https://www.amazon.com/dp/0321486811?tag=dwgp-20&#038;camp=0&#038;creative=0&#038;linkCode=as1&#038;creativeASIN=0321486811&#038;adid=16VFEJG8J3TFVR93BZQ9&#038;">Dragon Book</a> gleaning a lot of things about language design that could be useful, as well as my general scripting experience in a variety of languages.</p>
<p><span id="more-172"></span></p>
<p>In all I feel that this is an exciting time for Hobbyist and Indie developers. The outlook seems good, I recommend checking out Andrews and Davids sites from time to time to see what they are up to. I hope to keep you all informed on any developments as I come to learn of them.</p>
<p>Cheers, Chris.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dwarfsoft.com/blog/2009/02/26/microgames/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

