<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>RandomChaos</title><link>http://xna-uk.net/blogs/randomchaos/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/xna-uk/RandomChaos" /><feedburner:info uri="xna-uk/randomchaos" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item><title>DXTop, now with Windows7 Multi-touch and Ray Picking</title><link>http://feedproxy.google.com/~r/xna-uk/RandomChaos/~3/2Bog3Tunqnw/dxtop-now-with-windows7-multi-touch-and-ray-picking.aspx</link><pubDate>Fri, 05 Feb 2010 17:32:00 GMT</pubDate><guid isPermaLink="false">cc259236-b685-459d-9e21-6c78c60b874c:3045</guid><dc:creator>Nemo Krad</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://xna-uk.net/blogs/randomchaos/rsscomments.aspx?PostID=3045</wfw:commentRss><comments>http://xna-uk.net/blogs/randomchaos/archive/2010/02/05/dxtop-now-with-windows7-multi-touch-and-ray-picking.aspx#comments</comments><description>&lt;p&gt;[Go to the site to view embedded media]&lt;/p&gt;
&lt;p&gt;&lt;span style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;BORDER-COLLAPSE:separate;FONT:16px &amp;#39;Times New Roman&amp;#39;;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;" class="Apple-style-span"&gt;&lt;span style="FONT-FAMILY:Arial, Helvetica, sans-serif;FONT-SIZE:12px;" class="Apple-style-span"&gt;OK, have now integrated the Windows7 Multi-touch API into this odd XNA project and with that integrated Ray picking so I can now interact with the applications.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;BORDER-COLLAPSE:separate;FONT:16px &amp;#39;Times New Roman&amp;#39;;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;" class="Apple-style-span"&gt;&lt;span style="FONT-FAMILY:Arial, Helvetica, sans-serif;FONT-SIZE:12px;" class="Apple-style-span"&gt;&amp;nbsp;I will start to post this stuff soon :)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;BORDER-COLLAPSE:separate;FONT:16px &amp;#39;Times New Roman&amp;#39;;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;" class="Apple-style-span"&gt;&lt;span style="FONT-FAMILY:Arial, Helvetica, sans-serif;FONT-SIZE:12px;" class="Apple-style-span"&gt;C&amp;amp;C Welcome...&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://xna-uk.net/aggbug.aspx?PostID=3045" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/xna-uk/RandomChaos/~4/2Bog3Tunqnw" height="1" width="1"/&gt;</description><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Ray+Picking/default.aspx">Ray Picking</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Multi-touch/default.aspx">Multi-touch</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Windows7/default.aspx">Windows7</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/DXTop/default.aspx">DXTop</category><feedburner:origLink>http://xna-uk.net/blogs/randomchaos/archive/2010/02/05/dxtop-now-with-windows7-multi-touch-and-ray-picking.aspx</feedburner:origLink></item><item><title>Programming in C# with XNA – Object Orientated Basics</title><link>http://feedproxy.google.com/~r/xna-uk/RandomChaos/~3/VpYA5CvUeII/programming-in-c-with-xna-object-orientated-basics.aspx</link><pubDate>Mon, 01 Feb 2010 08:51:00 GMT</pubDate><guid isPermaLink="false">cc259236-b685-459d-9e21-6c78c60b874c:3023</guid><dc:creator>Nemo Krad</dc:creator><slash:comments>5</slash:comments><wfw:commentRss>http://xna-uk.net/blogs/randomchaos/rsscomments.aspx?PostID=3023</wfw:commentRss><comments>http://xna-uk.net/blogs/randomchaos/archive/2010/02/01/programming-in-c-with-xna-object-orientated-basics.aspx#comments</comments><description>&lt;p&gt;We now have some of the basics under our belt, we can create variables, we can assign values to them and make conditional decisions on our code. We are now going to look at the Object Orientated side of Programming (&lt;a href="http://en.wikipedia.org/wiki/Object-oriented_programming"&gt;OOP&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What is OOP?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In as simple terms as I can muster, it’s a way of structuring our data, we can take our variables and put them in an &lt;a href="http://msdn.microsoft.com/en-us/library/ms173110.aspx"&gt;Object&lt;/a&gt;. “But Why?” I hear you ask… Well, it’s a great way of structuring your programs so that they resemble more obvious entities, for example, in the last post we created a number of variables, player name, score, lives etc… Rather than have a load of disbanded variables roaming about our game code we can put these variables into a single Object and we could call that object Player. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How to define an Object&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To define an object we are going to use a ‘&lt;a href="http://msdn.microsoft.com/en-us/library/x9afc042.aspx"&gt;class&lt;/a&gt;’. I think a good way to think of a ‘class’ is to see it as a blueprint of your Object. If we were to create a more complex Object than a player, lest say a Vehicle then we need to think about what a Vehicle will need, so, for starters it will need an engine, a fuel tank, a navigation system to turn, accelerate and break. As a basic vehicle goes, that’s pretty much all we need. So a definition of a vehicle class could look like this:&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:c30c3bbf-ad3a-429a-9e25-e9609b953345" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;BaseVehicle&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;BaseEngine&lt;/span&gt; Engine;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;BaseFuelTank&lt;/span&gt; FuelTank;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;BaseNavSystem&lt;/span&gt; NavSystem;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;Vector3&lt;/span&gt; Velocity;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;Vector3&lt;/span&gt; Acceleration;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; BaseVehicle()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Engine = &lt;span style="COLOR:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;BaseEngine&lt;/span&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FuelTank = &lt;span style="COLOR:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;BaseFuelTank&lt;/span&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NavSystem = &lt;span style="COLOR:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;BaseNavSystem&lt;/span&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;To add a new class to the project, right click on the project name (RCProgrammingTutorial) select ‘Add’ then ‘Class’ from the drop down menu.&lt;/p&gt;
&lt;p&gt;You can see in our class we contain other objects here, BaseEngine, BaseFuelTank and BaseNavSystem, Velocity (we need to know what direction and speed we are heading) and Acceleration. You can also see what is called a ‘&lt;a href="http://msdn.microsoft.com/en-us/library/ace5hbzh.aspx"&gt;constructor&lt;/a&gt;’ (ctor). This is used to set up our member objects so they are ready to use. You don’t have to create a constructor, but it can help if you have member objects you want initialized when you create an instance of the object.&lt;/p&gt;
&lt;p&gt;As I am sure you can imagine, we could take this example a long way, there are lots more things a vehicle needs, but this help show the basic layout of a class and the sort of things you need to think about when creating them. So how will our Player class look?&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:fb7c616f-d4d9-4105-8aaf-4321522ee29b" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;Player&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;string&lt;/span&gt; playerName;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; score;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; Player(&lt;span style="COLOR:#0000ff;"&gt;string&lt;/span&gt; name)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;playerName = name;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;score = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;We have defined the Player class with two members playerName and score. We have also created a constructor with a parameter of string name, this means when we create an instance of the object we can load the playerName variable at the same time. We have also defined the members as ‘&lt;a href="http://msdn.microsoft.com/en-us/library/bcd5672a(VS.71).aspx"&gt;protected&lt;/a&gt;’, I will explain this a bit more in the section &lt;strong&gt;Inheritance&lt;/strong&gt;, but in essence, the protected &lt;a href="http://msdn.microsoft.com/en-us/library/wxh6fsc7(VS.71).aspx"&gt;access modifier&lt;/a&gt; means that only this class can see this variable. So it has restricted the ‘scope’ of this variable to this class, which means that when we create an instance of the object, we can’t access the variables, “Why would we want to do that!!” I hear you shout, well this is a form of encapsulation..&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Encapsulation&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Sometimes we don’t want to give full access to our member variables or we may want to do some extra processing when member variables are accessed or set and this can be done with ‘&lt;a href="http://www.dotnetspark.com/kb/773-what-is-encapsulation.aspx"&gt;encapsulation&lt;/a&gt;’. So, how do we give the outside world access to those protected or &lt;a href="http://msdn.microsoft.com/en-us/library/st6sy9xe.aspx"&gt;private&lt;/a&gt; member variables?&amp;nbsp; With &lt;a href="http://msdn.microsoft.com/en-us/library/x9fsa0sw(VS.80).aspx"&gt;Properties&lt;/a&gt; or functions. Personally I prefer to use properties, but in some cases you will need to use functions to do this depending on the kind of actions you are trying to impose. How do we set up properties then, like this:&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:e415a6f6-d1a2-401d-9b4b-2e06fc43b9ac" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;string&lt;/span&gt; PlayerName&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;get&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;return&lt;/span&gt; playerName;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;set&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Code to detect if bad language has bee used&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// ...&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// ...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;playerName = &lt;span style="COLOR:#0000ff;"&gt;value&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; Score&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;get&lt;/span&gt; { &lt;span style="COLOR:#0000ff;"&gt;return&lt;/span&gt; score; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;set&lt;/span&gt; { score = &lt;span style="COLOR:#0000ff;"&gt;value&lt;/span&gt;; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;I have created two properties, one for playerName and one for score, as you can see the layout is different but they both do the same job really, the ‘get’ section allows access to the variable and the set allows the variables content to be changed. As you can see in the set part of the PlayerName property you could have code there to make sure that the players name is not set using bad language, I am sure if you had a global high score table you don’t want any old text going up there… I have also made sure that the properties have a logical name for the member they are the property for, you can see I have named the member variables with camel case and the external property with initial upper case letters, this means I have the same name for the two entities but I can easily distinguish between the two in code.&lt;/p&gt;
&lt;p&gt;The properties are great for this, but what if you wanted to then display a message or indicate to the rest of the program that a bad name was given? You could still use properties and have another variable that indicates if a bad name has been used, the rest of the program could then check this and act accordingly, or you could use a function like this:&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:e5943063-377d-4cbe-89b9-023d5c23ca94" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;bool&lt;/span&gt; SetPlayerName(&lt;span style="COLOR:#0000ff;"&gt;string&lt;/span&gt; name)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;bool&lt;/span&gt; badName = &lt;span style="COLOR:#0000ff;"&gt;false&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Code to detect if bad language has bee used&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// ...&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// ...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;if&lt;/span&gt; (!badName)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;playerName = name;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;return&lt;/span&gt; badName;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;We can now use this method to set the playerName, and the return result can then be used to know if we where successful or not. If you are doing this, what do you think you should do with the code in the constructor?? :)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Inheritance&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We have seen how we can create a definition for the objects we are going to use in our programs and games, but wouldn&amp;#39;t it be nice if we could create some basic building block objects and be able to extend and build a hierarchy of objects from it…? And that’s just what &lt;a href="http://msdn.microsoft.com/en-us/library/ms173149.aspx"&gt;Inheritance&lt;/a&gt; is. Lets go back to our BaseVehilcle class, from this we could create a BaseRoadVehicle class which could look something like this:&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:2d449363-7eda-456c-8eb1-a2c4fce6da84" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;BaseRoadVehicle&lt;/span&gt; : &lt;span style="COLOR:#2b91af;"&gt;BaseVehicle&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; wheels;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; Passengers;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; cargoArea;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; doors;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; BaseRoadVehicle() : &lt;span style="COLOR:#0000ff;"&gt;base&lt;/span&gt;()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;How easy was that! We created a new class of BaseRoadVehicle and inherited (derived) from BaseVehicle, this means that instances of the BaseRoadVehicle automaticaly get the Engine, FuelTank and all the other members of BaseVehicle as well as extending it with Wheels, Passengers, CargoArea and Doors, we could derive again from BaseRoadVehicle and create a BaseRoadBike class where we ensure that Wheels are never greater than 2 and Passengers &amp;gt; 1 and on and on, we can also, at the same time create a BaseWaterVehicle deriving from BaseVehicle or a BaseAirVehicle giving us a hierarchy of vehicle objects.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Polymorphism&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Another awesome feature of OOP is &lt;a href="http://msdn.microsoft.com/en-us/library/ms173152(VS.80).aspx"&gt;Polymorphism&lt;/a&gt;. With this we can change the behavior of the base class methods (but only for this instance of the hierarchy), so for example, with out BaseRoadVehicle class we could have created a SetNumberOfWheels function to alter the number of wheels on a vehicle we could replace this function in our derived BaseRoadBike class by using the new keyword when defining out new method giving us two classes that look like this:&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:dea2095a-78fe-45fd-a8c2-b3cc9756ffdf" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;BaseRoadVehicle&lt;/span&gt; : &lt;span style="COLOR:#2b91af;"&gt;BaseVehicle&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; wheels;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; Passengers;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; cargoArea;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; doors;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; BaseRoadVehicle() : &lt;span style="COLOR:#0000ff;"&gt;base&lt;/span&gt;()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; SetNumberOfWheels(&lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; wheelCount)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wheels = wheelCount;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;return&lt;/span&gt; wheels;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;BaseRoadBike&lt;/span&gt; : &lt;span style="COLOR:#2b91af;"&gt;BaseRoadVehicle&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; BaseRoadBike() : &lt;span style="COLOR:#0000ff;"&gt;base&lt;/span&gt;()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; SetNumberOfWheels(&lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; wheelCount)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;if&lt;/span&gt; (wheelCount != 2)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wheels = 2;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;else&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wheels = wheelCount;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;return&lt;/span&gt; wheels;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Now when an object of the type BaseRoadVehicle uses the SetNumberOfWheels method, the wheels will ALWAYS be set to 2 no matter what number is passed in the wheelCount parameter. But what if we wanted to keep the original functionality of a method and add to it, then we would need to use an override. Lets create a class called BaseRoadBuss when setting wheel numbers for our bus we want them to always be an even number (I am yet to see a buss with an add number of wheels)&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:c639bedb-bc06-4297-9054-a0feed52c8ad" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;BaseRoadVehicle&lt;/span&gt; : &lt;span style="COLOR:#2b91af;"&gt;BaseVehicle&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; wheels;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; Passengers;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; cargoArea;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; doors;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; BaseRoadVehicle() : &lt;span style="COLOR:#0000ff;"&gt;base&lt;/span&gt;()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;virtual&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; SetNumberOfWheels(&lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; wheelCount)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wheels = wheelCount;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;return&lt;/span&gt; wheels;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;BaseRoadBuss&lt;/span&gt; : &lt;span style="COLOR:#2b91af;"&gt;BaseRoadVehicle&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; BaseRoadBuss() : &lt;span style="COLOR:#0000ff;"&gt;base&lt;/span&gt;()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;override&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; SetNumberOfWheels(&lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; wheelCount)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;if&lt;/span&gt; ((wheelCount % 2) != 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wheelCount -= 1;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;base&lt;/span&gt;.SetNumberOfWheels(wheelCount);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;So, we have changed the BaseRoadVehicle method and made it a &lt;a href="http://msdn.microsoft.com/en-us/library/9fkccyh4(VS.80).aspx"&gt;virtual&lt;/a&gt; function, this means that any classes deriving from this class can override this method with there own version of it, which is what we have done in the BaseRoadBuss calss. In this overriden function we make sure that the wheel count is an even number, we then use the base class version of this function to set the wheels variable with the newly corrected value for wheelCount.&lt;/p&gt;
&lt;p&gt;There is a lot to take in in this post, OOP is a huge subject and I recommend you doing more reading on it to get a better handle that what I have given here, this is just the tip of the ice burg as far as OOP goes, but I hope I have given you enough to be getting on with and enough to help you see what we are going to d next….write a basic XNA game&lt;/p&gt;
&lt;p&gt;As ever, if you have ANY questions then please post them here or PM me and I will do my best to help you out. I have put the solution to this post &lt;a href="http://xna-uk.net/files/folders/randomchaos/entry3025.aspx"&gt;here&lt;/a&gt;, it wont do much other than illustrate what we have gone over thus far. Oh, and if you see anything that you think I have worded badly, please let me know and I will correct it ASAP.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://xna-uk.net/blogs/randomchaos/archive/2009/12/08/programming-in-c-with-xna-programming-basics.aspx"&gt;Previous&lt;/a&gt; | Next&lt;/p&gt;&lt;img src="http://xna-uk.net/aggbug.aspx?PostID=3023" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/xna-uk/RandomChaos/~4/VpYA5CvUeII" height="1" width="1"/&gt;</description><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Generic+XNA/default.aspx">Generic XNA</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Tutorial/default.aspx">Tutorial</category><feedburner:origLink>http://xna-uk.net/blogs/randomchaos/archive/2010/02/01/programming-in-c-with-xna-object-orientated-basics.aspx</feedburner:origLink></item><item><title>DXTop</title><link>http://feedproxy.google.com/~r/xna-uk/RandomChaos/~3/ROc9kFM8cdg/dxtop.aspx</link><pubDate>Fri, 29 Jan 2010 23:32:00 GMT</pubDate><guid isPermaLink="false">cc259236-b685-459d-9e21-6c78c60b874c:3019</guid><dc:creator>Nemo Krad</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://xna-uk.net/blogs/randomchaos/rsscomments.aspx?PostID=3019</wfw:commentRss><comments>http://xna-uk.net/blogs/randomchaos/archive/2010/01/29/dxtop.aspx#comments</comments><description>&lt;p&gt;[Go to the site to view embedded media]&lt;/p&gt;
&lt;p&gt;&lt;span style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;BORDER-COLLAPSE:separate;FONT:16px &amp;#39;Times New Roman&amp;#39;;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;" class="Apple-style-span"&gt;&lt;span style="FONT-FAMILY:Arial, Helvetica, sans-serif;FONT-SIZE:12px;" class="Apple-style-span"&gt;So, as I was saying in my earlier &lt;a href="http://xna-uk.net/blogs/randomchaos/archive/2010/01/29/3d-desktop-well-the-start-of-one.aspx"&gt;post&lt;/a&gt;,&amp;nbsp;I can render&amp;nbsp;the app thumbnails on some textured quads, as you can see it is still a little glitchy, need to speed up the screen grab and bitblit, but not sure I can....&lt;br /&gt;&lt;br /&gt;So, putting multi touch support in there is next I guess as well as some nice particle effects for the touch pints as well as some audio ques...&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;BORDER-COLLAPSE:separate;FONT:16px &amp;#39;Times New Roman&amp;#39;;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;" class="Apple-style-span"&gt;&lt;span style="FONT-FAMILY:Arial, Helvetica, sans-serif;FONT-SIZE:12px;" class="Apple-style-span"&gt;I recon I have the makings of a 3D desktop, what do you think...?&lt;br /&gt;&lt;br /&gt;You never know it may turn out useful lol&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://xna-uk.net/aggbug.aspx?PostID=3019" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/xna-uk/RandomChaos/~4/ROc9kFM8cdg" height="1" width="1"/&gt;</description><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/XNA+3.1/default.aspx">XNA 3.1</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Multi-touch/default.aspx">Multi-touch</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/DWM/default.aspx">DWM</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/GDI_2B00_/default.aspx">GDI+</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Windows7/default.aspx">Windows7</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/DXTop/default.aspx">DXTop</category><feedburner:origLink>http://xna-uk.net/blogs/randomchaos/archive/2010/01/29/dxtop.aspx</feedburner:origLink></item><item><title>3D Desktop.....well the start of one...</title><link>http://feedproxy.google.com/~r/xna-uk/RandomChaos/~3/Bjirs9oNw1I/3d-desktop-well-the-start-of-one.aspx</link><pubDate>Fri, 29 Jan 2010 12:10:00 GMT</pubDate><guid isPermaLink="false">cc259236-b685-459d-9e21-6c78c60b874c:3011</guid><dc:creator>Nemo Krad</dc:creator><slash:comments>8</slash:comments><wfw:commentRss>http://xna-uk.net/blogs/randomchaos/rsscomments.aspx?PostID=3011</wfw:commentRss><comments>http://xna-uk.net/blogs/randomchaos/archive/2010/01/29/3d-desktop-well-the-start-of-one.aspx#comments</comments><description>&lt;p&gt;[Go to the site to view embedded media]&lt;/p&gt;
&lt;p&gt;&lt;span style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;BORDER-COLLAPSE:separate;FONT:16px &amp;#39;Times New Roman&amp;#39;;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;" class="Apple-style-span"&gt;&lt;span style="FONT-FAMILY:Arial, Helvetica, sans-serif;FONT-SIZE:12px;" class="Apple-style-span"&gt;I have been playing around with XNA using DWM, GDI and the good old Win32 API&amp;#39;s and think I can create a kind of 3D desktop with them.&lt;br /&gt;&lt;br /&gt;The intention is to also leverage the Windows 7 Multi Touch API as well so you will be able to gesture from one application to the next, extract and inject data from one application to the next, all off my XNA desktop.&lt;br /&gt;&lt;br /&gt;I still have a number of glitches to iron out, and this clip shows the application just taking the current app that is in use and displaying a 2D representation of it in XNA. As you can imagine, now I have an image of a n application, I can now do anything I like with it in XNA.......Cool eh..&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;BORDER-COLLAPSE:separate;FONT:16px &amp;#39;Times New Roman&amp;#39;;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;" class="Apple-style-span"&gt;&lt;span style="FONT-FAMILY:Arial, Helvetica, sans-serif;FONT-SIZE:12px;" class="Apple-style-span"&gt;&amp;nbsp;As ever C&amp;amp;C welcome :)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://xna-uk.net/aggbug.aspx?PostID=3011" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/xna-uk/RandomChaos/~4/Bjirs9oNw1I" height="1" width="1"/&gt;</description><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/XNA+3.1/default.aspx">XNA 3.1</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Multi-touch/default.aspx">Multi-touch</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/DWM/default.aspx">DWM</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/GDI_2B00_/default.aspx">GDI+</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Windows7/default.aspx">Windows7</category><feedburner:origLink>http://xna-uk.net/blogs/randomchaos/archive/2010/01/29/3d-desktop-well-the-start-of-one.aspx</feedburner:origLink></item><item><title>XNA Focused ‘X48’ Conference Announced</title><link>http://feedproxy.google.com/~r/xna-uk/RandomChaos/~3/rV1lCXS5tEQ/xna-focused-x48-conference-announced.aspx</link><pubDate>Thu, 14 Jan 2010 09:42:00 GMT</pubDate><guid isPermaLink="false">cc259236-b685-459d-9e21-6c78c60b874c:2998</guid><dc:creator>Nemo Krad</dc:creator><slash:comments>4</slash:comments><wfw:commentRss>http://xna-uk.net/blogs/randomchaos/rsscomments.aspx?PostID=2998</wfw:commentRss><comments>http://xna-uk.net/blogs/randomchaos/archive/2010/01/14/xna-focused-x48-conference-announced.aspx#comments</comments><description>&lt;p&gt;Just came across &lt;a href="http://www.edge-online.com/news/xna-focused-%E2%80%98x48%E2%80%99-conference-announced"&gt;this&lt;/a&gt; in &lt;a title="Edge" href="http://xna-uk.net/controlpanel/blogs/Edge-onlone.com"&gt;Edge-online.com&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;So, if any of you readers are taking part in either the &lt;a href="http://x48birmingham.eventbrite.com/"&gt;Birmingham&lt;/a&gt; or &lt;a href="http://x48huddersfield.eventbrite.com/"&gt;Hudersfield&lt;/a&gt; event, it would be great to hear from you. Let us know how the event went, how you did and what you gaiend from the experience.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Good luck to all those entering :)&lt;/p&gt;&lt;img src="http://xna-uk.net/aggbug.aspx?PostID=2998" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/xna-uk/RandomChaos/~4/rV1lCXS5tEQ" height="1" width="1"/&gt;</description><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Events/default.aspx">Events</category><feedburner:origLink>http://xna-uk.net/blogs/randomchaos/archive/2010/01/14/xna-focused-x48-conference-announced.aspx</feedburner:origLink></item><item><title>Blacksun Water As A Post Process</title><link>http://feedproxy.google.com/~r/xna-uk/RandomChaos/~3/oplVyY0oNNM/blacksun-water-as-a-post-process.aspx</link><pubDate>Wed, 23 Dec 2009 20:31:00 GMT</pubDate><guid isPermaLink="false">cc259236-b685-459d-9e21-6c78c60b874c:2949</guid><dc:creator>Nemo Krad</dc:creator><slash:comments>11</slash:comments><wfw:commentRss>http://xna-uk.net/blogs/randomchaos/rsscomments.aspx?PostID=2949</wfw:commentRss><comments>http://xna-uk.net/blogs/randomchaos/archive/2009/12/23/blacksun-water-as-a-post-process.aspx#comments</comments><description>&lt;p&gt;&lt;span style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;BORDER-COLLAPSE:separate;FONT:16px &amp;#39;Times New Roman&amp;#39;;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;" class="Apple-style-span"&gt;&lt;span style="FONT-FAMILY:Arial, Helvetica, sans-serif;WHITE-SPACE:pre-wrap;FONT-SIZE:12px;" class="Apple-style-span"&gt;[Go to the site to view embedded media]&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;BORDER-COLLAPSE:separate;FONT:16px &amp;#39;Times New Roman&amp;#39;;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;" class="Apple-style-span"&gt;&lt;span style="FONT-FAMILY:Arial, Helvetica, sans-serif;WHITE-SPACE:pre-wrap;FONT-SIZE:12px;" class="Apple-style-span"&gt;OK, my mate Dave found an awesome article on gamedev.net, it was describing how to render water without any geom by doing it as a post process. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;BORDER-COLLAPSE:separate;FONT:16px &amp;#39;Times New Roman&amp;#39;;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;" class="Apple-style-span"&gt;&lt;span style="FONT-FAMILY:Arial, Helvetica, sans-serif;WHITE-SPACE:pre-wrap;FONT-SIZE:12px;" class="Apple-style-span"&gt;Here is my attempt at it so far. I still have much to do, bits to fix and add in, but I think it is looking OK now. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;BORDER-COLLAPSE:separate;FONT:16px &amp;#39;Times New Roman&amp;#39;;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;" class="Apple-style-span"&gt;&lt;span style="FONT-FAMILY:Arial, Helvetica, sans-serif;WHITE-SPACE:pre-wrap;FONT-SIZE:12px;" class="Apple-style-span"&gt;If you want to have a look at the gamedev.net article you can find it &lt;a href="http://www.gamedev.net/reference/programming/features/ppWaterRender"&gt;here&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;BORDER-COLLAPSE:separate;FONT:16px &amp;#39;Times New Roman&amp;#39;;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;" class="Apple-style-span"&gt;&lt;span style="FONT-FAMILY:Arial, Helvetica, sans-serif;WHITE-SPACE:pre-wrap;FONT-SIZE:12px;" class="Apple-style-span"&gt;Probably my last post for this year, in the new year, as well as continuing the Programming set of posts&amp;nbsp;I will start to post what I have been doing with the Blacksun Engine, from the Asset manager to instancing, the deferred lighting and this water psot process.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;BORDER-COLLAPSE:separate;FONT:16px &amp;#39;Times New Roman&amp;#39;;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;" class="Apple-style-span"&gt;&lt;span style="FONT-FAMILY:Arial, Helvetica, sans-serif;WHITE-SPACE:pre-wrap;FONT-SIZE:12px;" class="Apple-style-span"&gt;Merry Christmas and a Happy new year :D&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://xna-uk.net/aggbug.aspx?PostID=2949" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/xna-uk/RandomChaos/~4/oplVyY0oNNM" height="1" width="1"/&gt;</description><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Terrain/default.aspx">Terrain</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Water/default.aspx">Water</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Generic+XNA/default.aspx">Generic XNA</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Post+Processing/default.aspx">Post Processing</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/2D+Pixel+Shaders/default.aspx">2D Pixel Shaders</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Lighting/default.aspx">Lighting</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/XNA+3.1/default.aspx">XNA 3.1</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Blacksun/default.aspx">Blacksun</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Deferred+Render/default.aspx">Deferred Render</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Directional+Lights/default.aspx">Directional Lights</category><feedburner:origLink>http://xna-uk.net/blogs/randomchaos/archive/2009/12/23/blacksun-water-as-a-post-process.aspx</feedburner:origLink></item><item><title>Blacksun Terrain Systems</title><link>http://feedproxy.google.com/~r/xna-uk/RandomChaos/~3/_XP6A5y4sv4/blacksun-terrain-systems.aspx</link><pubDate>Fri, 18 Dec 2009 14:23:00 GMT</pubDate><guid isPermaLink="false">cc259236-b685-459d-9e21-6c78c60b874c:2935</guid><dc:creator>Nemo Krad</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://xna-uk.net/blogs/randomchaos/rsscomments.aspx?PostID=2935</wfw:commentRss><comments>http://xna-uk.net/blogs/randomchaos/archive/2009/12/18/blacksun-terrain-systems.aspx#comments</comments><description>&lt;p&gt;&lt;span style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;BORDER-COLLAPSE:separate;FONT:16px &amp;#39;Times New Roman&amp;#39;;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;" class="Apple-style-span"&gt;&lt;span style="FONT-FAMILY:Arial, Helvetica, sans-serif;WHITE-SPACE:pre-wrap;FONT-SIZE:12px;" class="Apple-style-span"&gt;[Go to the site to view embedded media]&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;BORDER-COLLAPSE:separate;FONT:16px &amp;#39;Times New Roman&amp;#39;;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;" class="Apple-style-span"&gt;&lt;span style="FONT-FAMILY:Arial, Helvetica, sans-serif;WHITE-SPACE:pre-wrap;FONT-SIZE:12px;" class="Apple-style-span"&gt;I have started to move some old and new stuff into the engine, in this clip you can see the start of my new terrain system. It&amp;#39;s based on GeoClip mapping, but at the moment I am just brute forcing the terrain. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;BORDER-COLLAPSE:separate;FONT:16px &amp;#39;Times New Roman&amp;#39;;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;" class="Apple-style-span"&gt;&lt;span style="FONT-FAMILY:Arial, Helvetica, sans-serif;WHITE-SPACE:pre-wrap;FONT-SIZE:12px;" class="Apple-style-span"&gt;All the calcs for the terrain are done on the GPU with the exception of the vert X and Z coord, everything else, the normals, height, tangent data, texture weights etc are all on the GPU. Gives me pretty economical large terrain :) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;BORDER-COLLAPSE:separate;FONT:16px &amp;#39;Times New Roman&amp;#39;;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;" class="Apple-style-span"&gt;&lt;span style="FONT-FAMILY:Arial, Helvetica, sans-serif;WHITE-SPACE:pre-wrap;FONT-SIZE:12px;" class="Apple-style-span"&gt;Oh, spot the error in the clip if you can :) If you spot it I&amp;#39;ll tell you how I corrected it....&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://xna-uk.net/aggbug.aspx?PostID=2935" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/xna-uk/RandomChaos/~4/_XP6A5y4sv4" height="1" width="1"/&gt;</description><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Terrain/default.aspx">Terrain</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Generic+XNA/default.aspx">Generic XNA</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Lighting/default.aspx">Lighting</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/XNA+3.1/default.aspx">XNA 3.1</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Instancing/default.aspx">Instancing</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Blacksun/default.aspx">Blacksun</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Deferred+Render/default.aspx">Deferred Render</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Directional+Lights/default.aspx">Directional Lights</category><feedburner:origLink>http://xna-uk.net/blogs/randomchaos/archive/2009/12/18/blacksun-terrain-systems.aspx</feedburner:origLink></item><item><title>Blacksun Post Processing</title><link>http://feedproxy.google.com/~r/xna-uk/RandomChaos/~3/bRfAH7FicCs/blacksun-post-processing.aspx</link><pubDate>Wed, 16 Dec 2009 23:21:00 GMT</pubDate><guid isPermaLink="false">cc259236-b685-459d-9e21-6c78c60b874c:2926</guid><dc:creator>Nemo Krad</dc:creator><slash:comments>3</slash:comments><wfw:commentRss>http://xna-uk.net/blogs/randomchaos/rsscomments.aspx?PostID=2926</wfw:commentRss><comments>http://xna-uk.net/blogs/randomchaos/archive/2009/12/16/blacksun-post-processing.aspx#comments</comments><description>&lt;p&gt;[Go to the site to view embedded media]&lt;/p&gt;
&lt;p&gt;&lt;span style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;BORDER-COLLAPSE:separate;FONT:16px &amp;#39;Times New Roman&amp;#39;;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;" class="Apple-style-span"&gt;&lt;span style="FONT-FAMILY:Arial, Helvetica, sans-serif;FONT-SIZE:12px;" class="Apple-style-span"&gt;I have just added in my post processing framework, and I am shocked to find it does not dent the FPS one bit!&lt;br /&gt;&lt;br /&gt;In this clip you can see bloom, DoF, Radial Blur and a few others, I have had 13 post process effects and still not drop in performance.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="WIDOWS:2;TEXT-TRANSFORM:none;TEXT-INDENT:0px;BORDER-COLLAPSE:separate;FONT:16px &amp;#39;Times New Roman&amp;#39;;WHITE-SPACE:normal;ORPHANS:2;LETTER-SPACING:normal;WORD-SPACING:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;" class="Apple-style-span"&gt;&lt;span style="FONT-FAMILY:Arial, Helvetica, sans-serif;FONT-SIZE:12px;" class="Apple-style-span"&gt;As ever C&amp;amp;C welcome..&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://xna-uk.net/aggbug.aspx?PostID=2926" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/xna-uk/RandomChaos/~4/bRfAH7FicCs" height="1" width="1"/&gt;</description><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Post+Processing/default.aspx">Post Processing</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/XNA+3.1/default.aspx">XNA 3.1</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Instancing/default.aspx">Instancing</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Blacksun/default.aspx">Blacksun</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Deferred+Render/default.aspx">Deferred Render</category><feedburner:origLink>http://xna-uk.net/blogs/randomchaos/archive/2009/12/16/blacksun-post-processing.aspx</feedburner:origLink></item><item><title>Programming in C# with XNA – Programming Basics</title><link>http://feedproxy.google.com/~r/xna-uk/RandomChaos/~3/GogVUjHR6t0/programming-in-c-with-xna-programming-basics.aspx</link><pubDate>Tue, 08 Dec 2009 14:42:00 GMT</pubDate><guid isPermaLink="false">cc259236-b685-459d-9e21-6c78c60b874c:2894</guid><dc:creator>Nemo Krad</dc:creator><slash:comments>3</slash:comments><wfw:commentRss>http://xna-uk.net/blogs/randomchaos/rsscomments.aspx?PostID=2894</wfw:commentRss><comments>http://xna-uk.net/blogs/randomchaos/archive/2009/12/08/programming-in-c-with-xna-programming-basics.aspx#comments</comments><description>&lt;p&gt;It’s been far too long since my last post on this set, but hope this will help make up for it. In this post we are going to cover some programming basics as I see them in this context. I am going break the concepts or areas up into three sections, “What is it?” or “What are they?”, “What does it/they look like?”, and “How do I use it/them?”. In the first section I will describe what the concept is, so no code, just a description of it. I will probably use quite visual terms so you can “see” what it is, rather than just giving you just the concept. Next, we will have a look at the concept, a look at the source code, I will then describe it’s components. and finally I will show how the concept is used and describe the kind of areas you would use it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font size="4"&gt;Compiler Basics&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What is a computer program?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Well, simply it is a list of instructions that the computer will obey. I think an important thing to remember is that the computer will carry out these instructions to the letter, it will make no assumptions of what you intend your instructions to do, it will do EXACTLY what you tell it to do. &lt;/p&gt;
&lt;p&gt;So we now know that a program is a list of instructions for your computer to carry out, but how do we give the computer these instructions? Well that’s where a programming language comes in like C#. Now, as I am sure you are aware, your computer does not understand English, or what ever your native tongue is, and in fact it doesn’t even understand the programming language. This is what the compiler is for, it takes the instructions you have written in C# and ‘compiles’ it into a language the machine understands directly and is able to act on. This compiled code (in the case of a windows application) is a .exe file. Now the compiler we will be using is Visual Studio and once we have written our instructions we can get it to compile our code and we can then play our game.&lt;/p&gt;
&lt;p&gt;Now with this in mind, the project we have just created already has instructions as we can see in the project we have a Program.cs and Game1.cs file, so without even entering a new line of code we can compile and execute this code. At the top of your IDE in the menu you have an option called ‘Build’, move your mouse over it and a number of options will appear.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://xna-uk.net/blogs/randomchaos/RCBuild_3F2A6CC9.jpg"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:block;FLOAT:none;MARGIN-LEFT:auto;BORDER-TOP:0px;MARGIN-RIGHT:auto;BORDER-RIGHT:0px;" title="RCBuild" border="0" alt="RCBuild" src="http://xna-uk.net/blogs/randomchaos/RCBuild_thumb_5A9F48FF.jpg" width="653" height="353" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Click the ‘Build Solution’ option, as you can see you can also just press F6. Now if you are quick you should see the compiler telling you it has started the build process in the bottom left corner.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://xna-uk.net/blogs/randomchaos/RCBuildStarted_72760A58.jpg"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:block;FLOAT:none;MARGIN-LEFT:auto;BORDER-TOP:0px;MARGIN-RIGHT:auto;BORDER-RIGHT:0px;" title="RCBuildStarted" border="0" alt="RCBuildStarted" src="http://xna-uk.net/blogs/randomchaos/RCBuildStarted_thumb_23291204.jpg" width="441" height="75" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;And once done, it will tell you it has completed. Now there is a much better way of seeing what goes on during the build process,this is important to know as you are going to write some code that just wont build for a number of reasons, most common of which you will make typo’s that will stop the build process. To get more information return to the menu at the top, click ‘View’ and then click ‘Output’, again, there is a short cut, you can open this view by pressing Ctrl+W then O&lt;/p&gt;
&lt;p&gt;&lt;a href="http://xna-uk.net/blogs/randomchaos/RCViewOutput_13A60035.jpg"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:block;FLOAT:none;MARGIN-LEFT:auto;BORDER-TOP:0px;MARGIN-RIGHT:auto;BORDER-RIGHT:0px;" title="RCViewOutput" border="0" alt="RCViewOutput" src="http://xna-uk.net/blogs/randomchaos/RCViewOutput_thumb_6CF773E7.jpg" width="252" height="379" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;You should now have the output window open, and you should be able to see messages from the build process which should now look like this&lt;/p&gt;
&lt;p&gt;&lt;a href="http://xna-uk.net/blogs/randomchaos/RCOutputWindow_04AEAB4E.jpg"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:block;FLOAT:none;MARGIN-LEFT:auto;BORDER-TOP:0px;MARGIN-RIGHT:auto;BORDER-RIGHT:0px;" title="RCOutputWindow" border="0" alt="RCOutputWindow" src="http://xna-uk.net/blogs/randomchaos/RCOutputWindow_thumb_3C80EF71.jpg" width="628" height="275" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Now that we have compiled our project, lets run it! So, back to the menu, click ‘Debug’ then click ‘Start Debugging’, and again there is a short cut, F5. And HEY PRESTO! We have a game running!! OK, it’s not Gears Of War or Halo 3, but it’s a start… Also, if you look back at the output window you will see a new set of messages :)&lt;/p&gt;
&lt;p&gt;You now know how to build and execute the project, so I think it’s more than about time we start learning how to code.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font size="4"&gt;Variables&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What are they?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I think the best way to think of these are as box’s that we can put things in, for example, if you have a shoe box, you would use that to put shoes in, in the real world you can put what ever fits into a shoe box, but for the purposes of this tutorial, only what the box was made for can be stored. So, in our game, we will want to store the players score, so we will need to use a variable to do this or the players name, lives, health etc..&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What do they look like?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Now in C# we have a lot of variable types, in other words lots of kinds of box’s to put things in.&lt;strong&gt; &lt;/strong&gt;Here are a few of them:&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:3a51a933-9bc5-4e5e-b602-0054bbc63497" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;char&lt;/span&gt; c;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; i;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;byte&lt;/span&gt; b;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;string&lt;/span&gt; s;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;object&lt;/span&gt; o;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;Vector2&lt;/span&gt; v2;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;Matrix&lt;/span&gt; m;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;There are many, many more and you can create your own. The type of variable you choose to use is important, in the list above there is a ‘&lt;a href="http://msdn.microsoft.com/en-us/library/x9h8tsay.aspx"&gt;char&lt;/a&gt;’, this is used to store a single character, an ‘&lt;a href="http://msdn.microsoft.com/en-us/library/5kzh1b5w(VS.80).aspx"&gt;int&lt;/a&gt;’, this will store an integer (a whole number, a number without a decimal point), a ‘&lt;a href="http://msdn.microsoft.com/en-us/library/5bdb6693(VS.80).aspx"&gt;byte&lt;/a&gt;’, this will store a number in the range of 0 to 255, a ‘&lt;a href="http://msdn.microsoft.com/en-us/library/362314fe.aspx"&gt;string&lt;/a&gt;’, this is used for storing words and sentences; in fact this post it just a load of strings, an ‘&lt;a href="http://msdn.microsoft.com/en-us/library/9kkx3h3c.aspx"&gt;object&lt;/a&gt;’, now this one is a bit special and can store anything but you should avoid using them :), a ‘&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.vector2.aspx"&gt;Vector2&lt;/a&gt;’ this stores coordinates, like on a map, and finally a ‘&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.matrix.aspx"&gt;Matrix&lt;/a&gt;’, we probably wont cover these here, but I put them in so you know of them. As you can see the variables here are made up from two parts, the type and the name of the variable. You have probably noticed that some types are in blue and others in, well a lighter blue, that is because the later two are structures, we wont cover this now, just remember they are a type.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How do I use them?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;As I have already mentioned we use variables to store information (data), so lets look at the two examples I gave above, the players score and the players name, so I would put the players score in an ‘int’ and his name in a ‘string’. It’s important to choose the right variable types to store the data we want, for example, I could have used the ‘byte’ type to store the plyers score, but our score could then only go up to 255, and I am sure we will want more range than that..&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:1c969717-be53-49b2-a763-6ae403dea088" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;string&lt;/span&gt; playerName;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; playerScore;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;The naming of our variable names is important too, we should give them sensible and logical names that describe there use, so in the case of our player score and player name I have called them just that, ‘playerName’ and ‘playerScore’, you can also see I have not made the first letter a capital (upper case) this is because I use a variable naming convention called &lt;a href="http://en.wikipedia.org/wiki/CamelCase"&gt;CamelCase&lt;/a&gt;, now we wont use this in all naming instances, but for local variables (we will discuss local variables next) we will.&lt;/p&gt;
&lt;p&gt;This is called ‘declaring’ variables, and when I declare my variables I like to set their values so I know there content from the start (might be the old C programmer in me) and we do it like this:&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:32504650-c88d-4147-9701-5fcb8977dd5b" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;string&lt;/span&gt; playerName = &lt;span style="COLOR:#0000ff;"&gt;string&lt;/span&gt;.Empty;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; playerScore = 0;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;So, in those two lines of code we have created two variables (box’s), logically named them and given them values (put data in the box’s)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font size="4"&gt;Scope&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What is it?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Scope is the ‘visibility’&amp;nbsp; of our variables, what parts of our program can see and use them. The scope of a variable is within the ‘{ }’ braces that is is declared within. We can also add ‘&lt;a href="http://msdn.microsoft.com/en-us/library/wxh6fsc7(VS.71).aspx"&gt;Access Modifiers&lt;/a&gt;’ to a variable to extend it’s scope.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What does it look like? &amp;amp; &lt;strong&gt;How do I use it?&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Here I have put in our two new variables at the top of our Game1 class, I have also created a new variable in the constructor (I’ll get onto constructors later) called ‘enemyName’&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:7dcd2ea5-f5c6-4547-ab2b-a672d873d07f" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;Game1&lt;/span&gt; : Microsoft.Xna.Framework.&lt;span style="COLOR:#2b91af;"&gt;Game&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;GraphicsDeviceManager&lt;/span&gt; graphics;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#2b91af;"&gt;SpriteBatch&lt;/span&gt; spriteBatch;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;string&lt;/span&gt; playerName = &lt;span style="COLOR:#0000ff;"&gt;string&lt;/span&gt;.Empty;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; playerScore = 0;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;public&lt;/span&gt; Game1()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;graphics = &lt;span style="COLOR:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;GraphicsDeviceManager&lt;/span&gt;(&lt;span style="COLOR:#0000ff;"&gt;this&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Content.RootDirectory = &lt;span style="COLOR:#a31515;"&gt;&amp;quot;Content&amp;quot;&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;string&lt;/span&gt; enemyName = &lt;span style="COLOR:#0000ff;"&gt;string&lt;/span&gt;.Empty;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;playerName = &lt;span style="COLOR:#a31515;"&gt;&amp;quot;Player 1&amp;quot;&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;playerScore = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#808080;"&gt;///&lt;/span&gt;&lt;span style="COLOR:#008000;"&gt; &lt;/span&gt;&lt;span style="COLOR:#808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#808080;"&gt;///&lt;/span&gt;&lt;span style="COLOR:#008000;"&gt; Allows the game to perform any initialization it needs to before starting to run.&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#808080;"&gt;///&lt;/span&gt;&lt;span style="COLOR:#008000;"&gt; This is where it can query for any required services and load any non-graphic&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#808080;"&gt;///&lt;/span&gt;&lt;span style="COLOR:#008000;"&gt; related content.&amp;nbsp;&amp;nbsp;Calling base.Initialize will enumerate through any components&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#808080;"&gt;///&lt;/span&gt;&lt;span style="COLOR:#008000;"&gt; and initialize them as well.&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#808080;"&gt;///&lt;/span&gt;&lt;span style="COLOR:#008000;"&gt; &lt;/span&gt;&lt;span style="COLOR:#808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;override&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;void&lt;/span&gt; Initialize()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// TODO: Add your initialization logic here&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;enemyName = &lt;span style="COLOR:#a31515;"&gt;&amp;quot;Bad Dude 1&amp;quot;&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;base&lt;/span&gt;.Initialize();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;So, our first two variables have a scope that is visible throughout the whole of the class and so can be accessed and used in the constructor for Game1, where we set the players name to be “Player 1” and ensure he has a score of 0. We also created a new variable for the name of our enemy, the scope of this variable is ONLY visible in the constructor and so where I have tried to use it in the Initialize method will cause a compile error (Hit F5 and see)&lt;/p&gt;
&lt;p&gt;I will go onto access modifiers when we look at creating our own types later.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font size="4"&gt;Decision Making &amp;amp; Flow Control&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What is it?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This concept is where the actual game mechanics reside, it’s how we will know when to increment the score, reduce the players lives or end the game. In C# we have a few devices at our disposal, the ‘if’ statement, ‘switch’ and a variety of mechanisms to loop the flow and with in them methods to control the loops.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What do they look like? &amp;amp; How do I use them?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;With the ‘if’ statement we can decide if we want to execute a block of code or not.&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:836eeb1b-2e92-46c8-b8d5-df1e61d7d9d9" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;if&lt;/span&gt; (playerLives == 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Code to end the game here ...&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;So, with this ‘if’ statement I am saying, if the variable playerLives is 0 then I want to run the code that will do my end game stuff. Notice I am using ‘==’ to check if the variable is ‘equal to’ 0 (checking the contents of the box) and not setting the variable to the value of 0 (putting 0 in the box).&lt;/p&gt;
&lt;p&gt;With the ‘if’ statement also comes the ‘else’, this can be used to execute code should the ‘if’ condition fail.&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:667a64e4-b20d-4173-9729-6dffbc6d00e1" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;if&lt;/span&gt; (playerHealth &amp;lt;= 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;playerLives--;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;else&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;if&lt;/span&gt;(playerHealth != 100)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;playerHealth += .5f;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Here we have a slightly more complicated ‘if’ statement, if the players health is less than or equal to 0 then the player loses a life, ‘else’ we are the checking if the players health is not (!) equal to 100 then we add .5 to it. We have seen a few conditional statements now what other statements are there? Well here is a list of all the logical operators.&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:f45739f3-ac5b-417a-ba16-7666e5d75f67" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;==&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;variable equal to&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;variable greater then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;variable greater than or equal to&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;variable less than&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;variable less than or equal to&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;!&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;variable not&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;!=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;variable not equal to&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;We can also check more than one condition in an if statement by using the ‘&amp;amp;&amp;amp;’ (and) and ‘||’ (or) operators like this&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:8b3320e8-d197-4f94-8032-80c66cc75ae0" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;if&lt;/span&gt; (playerScore &amp;gt;= 1000 &amp;amp;&amp;amp; playerScore &amp;lt;= 1500 &amp;amp;&amp;amp; !hadExtraLife)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hadExtraLife = &lt;span style="COLOR:#0000ff;"&gt;true&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;playerLives++;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;What we are doing here is saying if the players score is greater than or equal to 1000 and the players score is less than or equal to 1500 (players score between 1000 and 1500) and we have not already given an extra life, then we set the hadExtraLife variable to true and add one to the players life counter.&lt;/p&gt;
&lt;p&gt;The ‘switch’ statement is not so flexible but you can literally use it to switch between conditions&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:bcc4e70a-4c24-4311-b1be-73a321a2421c" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;switch&lt;/span&gt; (playerScore)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;case&lt;/span&gt; 500:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;playerLives++;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;case&lt;/span&gt; 1000:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;playerLives++;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;case&lt;/span&gt; 1500:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;playerLives++;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;case&lt;/span&gt; 2000:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;playerLives++;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;What this block of code will do is add one to the players lives if there score is equal to 500,1000, 1500 or 2000. You will also see in here a command called ‘break’ this will be covered more in the loops.&lt;/p&gt;
&lt;p&gt;So a loop is a way of executing a block of code multiple times, there are again a number of methods at our disposal to do this, the ‘while’, ‘do while’ and ‘for’ loops, so lets have a look at them (there is also a ‘foreach’ but again we will cover that later)&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:30c51c03-46b8-4029-acde-88121f43bbdd" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;while&lt;/span&gt; (playerLives &amp;gt; 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Do some stuff over and over..&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;do&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Do some stuff over and over..&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;span style="COLOR:#0000ff;"&gt;while&lt;/span&gt; (playerLives &amp;gt; 0);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;for&lt;/span&gt; (&lt;span style="COLOR:#0000ff;"&gt;int&lt;/span&gt; i = 0; playerLives &amp;gt; 0; i++)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Do some stuff over and over..&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;The ‘while’ loop execute until the condition is no longer met, the players lives are less than or equal to 0, so if the players lives are 0 before we get to star the loop the loop may never execute. The ‘do while’ loop will execute at least once as the condition is not checked until the end of the loop, and again the loop will run until the condition is no longer met. The ‘for’ loop is about the most complex loop we have as we can setup a variable, in this case the ‘int’ i who’s scope will be the ‘for’ loop, a test condition, and then also increment the new variable (and and other for that matter).&lt;/p&gt;
&lt;p&gt;So what happens if something happens in the loop that makes me want to either leave it or return to the top again? Well that’s where ‘break’ and ‘continue’ come in. see the loop below&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:0606ab0f-2773-422c-868c-cec9c8c55b50" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:300px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;while&lt;/span&gt; (playerLives &amp;gt; 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;// Do some stuff over and over..&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;if&lt;/span&gt; (playerScore &amp;gt;= 50)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;continue&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;if&lt;/span&gt; (playerHealth == 1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#0000ff;"&gt;break&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;I guess not the most logical example, but I am using it to show you the mechanism, so in this example, we will continue to execute our loop while the players lives are greater than 0, if the players score is greater or equal to 50 then we will go no further in the loop and return back to the top and start gain, if the players health is equal to 1 then we will exit the loop.&lt;/p&gt;
&lt;p&gt;So, we have dipped out toe into programming, if you are following this set of posts, then please make sure you understand the concepts I am trying to explain here before moving onto the nest post. If you have ANY questions on ANYTHING covered here then please don’t hesitate to ask, either comment here on this post, or PM me and I will do my best to help you out. By all means, google and research any of the topics here for more information on them, there are plenty of resources out there.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://xna-uk.net/blogs/randomchaos/archive/2009/10/14/programming-in-c-with-xna-visual-studio.aspx"&gt;Previous&lt;/a&gt; | &lt;a href="http://xna-uk.net/blogs/randomchaos/archive/2010/02/01/programming-in-c-with-xna-object-orientated-basics.aspx"&gt;Next&lt;/a&gt;&lt;/p&gt;&lt;img src="http://xna-uk.net/aggbug.aspx?PostID=2894" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/xna-uk/RandomChaos/~4/GogVUjHR6t0" height="1" width="1"/&gt;</description><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Generic+XNA/default.aspx">Generic XNA</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Tutorial/default.aspx">Tutorial</category><feedburner:origLink>http://xna-uk.net/blogs/randomchaos/archive/2009/12/08/programming-in-c-with-xna-programming-basics.aspx</feedburner:origLink></item><item><title>XBLIG-UK December 2009</title><link>http://feedproxy.google.com/~r/xna-uk/RandomChaos/~3/CRWgEYRqOcA/xblig-uk-december-2009.aspx</link><pubDate>Tue, 08 Dec 2009 13:44:35 GMT</pubDate><guid isPermaLink="false">cc259236-b685-459d-9e21-6c78c60b874c:2891</guid><dc:creator>Nemo Krad</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://xna-uk.net/blogs/randomchaos/rsscomments.aspx?PostID=2891</wfw:commentRss><comments>http://xna-uk.net/blogs/randomchaos/archive/2009/12/08/xblig-uk-december-2009.aspx#comments</comments><description>&lt;p&gt;Well what a great day that was! I gave my first public talk on XNA at the &lt;a href="http://www.xblig-uk.net"&gt;XBLIG-UK&lt;/a&gt; event, not sure if I put too much in, left too much out, but I enjoyed it none the less. It was organized by &lt;a href="http://xna-uk.net/blogs/braindump"&gt;Edward Powel&lt;/a&gt; (our &lt;a href="http://xna-uk.net/members/VeraShackle.aspx"&gt;VeraShackle&lt;/a&gt;) over at the &lt;a href="http://www.nxtgenug.net"&gt;NxtGen UK UG&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;We had talks about the Zune HD from &lt;a href="http://wotudo.net/blogs/wotudo/archive/2009/12/05/xblig-xna-day.aspx"&gt;Paul Foster&lt;/a&gt; a Microsoft Evangialist, myself whittering on about UV mapping in Blender3D (Note to self: must get the new version), then John Hampson with procedural implementation in XNA (check out &lt;a href="http://britonia-game.com"&gt;Britonia&lt;/a&gt;, that’s Johns stuff!), then Dr Nick Hawes on how Academic A.I. could be used in Gaming, Steve Miles great talk on overriding the native SpriteBatch, our very own Dave Bonner from &lt;a href="http://darkomengames.co.uk"&gt;Dark Omen Games&lt;/a&gt; describing the XBLIG publishing process, fellow MVP Rich Costall showing off a child spawned from the mixing of XNA and Silverlight , Salvatore Fileccia from &lt;a href="http://rare.co.uk"&gt;Rare&lt;/a&gt; who went over the good and bad times implementing Physics with &lt;a href="http://banjo-kazooie.com"&gt;Banjo Kazooie&lt;/a&gt;, an awesome talk by Paul Manzotti on the implementation of sound using XACT, and naturally a great talk by &lt;a href="http://xna-uk.net/blogs/braindump"&gt;Edward Powel&lt;/a&gt; on the use of content importers!!&lt;/p&gt;  &lt;p&gt;Yes!! It was a very full day and wass 99.9% glitch free too!&lt;/p&gt;  &lt;p&gt;I think that the NxtGen guys will be putting some pics up and links to all the speakers presentations, the XNA project I used to show the UV mapping will be there as well as my presentation, so you will be able to see how much I left out due to time. They have just put up a pod cast about the day which can be listened to &lt;a href="http://www.nxtgenug.net/downloads/072_NxtGenUG_XNADay.mp3"&gt;here&lt;/a&gt;, now, I as there honest, though you might not know that from the pod cast :P&lt;/p&gt;  &lt;p&gt;If you did attend, let me know what you thought of my talk, it was my first so I am not sure if I left too much out or it all went over peoples heads :) C&amp;amp;C is welcome.&lt;/p&gt;&lt;img src="http://xna-uk.net/aggbug.aspx?PostID=2891" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/xna-uk/RandomChaos/~4/CRWgEYRqOcA" height="1" width="1"/&gt;</description><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Generic+XNA/default.aspx">Generic XNA</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/A.I/default.aspx">A.I</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/HLSL/default.aspx">HLSL</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Physics/default.aspx">Physics</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Dark+Omen+Games/default.aspx">Dark Omen Games</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Talk/default.aspx">Talk</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Event/default.aspx">Event</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/XBLIG-UK/default.aspx">XBLIG-UK</category><feedburner:origLink>http://xna-uk.net/blogs/randomchaos/archive/2009/12/08/xblig-uk-december-2009.aspx</feedburner:origLink></item><item><title>Deferred Shadows...</title><link>http://feedproxy.google.com/~r/xna-uk/RandomChaos/~3/CIx7LyFGrV0/deferred-shadows.aspx</link><pubDate>Sun, 06 Dec 2009 22:53:00 GMT</pubDate><guid isPermaLink="false">cc259236-b685-459d-9e21-6c78c60b874c:2889</guid><dc:creator>Nemo Krad</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://xna-uk.net/blogs/randomchaos/rsscomments.aspx?PostID=2889</wfw:commentRss><comments>http://xna-uk.net/blogs/randomchaos/archive/2009/12/06/deferred-shadows.aspx#comments</comments><description>&lt;p&gt;Yes, it&amp;#39;s still lighting, or is it...!lighting? lol&lt;/p&gt;
&lt;p&gt;Anyway, think I have resolved my deferred shadow mapping issues tonight, well with cone lights at the very least, point light shadows next I think, but think they will be quite expensive. Short clip this one.&lt;/p&gt;
&lt;p&gt;[Go to the site to view embedded media]&lt;/p&gt;
&lt;p&gt;As ever C&amp;amp;C welcome..&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://xna-uk.net/aggbug.aspx?PostID=2889" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/xna-uk/RandomChaos/~4/CIx7LyFGrV0" height="1" width="1"/&gt;</description><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/XNA+3.1/default.aspx">XNA 3.1</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Instancing/default.aspx">Instancing</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Blacksun/default.aspx">Blacksun</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Deferred+Render/default.aspx">Deferred Render</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Shadow+Maps/default.aspx">Shadow Maps</category><feedburner:origLink>http://xna-uk.net/blogs/randomchaos/archive/2009/12/06/deferred-shadows.aspx</feedburner:origLink></item><item><title>Possibly the last clip of deferred lighting</title><link>http://feedproxy.google.com/~r/xna-uk/RandomChaos/~3/TNhPpPMB63c/possibly-the-last-clip-of-deferred-lighting.aspx</link><pubDate>Thu, 03 Dec 2009 21:25:00 GMT</pubDate><guid isPermaLink="false">cc259236-b685-459d-9e21-6c78c60b874c:2885</guid><dc:creator>Nemo Krad</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://xna-uk.net/blogs/randomchaos/rsscomments.aspx?PostID=2885</wfw:commentRss><comments>http://xna-uk.net/blogs/randomchaos/archive/2009/12/03/possibly-the-last-clip-of-deferred-lighting.aspx#comments</comments><description>&lt;p&gt;[Go to the site to view embedded media]&lt;/p&gt;
&lt;p&gt;So, have added cone lights and UV maped the city mesh, my dailema now is, do I write up the next programming post, or put the deferred and instancing render down, if I do the latter then I will want to get animated, deferred, instancing done first. If I have time I will also include &lt;a href="http://mquandt.com/blog/2009/12/light-pre-pass-in-xna-basic-implementation/"&gt;Michael&amp;#39;s Light Pre Pass&lt;/a&gt; technique too!&amp;nbsp;Should be an interesting post :) BUT, I have already started the Programming set of posts, so, I am going to do what they do on the X factor&amp;nbsp;and put it to the public vote....&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Would you like to see the next post on Programming or, animated, deferred instancing?&lt;/p&gt;
&lt;p&gt;I&amp;#39;ll give it untill the new year for you to let me know.... &lt;/p&gt;&lt;img src="http://xna-uk.net/aggbug.aspx?PostID=2885" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/xna-uk/RandomChaos/~4/TNhPpPMB63c" height="1" width="1"/&gt;</description><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/XNA+3.1/default.aspx">XNA 3.1</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Instancing/default.aspx">Instancing</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Blacksun/default.aspx">Blacksun</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Deferred+Render/default.aspx">Deferred Render</category><feedburner:origLink>http://xna-uk.net/blogs/randomchaos/archive/2009/12/03/possibly-the-last-clip-of-deferred-lighting.aspx</feedburner:origLink></item><item><title>Last one for a bit...honest....</title><link>http://feedproxy.google.com/~r/xna-uk/RandomChaos/~3/VseP9js4ZU4/last-one-for-a-bit-honest.aspx</link><pubDate>Sun, 29 Nov 2009 09:53:00 GMT</pubDate><guid isPermaLink="false">cc259236-b685-459d-9e21-6c78c60b874c:2878</guid><dc:creator>Nemo Krad</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://xna-uk.net/blogs/randomchaos/rsscomments.aspx?PostID=2878</wfw:commentRss><comments>http://xna-uk.net/blogs/randomchaos/archive/2009/11/29/last-one-for-a-bit-honest.aspx#comments</comments><description>&lt;p&gt;:D&lt;/p&gt;
&lt;p&gt;[Go to the site to view embedded media]&lt;/p&gt;
&lt;p&gt;C&amp;amp;C Welcome..&lt;/p&gt;&lt;img src="http://xna-uk.net/aggbug.aspx?PostID=2878" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/xna-uk/RandomChaos/~4/VseP9js4ZU4" height="1" width="1"/&gt;</description><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/XNA+3.1/default.aspx">XNA 3.1</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Instancing/default.aspx">Instancing</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Blacksun/default.aspx">Blacksun</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Deferred+Render/default.aspx">Deferred Render</category><feedburner:origLink>http://xna-uk.net/blogs/randomchaos/archive/2009/11/29/last-one-for-a-bit-honest.aspx</feedburner:origLink></item><item><title>Last Post Of The Month...?</title><link>http://feedproxy.google.com/~r/xna-uk/RandomChaos/~3/FPY1fHhDMQk/last-post-of-the-month.aspx</link><pubDate>Thu, 26 Nov 2009 21:31:00 GMT</pubDate><guid isPermaLink="false">cc259236-b685-459d-9e21-6c78c60b874c:2873</guid><dc:creator>Nemo Krad</dc:creator><slash:comments>3</slash:comments><wfw:commentRss>http://xna-uk.net/blogs/randomchaos/rsscomments.aspx?PostID=2873</wfw:commentRss><comments>http://xna-uk.net/blogs/randomchaos/archive/2009/11/26/last-post-of-the-month.aspx#comments</comments><description>&lt;p&gt;Could be, anyway, added deferred point lights. Once I have the Programming posts done I will write this up as a sample, with the instancing too :)&lt;/p&gt;
&lt;p&gt;[Go to the site to view embedded media]&lt;/p&gt;
&lt;p&gt;C&amp;amp;C Welcome :)&lt;/p&gt;&lt;img src="http://xna-uk.net/aggbug.aspx?PostID=2873" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/xna-uk/RandomChaos/~4/FPY1fHhDMQk" height="1" width="1"/&gt;</description><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/XNA+3.1/default.aspx">XNA 3.1</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Instancing/default.aspx">Instancing</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Deferred+Render/default.aspx">Deferred Render</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Directional+Lights/default.aspx">Directional Lights</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Blackssun/default.aspx">Blackssun</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Point+Lights/default.aspx">Point Lights</category><feedburner:origLink>http://xna-uk.net/blogs/randomchaos/archive/2009/11/26/last-post-of-the-month.aspx</feedburner:origLink></item><item><title>Blacksun Engine - Deferred + Instancing</title><link>http://feedproxy.google.com/~r/xna-uk/RandomChaos/~3/ZDqz9vG8VvU/blacksun-engine-deferred-instancing.aspx</link><pubDate>Wed, 25 Nov 2009 23:40:00 GMT</pubDate><guid isPermaLink="false">cc259236-b685-459d-9e21-6c78c60b874c:2872</guid><dc:creator>Nemo Krad</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://xna-uk.net/blogs/randomchaos/rsscomments.aspx?PostID=2872</wfw:commentRss><comments>http://xna-uk.net/blogs/randomchaos/archive/2009/11/25/blacksun-engine-deferred-instancing.aspx#comments</comments><description>&lt;p&gt;Still loads to do on it, but this is where I am with it as of tonight.&lt;/p&gt;
&lt;p&gt;[Go to the site to view embedded media]&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Now, this week I will be practicing my talk and getting ready for the 5th, really looking forward to it, just hope I don&amp;#39;t get stage fright :P&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;As ever C&amp;amp;C welcome..&lt;/p&gt;&lt;img src="http://xna-uk.net/aggbug.aspx?PostID=2872" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/xna-uk/RandomChaos/~4/ZDqz9vG8VvU" height="1" width="1"/&gt;</description><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/XNA+3.1/default.aspx">XNA 3.1</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Instancing/default.aspx">Instancing</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Blacksun/default.aspx">Blacksun</category><category domain="http://xna-uk.net/blogs/randomchaos/archive/tags/Deferred+Render/default.aspx">Deferred Render</category><feedburner:origLink>http://xna-uk.net/blogs/randomchaos/archive/2009/11/25/blacksun-engine-deferred-instancing.aspx</feedburner:origLink></item></channel></rss>
