<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2titles.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemtitles.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>CubaGames</title>
	
	<link>http://www.cubagames.com.br</link>
	<description>Notícias sobre a empresa, ferramentas, tecnologia, tutoriais, games e jogos online</description>
	<pubDate>Wed, 03 Feb 2010 14:54:22 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Cubagames" /><feedburner:info uri="cubagames" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><feedburner:emailServiceId>Cubagames</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Criando Um Jogo em Windows Forms - Parte 6 - Colisão De Borda</title>
		<link>http://feedproxy.google.com/~r/Cubagames/~3/9W6jHmuW7Tc/</link>
		<comments>http://www.cubagames.com.br/criando-um-jogo-em-windows-forms-parte-6-colisao-de-borda/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 13:22:17 +0000</pubDate>
		<dc:creator>Fernando Lorenzon</dc:creator>
		
		<category><![CDATA[CubaGames]]></category>

		<category><![CDATA[C#]]></category>

		<category><![CDATA[Colisão]]></category>

		<category><![CDATA[Desenvolvimento]]></category>

		<category><![CDATA[Jogos]]></category>

		<category><![CDATA[Windows Forms]]></category>

		<category><![CDATA[WinForms Lander]]></category>

		<guid isPermaLink="false">http://www.cubagames.com.br/?p=1532</guid>
		<description>&lt;p style="text-align: justify;"&gt;Neste post, vou mostrar algo bem simples. É a colisão de borda.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;A borda nada mais é que um delimitador da área do jogo, que pode ser os extremos da tela, por exemplo.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Esta detecção é importante caso seja necessário manter um sprite dentro da tela. Por exemplo, nos jogos de tiro em scroll vertical como a série Sonic Wings, você não consegue movimentar o avião além da própria tela. Quando o aviãozinho atinge o limite da tela, ele simplesmente não se locomove mais naquela direção.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Utilizando a classe Sprite criada no post anterior, podemos chamar uma função que retorne um booleano para detecção de colisão para uma determinada borda. Quando o retorno for &lt;span style="text-decoration: underline;"&gt;true&lt;/span&gt;, o que podemos fazer é zerar a velocidade naquela direção, e talvez voltar um pixel para que o sprite saia do estado de colisão e não fique "preso".&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;a href="http://www.cubagames.com.br/wp-content/uploads/2010/02/super-mario-sprite.gif"&gt;&lt;img class="size-full wp-image-1540  aligncenter" title="super-mario-sprite" src="http://www.cubagames.com.br/wp-content/uploads/2010/02/super-mario-sprite.gif" alt="super-mario-sprite" width="124" height="120" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Uma coisa que eu esqueci de mencionar no post anterior é que para que possa ser detectado com facilidade as colisões, o ideal é usarmos sprites retangulares. O problema é que um Super Mario quadradinho não venderia tão bem...&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Para contornar este problema, devemos sempre usar, associado à imagem do sprite, um retângulo invisível que servirá de zona de detecção. Quando mais ajustado ao tamanho da imagem, melhor.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;A classe Sprite possui um objeto pictureBox dentro dela, e esse pictureBox possui a imagem do sprite, e além disso, ela é um retângulo cujas dimensões podem ser facilmente obtidas. Ou seja, o próprio pictureBox serve tanto como imagem quanto zona de detecção. Se fosse no XNA puro, teríamos que renderizar a imagem em cima de uma retângulo invisível e usar a imagem para exibição, e o retângulo para detecção.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Fugindo um pouco, mas nem tanto... Vocês já perceberam que nos primeiros Resident Evil as imagens que formam os cenários são navegáveis pelos personagens como se fossem 3D? Como o jogo sabe numa imagem onde começa o corredor ou onde está a porta? É simples. O jogo não sabe. Os programadores posicionam em cada imagem do cenário um cubo de detecção exatamente com as dimensões das áreas "caminháveis" de cada imagem. E é por este cubo invisível que a engine do jogo se enxerga para deslocar os personagens. A foto não influencia em nada.&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;a href="http://www.cubagames.com.br/wp-content/uploads/2010/02/resident_evil_2_possible_borders.png"&gt;&lt;img class="size-full wp-image-1536  aligncenter" title="resident_evil_2_possible_borders" src="http://www.cubagames.com.br/wp-content/uploads/2010/02/resident_evil_2_possible_borders.png" alt="resident_evil_2_possible_borders" width="300" height="225" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;em&gt;Possíveis bordas feitas por mim&lt;/em&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;No caso do nosso sprite, até seria possível ficar testando a sobreposição de imagens, pixel a pixel, para proporcionar uma colisão perfeita. Mas se fizessem isso com Mario, ele nunca rodaria nos consoles antigos. Lembram que eu mencionei sobre uma detecção de colisão que eu fiz comparando pixel a pixel os retângulos? Nem usei os pixels da imagem, que certamente pesaria mais ainda, e ainda assim o jogo ficou com uns 5 quadros.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Em imagens mais complexas, são utilizados mais retângulos por sprite, e as colisões são testadas individualmente. Um exemplo disso são os jogos de luta 2D. Quem já fuçou no MUGEN já deve ter visto isso.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Voltando à colisão de borda, temos que testar a colisão de cada borda individualmente. Para isso, basta chamar a função para cada borda que deve ser testada, passando o limite dela, o sprite, e a direção.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Para criar a função, eu criei também um enumerador com as quatro direções, e assim fica mais fácil passar a direção como parâmetro.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Para cada direção, eu uso um dos vértices do retângulo do sprite para testar a colisão. Eu criei para a classe Sprite quatro propriedades para retornar cada vértice do retângulo, começando a partir do superior esquerdo (0,0) e girando no sentido horário:&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;a href="http://www.cubagames.com.br/wp-content/uploads/2010/02/vertices.png"&gt;&lt;img class="size-full wp-image-1537    aligncenter" title="vertices" src="http://www.cubagames.com.br/wp-content/uploads/2010/02/vertices.png" alt="vertices" width="163" height="185" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Para testar uma colisão do lado esquerdo, preciso usar o vértice 1 ou o 4.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Para testar uma colisão em cima, preciso usar o vértice 1 ou o 2.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Para testar uma colisão do lado direito, preciso usar o vértice 2 ou 3.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Para testar uma colisão embaixo, preciso usar o vértice 4 ou 3.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Todos os sprites ocupam uma posição absoluta na tela. A tela nada mais é que uma grade de pixels, que começa no canto superior esquerdo como 0,0, e termina no canto inferior direito como 640,480 (caso esteja usando esta resolução).&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Então, se o vértice 1 estiver na posição do eixo X=0 ou menos, houve uma colisão do lado esquerdo. Se não pararmos o sprite neste momento, nada impede que ele saia da área visível da tela. É perfeitamente possível um sprite ocupar coordenadas de valores negativos (-52,300).&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Vamos à função:&lt;/p&gt;
&lt;div class="igBar"&gt;&lt;span id="lc-1"&gt;&lt;a href="#" onclick="javascript:showPlainTxt('c-1'); return false;"&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="syntax_hilite"&gt;&lt;span class="langName"&gt;C:&lt;/span&gt;
&lt;div id="c-1"&gt;
&lt;div class="c"&gt;
&lt;ol&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;public &lt;span style="color: #993333;"&gt;static&lt;/span&gt; bool DetectBorderCollision&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;Sprite sprite, &lt;span style="color: #000000; font-weight: bold;"&gt;Enum&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Direction&lt;/span&gt; direction, &lt;span style="color: #993333;"&gt;int&lt;/span&gt; collisionPoint&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; bool collided = &lt;span style="color: #000000; font-weight: bold;"&gt;false&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;direction == &lt;span style="color: #000000; font-weight: bold;"&gt;Enum&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Direction&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Down&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;sprite.&lt;span style="color: #202020;"&gt;Vertex3&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Y&lt;/span&gt;&amp;gt;= collisionPoint&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; collided = &lt;span style="color: #000000; font-weight: bold;"&gt;true&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;else&lt;/span&gt; &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;direction == &lt;span style="color: #000000; font-weight: bold;"&gt;Enum&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Direction&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Up&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;sprite.&lt;span style="color: #202020;"&gt;Vertex1&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Y&lt;/span&gt; &amp;lt;= collisionPoint&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; collided = &lt;span style="color: #000000; font-weight: bold;"&gt;true&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;else&lt;/span&gt; &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;direction == &lt;span style="color: #000000; font-weight: bold;"&gt;Enum&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Direction&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Left&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;sprite.&lt;span style="color: #202020;"&gt;Vertex1&lt;/span&gt;.&lt;span style="color: #202020;"&gt;X&lt;/span&gt; &amp;lt;= collisionPoint&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; collided = &lt;span style="color: #000000; font-weight: bold;"&gt;true&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;else&lt;/span&gt; &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;direction == &lt;span style="color: #000000; font-weight: bold;"&gt;Enum&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Direction&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Right&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;sprite.&lt;span style="color: #202020;"&gt;Vertex2&lt;/span&gt;.&lt;span style="color: #202020;"&gt;X&lt;/span&gt;&amp;gt;= collisionPoint&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; collided = &lt;span style="color: #000000; font-weight: bold;"&gt;true&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;return&lt;/span&gt; collided;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt; &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Uma função extremamente simples e leve. Se quisermos testar a colisão nos quatros lados da tela, teremos que chamar a função 4 vezes. Para cada vez, passamos uma das direções e o limite da borda, em pixels. Na colisão à esquerda, o collisionPoint deve ser 0. Para a colisão à direita, o collisionPoint deve ser 640.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;O que será feito com o retorno da função depende de cada game ou situação. No WinForms Lander, só testo a colisão na parte de baixo. Caso haja colisão, a nave quebra, o jogador perde uma vida, e o estágio é reiniciado. Só passa de fase se o jogador pousar na plataforma.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Cubagames?a=9W6jHmuW7Tc:JcuzpsuE5j8:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Cubagames?i=9W6jHmuW7Tc:JcuzpsuE5j8:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Cubagames?a=9W6jHmuW7Tc:JcuzpsuE5j8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Cubagames?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Cubagames?a=9W6jHmuW7Tc:JcuzpsuE5j8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Cubagames?i=9W6jHmuW7Tc:JcuzpsuE5j8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
		<wfw:commentRss>http://www.cubagames.com.br/criando-um-jogo-em-windows-forms-parte-6-colisao-de-borda/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.cubagames.com.br/criando-um-jogo-em-windows-forms-parte-6-colisao-de-borda/</feedburner:origLink></item>
		<item>
		<title>Você Não Escapará da Sega</title>
		<link>http://feedproxy.google.com/~r/Cubagames/~3/J-Um04UscdU/</link>
		<comments>http://www.cubagames.com.br/voce-nao-escapara-da-sega/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 20:40:56 +0000</pubDate>
		<dc:creator>Fernando Lorenzon</dc:creator>
		
		<category><![CDATA[CubaGames]]></category>

		<category><![CDATA[Coletânea]]></category>

		<category><![CDATA[Jogos]]></category>

		<category><![CDATA[Mega Drive]]></category>

		<category><![CDATA[Reflexões]]></category>

		<category><![CDATA[Sega]]></category>

		<category><![CDATA[Sonic]]></category>

		<guid isPermaLink="false">http://www.cubagames.com.br/?p=1522</guid>
		<description>&lt;p style="text-align: center;"&gt;&lt;a href="http://www.cubagames.com.br/wp-content/uploads/2010/01/sonic_boom_by_gts.jpg"&gt;&lt;img class="size-full wp-image-1525  aligncenter" title="sonic_boom_by_gts" src="http://www.cubagames.com.br/wp-content/uploads/2010/01/sonic_boom_by_gts.jpg" alt="sonic_boom_by_gts" width="343" height="250" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Em uma coisa a Sega é bem melhor que a Nintendo &amp;amp; CIA: ela conhece seu passado glorioso.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Mas viver só do passado, aí não.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Durante esses anos todos, a Sega se meteu em muitas áreas para lucrar um pouco mais com seus games antigos. O problema é que a coisa está saindo do controle. Daqui a pouco terá Sonic 2 até no relógio.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Eu acho muito divertido ver o quanto a Sega tenta lucrar com seus games antigos. Ela simplesmente tenta enfiar seus games em todos os tipo de coletâneas, aparelhos, emuladores, relançamentos...&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;A cada nova geração de consoles, a Sega cria uma nova coletânea de games do Sonic e outros clássicos. Tudo o que for comercialmente viável (ou nem isso), a Sega encara. O pior é que às vezes o mesmo produto / serviço é relançado com pequenas modificações. Ou coletâneas parciais são lançadas, sempre desvalorizando a anterior.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Vou compilar uma lista de coisas antigas da Sega que foram lançadas. Vejam que o volume de produtos chega a ser absurdo:&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;strong&gt;Sonic Compilation&lt;/strong&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Uma compilação dos jogos do Sonic para Mega Drive. Inclui:&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;em&gt;- Sonic the Hedgehog;&lt;br /&gt;
- Sonic the Hedgehog 2;&lt;br /&gt;
- Dr. Robotnik's Mean Bean Machine;&lt;/em&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;strong&gt;Sonic Jam&lt;/strong&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Uma compilação dos jogos do Sonic para o Saturn. Inclui:&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;em&gt;- Sonic the Hedgehog;&lt;br /&gt;
- Sonic the Hedgehog 2;&lt;br /&gt;
- Sonic the Hedgehog 3;&lt;br /&gt;
- Sonic &amp;amp; Knuckles;&lt;/em&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;strong&gt;Sega Ages&lt;/strong&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Foram lançados para Saturn alguns clássicos 16-bits da Sega sob esta série. Eles são:&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;em&gt;- Out Run;&lt;br /&gt;
- Space Harrier;&lt;br /&gt;
- Galaxy Force II;&lt;br /&gt;
- After Burner II;&lt;br /&gt;
- Fantasy Zone;&lt;br /&gt;
- Power Drift.&lt;/em&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Além disso, teve algumas outras versões não muito populares com mais games antigos.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;strong&gt;Sega Ages 2500&lt;/strong&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Uma série para PS2 com 33 volumes, sendo cada volume um port de games da Sega para arcade. Aqui entraram alguns jogos 3D:&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;em&gt;- Vol. 01 Phantasy Star Generation 1&lt;br /&gt;
- Vol. 02 Monaco GP&lt;br /&gt;
- Vol. 03 Fantasy Zone&lt;br /&gt;
- Vol. 04 Space Harrier&lt;br /&gt;
- Vol. 05 Golden Axe&lt;br /&gt;
- Vol. 06 Bonanza Bros.&lt;br /&gt;
- Vol. 07 Columns&lt;br /&gt;
- Vol. 08 Virtua Racing&lt;br /&gt;
- Vol. 09 Gain Ground&lt;br /&gt;
- Vol. 10 Afterburner II&lt;br /&gt;
- Vol. 11 Hokuto no Ken (?????) (Fist of the North Star)&lt;br /&gt;
- Vol. 12 Puyo Puyo Tsuu Perfect Set&lt;br /&gt;
- Vol. 13 Outrun&lt;br /&gt;
- Vol. 14 Alien Syndrome&lt;br /&gt;
- Vol. 15 Decathlete Collection&lt;br /&gt;
- Vol. 16 Virtua Fighter 2&lt;br /&gt;
- Vol. 17 Phantasy Star Generation 2&lt;br /&gt;
- Vol. 18 Dragon Force&lt;br /&gt;
- Vol. 19 Fighting Vipers&lt;br /&gt;
- Vol. 20 Space Harrier Complete Collection&lt;br /&gt;
- Vol. 21 SEGA System 16 Collection: SDI &amp;amp; Quartet&lt;br /&gt;
- Vol. 22 Advanced Daisenryaku: Doitsu Dengeki Sakusen&lt;br /&gt;
- Vol. 23 Sega Memorial Selection&lt;br /&gt;
- Vol. 24 Last Bronx&lt;br /&gt;
- Vol. 25 Gunstar Heroes, Treasure Box&lt;br /&gt;
- Vol. 26 Dynamite Deka&lt;br /&gt;
- Vol. 27 Panzer Dragoon&lt;br /&gt;
- Vol. 28 Tetris Collection&lt;br /&gt;
- Vol. 29 Monster World Complete Collection&lt;br /&gt;
- Vol. 30 Galaxy Force II Special Extended Edition&lt;br /&gt;
- Vol. 31 Cyber Troopers Virtual-On&lt;br /&gt;
- Vol. 32 Phantasy Star Complete Collection&lt;br /&gt;
- Vol. 33 Fantasy Zone Complete Collection&lt;/em&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;strong&gt;Sega Smash Pack&lt;/strong&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Coletânea de jogos da Sega para PC:&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;em&gt;- Altered Beast&lt;br /&gt;
- Columns&lt;br /&gt;
- Golden Axe&lt;br /&gt;
- Out Run&lt;br /&gt;
- Phantasy Star II&lt;br /&gt;
- Sonic Spinball&lt;br /&gt;
- The Revenge of Shinobi&lt;br /&gt;
- Vectorman&lt;/em&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;strong&gt;Sega Smash Pack 2&lt;/strong&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Continuação de uma coletânea só poderia ser cortesia da Sega:&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;em&gt;- Comix Zone&lt;br /&gt;
- Flicky&lt;br /&gt;
- Kid Chameleon&lt;br /&gt;
- Sega Swirl&lt;br /&gt;
- Shining Force&lt;br /&gt;
- Sonic the Hedgehog 2&lt;br /&gt;
- Super Hang-On&lt;br /&gt;
- Vectorman 2&lt;/em&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;strong&gt;Sega Smash Pack para Dreamcast&lt;/strong&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;em&gt;- Altered Beast&lt;br /&gt;
- Columns&lt;br /&gt;
- Golden Axe&lt;br /&gt;
- Phantasy Star II&lt;br /&gt;
- The Revenge of Shinobi&lt;br /&gt;
- Sega Swirl&lt;br /&gt;
- Shining Force&lt;br /&gt;
- Vectorman&lt;br /&gt;
- Sonic the Hedgehog&lt;br /&gt;
- Streets of Rage 2&lt;br /&gt;
- Virtua Cop 2&lt;br /&gt;
- Wrestle War&lt;/em&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;strong&gt;Sonic Mega collection&lt;/strong&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Uma coletânea lançada para PS2, XBox, Gamecube e PC com os jogos clássicos do mascote lançados no Mega Drive. Eles são:&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;em&gt;- Sonic the Hedgehog;&lt;br /&gt;
- Sonic the Hedgehog 2;&lt;br /&gt;
- Sonic the Hedgehog 3;&lt;br /&gt;
- Sonic &amp;amp; Knuckles;&lt;br /&gt;
- Sonic 3D Blast;&lt;br /&gt;
- Sonic Spinball;&lt;br /&gt;
- Dr. Robotnik's Mean Bean Machine.&lt;/em&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;strong&gt;Sonic Mega Collection Plus&lt;/strong&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Além dos jogos da coletânea anterior, foram incluídos alguns jogos lançados para Game Gear:&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;em&gt;- Sonic the Hedgehog;&lt;br /&gt;
- Sonic Chaos;&lt;br /&gt;
- Sonic Drift;&lt;br /&gt;
- Sonic Labyrinth;&lt;br /&gt;
- Dr. Robotnik's Mean Bean Machine;&lt;br /&gt;
- Sonic Blast.&lt;/em&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;strong&gt;Sonic Gems Collection&lt;/strong&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Mais uma coletânea para PS2 (apenas no Japão) e Gamecube que além incluir os jogos das coletâneas anteriores, ainda inclui alguns jogos extras do Sonic:&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;em&gt;- Sonic CD;&lt;br /&gt;
- Sonic the Fighters;&lt;br /&gt;
- Sonic R;&lt;br /&gt;
- Sonic the Hedgehog 2 (Game Gear);&lt;br /&gt;
- Sonic Spinball (Game Gear);&lt;br /&gt;
- Sonic Triple Trouble (Game Gear);&lt;br /&gt;
- Sonic Drift 2 (Game Gear);&lt;br /&gt;
- Tails' Skypatrol (Game Gear);&lt;br /&gt;
- Tails Adventure (Game Gear);&lt;/em&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;E alguns jogos secretos:&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;em&gt;- Vectorman;&lt;br /&gt;
- Vectorman 2;&lt;br /&gt;
- Bonanza Bros.;&lt;br /&gt;
- Streets of Rage;&lt;br /&gt;
- Streets of Rage 2;&lt;br /&gt;
- Streets of Rage 3;&lt;/em&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Será que precisou lançar TRÊS VEZES a mesma coletânea para ela ter uma quantidade aceitável de jogos do Sonic? Porque não lançou o Sonic Gems Collection logo na primeira vez?&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;strong&gt;Mega Drive portátil&lt;/strong&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Inúmeros portáteis baseados no Mega Drive foram lançados, com jogos na memória e alguns com possibilidade de expansão via SD Card.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;strong&gt;Emulador do Saturn&lt;/strong&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;A Sega chegou até a comprar e distribuir um emulador de Saturn Para Windows, e assim vender jogos de Saturn pela rede CYBER DISC. O emulador é o GiriGiri. Claro que não prosperou.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;strong&gt;PlaySEGA&lt;/strong&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Portal de jogos pagos e gratuitos jogados direto pelo browser. A grande maioria é do Mega Drive. Muitos só assinaram o serviço só para ganhar um controller usb no estilo daquele do Mega Drive.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;strong&gt;Jogos na Live Arcade&lt;br /&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Muitos jogos da Sega foram publicados na XBox Live Arcade. Muitos deles podem ser encontrados em outras coletâneas.&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;strong&gt;Jogos no Virtual Console&lt;/strong&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;O Virtual Console possui uma extensa lista de games da Sega disponíveis para compra.&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;strong&gt;Jogos no IPhone&lt;/strong&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Vários clássicos estão sendo portados para o IPhone e vendidos pela AppStore.&lt;strong&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;strong&gt;Emulador no IPhone&lt;/strong&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Não bastasse os games vendidos separadamente, agora o IPhone terá um emulador, que agregará os games da Sega e centralizará as compras.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;strong&gt;Sonic's Ultimate Genesis Collection&lt;/strong&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Coletânea para XBox 360 e PS3 dos maiores clássicos da Sega lançados para Mega Drive.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;strong&gt;Sonic Classic Collection&lt;/strong&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Coletânea básica para DS:&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;em&gt;- Sonic the Hedgehog&lt;br /&gt;
- Sonic the Hedgehog 2&lt;br /&gt;
- Sonic the Hedgehog 3&lt;br /&gt;
- Sonic &amp;amp; Knuckles&lt;/em&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;(Fonte das listas:  Wikipedia)&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="color: #993300;"&gt;&lt;strong&gt;Com isso, Sonic The Hedgehog, o jogo original para Mega Drive, já apareceu nos seguintes consoles (avulso ou numa coletânea):&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mega Drive/Genesis&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;- Sonic The Hedgehog;&lt;br /&gt;
- Sonic Compilation;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Saturn&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;- Sonic Jam;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dreamcast&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;- Sega Smash Pack;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;iPod Nano&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;- Sonic The Hedgehog;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;iPhone&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;- Sonic The Hedgehog;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Celulares&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;- Sonic The Hedgehog;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Virtual Console&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;- Sonic The Hedgehog;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PC&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;- Sonic Mega Collection;&lt;br /&gt;
- Sonic Mega Collection Plus;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PS2&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;- Sega Genesis Collection;&lt;br /&gt;
- Sonic Mega Collection;&lt;br /&gt;
- Sonic Mega Collection Plus;&lt;br /&gt;
- Sonic Gems Collection;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Gamecube&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;- Sonic Mega Collection;&lt;br /&gt;
- Sonic Mega Collection Plus;&lt;br /&gt;
- Sonic Gems Collection;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;XBox&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;- Sonic Mega Collection;&lt;br /&gt;
- Sonic Mega Collection Plus;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PSP&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;- Sonic The Hedgehog (PS Store);&lt;br /&gt;
- Sega Genesis Collection;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PS3&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;- Sonic The Hedgehog (PS Store);&lt;br /&gt;
- Sonic's Ultimate Genesis Collection;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Xbox 360&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;- Sonic The Hedgehog (XBLA);&lt;br /&gt;
- Sonic's Ultimate Genesis Collection;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Game Boy Advance&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;- Sonic The Hedgehog;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Wii&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;- Sonic The Hedgehog (Virtual Console);&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Internet&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;- Sonic The Hedgehog (PlaySEGA);&lt;/p&gt;
&lt;p&gt;PS.: Esta listagem pode estar incompleta. O objetivo do texto é especialmente mostrar o jeito Sega de ser. &lt;img src='http://www.cubagames.com.br/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /&gt; &lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Cubagames?a=J-Um04UscdU:2-1bA1TicmA:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Cubagames?i=J-Um04UscdU:2-1bA1TicmA:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Cubagames?a=J-Um04UscdU:2-1bA1TicmA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Cubagames?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Cubagames?a=J-Um04UscdU:2-1bA1TicmA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Cubagames?i=J-Um04UscdU:2-1bA1TicmA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
		<wfw:commentRss>http://www.cubagames.com.br/voce-nao-escapara-da-sega/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.cubagames.com.br/voce-nao-escapara-da-sega/</feedburner:origLink></item>
		<item>
		<title>Criando Um Jogo em Windows Forms - Parte 5 - Colisão Simples</title>
		<link>http://feedproxy.google.com/~r/Cubagames/~3/DAPVlt5e20A/</link>
		<comments>http://www.cubagames.com.br/criando-um-jogo-em-windows-forms-parte-5-colisao-simples/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 16:26:37 +0000</pubDate>
		<dc:creator>Fernando Lorenzon</dc:creator>
		
		<category><![CDATA[CubaGames]]></category>

		<category><![CDATA[C#]]></category>

		<category><![CDATA[Colisão]]></category>

		<category><![CDATA[Desenvolvimento]]></category>

		<category><![CDATA[Jogos]]></category>

		<category><![CDATA[Windows Forms]]></category>

		<category><![CDATA[WinForms Lander]]></category>

		<guid isPermaLink="false">http://www.cubagames.com.br/?p=1506</guid>
		<description>&lt;p&gt;Uma das coisas mais importantes em um jogo é a colisão. Isso não significa que deva haver uma explosão ao colidir sprites, mas simplesmente fazer com que o Super Mario possa caminhar sobre o chão sem atravessá-lo.&lt;/p&gt;
&lt;p&gt;Existem muitas implementações para colisão. Desde implementações simples até das mais complexas. Por exemplo, a colisão usada nos jogos do Mario para coletar as moedas só precisa informar se Mario tocou a moeda. Mas para testar a colisão em um koopa, é necessário verificar se Mario está acima ou no lado ao tocar o inimigo. Caso esteja em cima, Mario sai ileso e elimina o inimigo. Caso esteja no lado, Mario perde uma vida.&lt;/p&gt;
&lt;p&gt;Para testar uma colisão dessas, é bem mais complicado. Principalmente se os sprites se movem com mais velocidade.&lt;/p&gt;
&lt;p&gt;O que vou mostrar agora é a colisão simples (aquela da moeda). Até porque a minha colisão que detecta a direção do toque não é 100% confiável em altas velocidades (parece até coisa de mecânica quântica). Eu digo "minha" colisão porque fiz questão de tentar criar uma solução por conta própria, sem pesquisar nada na internet. É claro que futuramente terei que ir atrás disso, pois não sou um bom programador de jogos e nem um bom matemático.&lt;/p&gt;
&lt;p&gt;Para detectar uma colisão simples, o ideal é usar cálculos e algoritmos que usem poucos ciclos de CPU. É bem difícil saber o quanto um cálculo usa de CPU. Mas podemos deduzir a complexidade dele pela quantidade de linhas de códigos e quantidade de loops usados.&lt;/p&gt;
&lt;p&gt;Uma das minhas idéias iniciais para detectar colisão deixou o jogo com uns 5 quadros de animação por segundo. Enquanto as outras duas mantinham a velocidade de 50. Aí podemos ver que não daria certo usá-la &lt;img src='http://www.cubagames.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;p&gt;Mas porque ficou tão pesado? Porque o que eu fazia era comparar pixel por pixel a área utilizada por cada um dos sprites que eu estava testando a colisão. Quando eu vi a degradação da performance, logo busquei outra alternativa, bem mais leve.&lt;/p&gt;
&lt;p&gt;Vamos a elas:&lt;/p&gt;
&lt;p&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;p&gt;Mas para fins didáticos, vou mostrar minha idéia dos 5 FPS:&lt;/p&gt;
&lt;p&gt;Comparando colisão entre sprite1 com sprite2:&lt;/p&gt;
&lt;p&gt;1 - gerar lista com todos os pixels do sprite1&lt;/p&gt;
&lt;p&gt;2 - gerar lista com todos os pixels do sprite2&lt;/p&gt;
&lt;p&gt;3 - comparar cada pixel com sprite1 com cada pixel do sprite2&lt;/p&gt;
&lt;p&gt;Este método é bastante lento, mas 100% confiável. O problema é que se um sprite com 50x50 pixels for comparado com outro sprite 50x50, estaremos comparando 2500 pixels contra outros 2500. Isso tudo 50 vezes por segundo.&lt;/p&gt;
&lt;p&gt;O método mais simples e igualmente preciso que eu usei no jogo foi este:&lt;/p&gt;
&lt;p&gt;1 - Verificação Horizontal (Eixo X):&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cubagames.com.br/wp-content/uploads/2010/01/squaresx1.png"&gt;&lt;img class="size-full wp-image-1511 alignleft" title="squaresx1" src="http://www.cubagames.com.br/wp-content/uploads/2010/01/squaresx1.png" alt="squaresx1" width="156" height="119" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;1.1 - Subtrair a distância (sempre em pixels) da extremidade da direita do sprite mais à direita com a extremidade esquerda do sprite mais à esquerda;&lt;/p&gt;
&lt;p&gt;1.2 - Somar a largura do sprite1 com a largura do sprite2;&lt;/p&gt;
&lt;p&gt;1.3 - se a distância for menor ou igual à soma das larguras, realizar a verificação Vertical.&lt;/p&gt;
&lt;p&gt;2 - Verificação Vertical (Eixo Y):&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cubagames.com.br/wp-content/uploads/2010/01/squaresy.png"&gt;&lt;img class="size-full wp-image-1512 alignleft" title="squaresy" src="http://www.cubagames.com.br/wp-content/uploads/2010/01/squaresy.png" alt="squaresy" width="119" height="156" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;2.1 - Subtrair a distância (sempre em pixels) do topo do sprite mais acima com o fundo do sprite mais abaixo;&lt;/p&gt;
&lt;p&gt;2.2 - Somar a altura do sprite1 com a altura do sprite2;&lt;/p&gt;
&lt;p&gt;2.3 - se a distância for menor ou igual à soma das alturas, a colisão&lt;span style="text-decoration: underline;"&gt; foi confirmada&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;No passo 1.3, vejam que há condição para continuar. Se uma colisão em uma das dimensões não tiver sido detectada, não há necessidade de testar na outra dimensão.&lt;/p&gt;
&lt;p&gt;Colidir em uma dimensão parece coisa de doido, mas o que quero dizer é o seguinte:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cubagames.com.br/wp-content/uploads/2010/01/colisionx.png"&gt;&lt;img class="size-full wp-image-1510 alignleft" title="colisionx" src="http://www.cubagames.com.br/wp-content/uploads/2010/01/colisionx.png" alt="colisionx" width="162" height="119" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Na figura acima, houve uma colisão no eixo Y, mas não no eixo X. Portanto, para um jogo 2D, não houve colisão. Veja que os dois quadrados ocupam as mesmas posições referentes a altura.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cubagames.com.br/wp-content/uploads/2010/01/colisiony.png"&gt;&lt;img class="size-full wp-image-1513 alignleft" title="colisiony" src="http://www.cubagames.com.br/wp-content/uploads/2010/01/colisiony.png" alt="colisiony" width="119" height="156" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Já nesta figura acima, houve uma colisão no eixo X, mas não no eixo Y.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cubagames.com.br/wp-content/uploads/2010/01/squarescolision1.png"&gt;&lt;img class="size-full wp-image-1515 alignleft" title="squarescolision1" src="http://www.cubagames.com.br/wp-content/uploads/2010/01/squarescolision1.png" alt="squarescolision1" width="136" height="133" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;E aqui, finalmente ocorreu uma colisão nos dois eixos.&lt;/p&gt;
&lt;p&gt;Segue o código abaixo.&lt;/p&gt;
&lt;div class="igBar"&gt;&lt;span id="lc-2"&gt;&lt;a href="#" onclick="javascript:showPlainTxt('c-2'); return false;"&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="syntax_hilite"&gt;&lt;span class="langName"&gt;C:&lt;/span&gt;
&lt;div id="c-2"&gt;
&lt;div class="c"&gt;
&lt;ol&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;public &lt;span style="color: #993333;"&gt;static&lt;/span&gt; bool DetectCollision&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;Sprite sprite1, Sprite sprite2&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; bool partial1 = &lt;span style="color: #000000; font-weight: bold;"&gt;false&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; bool partial2 = &lt;span style="color: #000000; font-weight: bold;"&gt;false&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #993333;"&gt;int&lt;/span&gt; xDistance = sprite2.&lt;span style="color: #202020;"&gt;Vertex2&lt;/span&gt;.&lt;span style="color: #202020;"&gt;X&lt;/span&gt; - sprite1.&lt;span style="color: #202020;"&gt;Vertex1&lt;/span&gt;.&lt;span style="color: #202020;"&gt;X&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #993333;"&gt;int&lt;/span&gt; yDistance = sprite2.&lt;span style="color: #202020;"&gt;Vertex4&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Y&lt;/span&gt; - sprite1.&lt;span style="color: #202020;"&gt;Vertex1&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Y&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #808080; font-style: italic;"&gt;//Verifica se sprite2 está mais à esquerda que sprite1&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;sprite2.&lt;span style="color: #202020;"&gt;Vertex1&lt;/span&gt;.&lt;span style="color: #202020;"&gt;X&lt;/span&gt; &amp;lt;sprite1.&lt;span style="color: #202020;"&gt;Vertex1&lt;/span&gt;.&lt;span style="color: #202020;"&gt;X&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; xDistance = sprite1.&lt;span style="color: #202020;"&gt;Vertex2&lt;/span&gt;.&lt;span style="color: #202020;"&gt;X&lt;/span&gt; - sprite2.&lt;span style="color: #202020;"&gt;Vertex1&lt;/span&gt;.&lt;span style="color: #202020;"&gt;X&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #808080; font-style: italic;"&gt;//Verifica se sprite2 está mais ao topo que sprite1&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;sprite2.&lt;span style="color: #202020;"&gt;Vertex1&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Y&lt;/span&gt; &amp;lt;sprite1.&lt;span style="color: #202020;"&gt;Vertex1&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Y&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; yDistance = sprite1.&lt;span style="color: #202020;"&gt;Vertex4&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Y&lt;/span&gt; - sprite2.&lt;span style="color: #202020;"&gt;Vertex1&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Y&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #993333;"&gt;int&lt;/span&gt; xSize = sprite1.&lt;span style="color: #202020;"&gt;PictureBoxMain&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Size&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Width&lt;/span&gt; + sprite2.&lt;span style="color: #202020;"&gt;PictureBoxMain&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Size&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Width&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #993333;"&gt;int&lt;/span&gt; ySize = sprite1.&lt;span style="color: #202020;"&gt;PictureBoxMain&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Size&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Height&lt;/span&gt; + sprite2.&lt;span style="color: #202020;"&gt;PictureBoxMain&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Size&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Height&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;xDistance &amp;lt;= xSize&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; partial1 = &lt;span style="color: #000000; font-weight: bold;"&gt;true&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;partial1&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;yDistance &amp;lt;= ySize&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; partial2 = &lt;span style="color: #000000; font-weight: bold;"&gt;true&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;return&lt;/span&gt; partial2;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt; &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Vocês devem ter visto que existe uma classe chamada &lt;strong&gt;Sprite&lt;/strong&gt;. Esta classe é uma implementação minha para facilitar as coisas. Uma das facilidades é poder retornar o X/Y de cada um dos vértices do pictureBox, obtido através do Location e do Size. A implementação da classe Sprite segue abaixo:&lt;/p&gt;
&lt;div class="igBar"&gt;&lt;span id="lc-3"&gt;&lt;a href="#" onclick="javascript:showPlainTxt('c-3'); return false;"&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="syntax_hilite"&gt;&lt;span class="langName"&gt;C:&lt;/span&gt;
&lt;div id="c-3"&gt;
&lt;div class="c"&gt;
&lt;ol&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;using System;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;using System.&lt;span style="color: #202020;"&gt;Collections&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Generic&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;using System.&lt;span style="color: #202020;"&gt;Text&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;using System.&lt;span style="color: #202020;"&gt;Windows&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Forms&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;using System.&lt;span style="color: #202020;"&gt;Drawing&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;namespace WinFormsLander.&lt;span style="color: #202020;"&gt;Classes&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; public class Sprite&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #808080; font-style: italic;"&gt;/*&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #808080; font-style: italic;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;* &lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #808080; font-style: italic;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*&amp;nbsp; 1------2&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #808080; font-style: italic;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*&amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #808080; font-style: italic;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*&amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; | &lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #808080; font-style: italic;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*&amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; | &lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #808080; font-style: italic;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*&amp;nbsp; 4------3&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #808080; font-style: italic;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;* &lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #808080; font-style: italic;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;* */&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public Point Vertex1&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; get&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;return&lt;/span&gt; new Point&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;this.&lt;span style="color: #202020;"&gt;PictureBoxMain&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Location&lt;/span&gt;.&lt;span style="color: #202020;"&gt;X&lt;/span&gt;, this.&lt;span style="color: #202020;"&gt;PictureBoxMain&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Location&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Y&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public Point Vertex2&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; get&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;return&lt;/span&gt; new Point&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;this.&lt;span style="color: #202020;"&gt;PictureBoxMain&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Location&lt;/span&gt;.&lt;span style="color: #202020;"&gt;X&lt;/span&gt; + this.&lt;span style="color: #202020;"&gt;PictureBoxMain&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Size&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Width&lt;/span&gt;, this.&lt;span style="color: #202020;"&gt;PictureBoxMain&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Location&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Y&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public Point Vertex3&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; get&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;return&lt;/span&gt; new Point&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;this.&lt;span style="color: #202020;"&gt;PictureBoxMain&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Location&lt;/span&gt;.&lt;span style="color: #202020;"&gt;X&lt;/span&gt; + this.&lt;span style="color: #202020;"&gt;PictureBoxMain&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Size&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Width&lt;/span&gt;, this.&lt;span style="color: #202020;"&gt;PictureBoxMain&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Location&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Y&lt;/span&gt; + this.&lt;span style="color: #202020;"&gt;PictureBoxMain&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Size&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Height&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public Point Vertex4&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; get&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;return&lt;/span&gt; new Point&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;this.&lt;span style="color: #202020;"&gt;PictureBoxMain&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Location&lt;/span&gt;.&lt;span style="color: #202020;"&gt;X&lt;/span&gt;, this.&lt;span style="color: #202020;"&gt;PictureBoxMain&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Location&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Y&lt;/span&gt; + this.&lt;span style="color: #202020;"&gt;PictureBoxMain&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Size&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Height&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public PictureBox PictureBoxMain;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public &lt;span style="color: #993333;"&gt;string&lt;/span&gt; ID;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public Image ImageDefault;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public &lt;span style="color: #993333;"&gt;int&lt;/span&gt; FlipVCounter;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public &lt;span style="color: #993333;"&gt;int&lt;/span&gt; FlipHCounter;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public bool FlipV;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public bool FlipH;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public &lt;span style="color: #993333;"&gt;float&lt;/span&gt; VerticalVelocity;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public &lt;span style="color: #993333;"&gt;float&lt;/span&gt; HorizontalVelocity;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public &lt;span style="color: #993333;"&gt;float&lt;/span&gt; TotalVelocity;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public &lt;span style="color: #993333;"&gt;float&lt;/span&gt; Y;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public &lt;span style="color: #993333;"&gt;float&lt;/span&gt; X;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public &lt;span style="color: #993333;"&gt;float&lt;/span&gt; StretchedY;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public &lt;span style="color: #993333;"&gt;float&lt;/span&gt; StretchedX;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public &lt;span style="color: #993333;"&gt;int&lt;/span&gt; DefaultHeight;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public &lt;span style="color: #993333;"&gt;int&lt;/span&gt; DefaultWidth;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public &lt;span style="color: #993333;"&gt;float&lt;/span&gt; VerticalVelocityLimit;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public &lt;span style="color: #993333;"&gt;float&lt;/span&gt; HorizontalVelocityLimit;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public &lt;span style="color: #993333;"&gt;float&lt;/span&gt; Drag;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public &lt;span style="color: #993333;"&gt;float&lt;/span&gt; GForce;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public bool vBouncingZone;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public bool hBouncingZone;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public &lt;span style="color: #993333;"&gt;int&lt;/span&gt; FlickCount;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public &lt;span style="color: #993333;"&gt;float&lt;/span&gt; Accel;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public &lt;span style="color: #993333;"&gt;float&lt;/span&gt; AccelMpS;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public Sprite&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;PictureBox pictureBoxMain&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.&lt;span style="color: #202020;"&gt;PictureBoxMain&lt;/span&gt; = pictureBoxMain;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.&lt;span style="color: #202020;"&gt;PictureBoxMain&lt;/span&gt;.&lt;span style="color: #202020;"&gt;BackColor&lt;/span&gt; = Color.&lt;span style="color: #202020;"&gt;Transparent&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.&lt;span style="color: #202020;"&gt;ID&lt;/span&gt; = &lt;span style="color: #ff0000;"&gt;""&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.&lt;span style="color: #202020;"&gt;ImageDefault&lt;/span&gt; = &lt;span style="color: #000000; font-weight: bold;"&gt;null&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.&lt;span style="color: #202020;"&gt;FlipVCounter&lt;/span&gt; = &lt;span style="color: #cc66cc;color:#800000;"&gt;0&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.&lt;span style="color: #202020;"&gt;FlipHCounter&lt;/span&gt; = &lt;span style="color: #cc66cc;color:#800000;"&gt;0&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.&lt;span style="color: #202020;"&gt;FlipV&lt;/span&gt; = &lt;span style="color: #000000; font-weight: bold;"&gt;false&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.&lt;span style="color: #202020;"&gt;FlipH&lt;/span&gt; = &lt;span style="color: #000000; font-weight: bold;"&gt;false&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.&lt;span style="color: #202020;"&gt;VerticalVelocity&lt;/span&gt; = &lt;span style="color: #cc66cc;color:#800000;"&gt;0&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.&lt;span style="color: #202020;"&gt;HorizontalVelocity&lt;/span&gt; = &lt;span style="color: #cc66cc;color:#800000;"&gt;0&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.&lt;span style="color: #202020;"&gt;TotalVelocity&lt;/span&gt; = &lt;span style="color: #cc66cc;color:#800000;"&gt;0&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.&lt;span style="color: #202020;"&gt;Y&lt;/span&gt; = PictureBoxMain.&lt;span style="color: #202020;"&gt;Location&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Y&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.&lt;span style="color: #202020;"&gt;X&lt;/span&gt; = PictureBoxMain.&lt;span style="color: #202020;"&gt;Location&lt;/span&gt;.&lt;span style="color: #202020;"&gt;X&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.&lt;span style="color: #202020;"&gt;StretchedY&lt;/span&gt; = &lt;span style="color: #cc66cc;color:#800000;"&gt;0&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.&lt;span style="color: #202020;"&gt;StretchedX&lt;/span&gt; = &lt;span style="color: #cc66cc;color:#800000;"&gt;0&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.&lt;span style="color: #202020;"&gt;DefaultHeight&lt;/span&gt; = this.&lt;span style="color: #202020;"&gt;PictureBoxMain&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Size&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Height&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.&lt;span style="color: #202020;"&gt;DefaultWidth&lt;/span&gt; = this.&lt;span style="color: #202020;"&gt;PictureBoxMain&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Size&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Width&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.&lt;span style="color: #202020;"&gt;VerticalVelocityLimit&lt;/span&gt; = &lt;span style="color: #cc66cc;color:#800000;"&gt;50&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.&lt;span style="color: #202020;"&gt;HorizontalVelocityLimit&lt;/span&gt; = &lt;span style="color: #cc66cc;color:#800000;"&gt;50&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.&lt;span style="color: #202020;"&gt;Drag&lt;/span&gt; = &lt;span style="color: #cc66cc;color:#800000;"&gt;0&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.&lt;span style="color: #202020;"&gt;GForce&lt;/span&gt; = &lt;span style="color: #cc66cc;color:#800000;"&gt;0&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.&lt;span style="color: #202020;"&gt;vBouncingZone&lt;/span&gt; = &lt;span style="color: #000000; font-weight: bold;"&gt;false&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.&lt;span style="color: #202020;"&gt;hBouncingZone&lt;/span&gt; = &lt;span style="color: #000000; font-weight: bold;"&gt;false&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.&lt;span style="color: #202020;"&gt;FlickCount&lt;/span&gt; = &lt;span style="color: #cc66cc;color:#800000;"&gt;0&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.&lt;span style="color: #202020;"&gt;Accel&lt;/span&gt; = &lt;span style="color: #cc66cc;color:#800000;"&gt;0&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.&lt;span style="color: #202020;"&gt;AccelMpS&lt;/span&gt; = &lt;span style="color: #cc66cc;color:#800000;"&gt;0&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.&lt;span style="color: #202020;"&gt;PictureBoxMain&lt;/span&gt;.&lt;span style="color: #202020;"&gt;BackgroundImage&lt;/span&gt; = this.&lt;span style="color: #202020;"&gt;ImageDefault&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt; &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Cubagames?a=DAPVlt5e20A:B4TZ_S4Z0fM:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Cubagames?i=DAPVlt5e20A:B4TZ_S4Z0fM:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Cubagames?a=DAPVlt5e20A:B4TZ_S4Z0fM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Cubagames?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Cubagames?a=DAPVlt5e20A:B4TZ_S4Z0fM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Cubagames?i=DAPVlt5e20A:B4TZ_S4Z0fM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
		<wfw:commentRss>http://www.cubagames.com.br/criando-um-jogo-em-windows-forms-parte-5-colisao-simples/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.cubagames.com.br/criando-um-jogo-em-windows-forms-parte-5-colisao-simples/</feedburner:origLink></item>
		<item>
		<title>Saber Algo vs. Saber o Nome de Algo</title>
		<link>http://feedproxy.google.com/~r/Cubagames/~3/tshKjjaDHJA/</link>
		<comments>http://www.cubagames.com.br/saber-algo-vs-saber-o-nome-de-algo/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 15:53:24 +0000</pubDate>
		<dc:creator>Fernando Lorenzon</dc:creator>
		
		<category><![CDATA[CubaGames]]></category>

		<category><![CDATA[ACM]]></category>

		<category><![CDATA[bits]]></category>

		<category><![CDATA[Blast Processing]]></category>

		<category><![CDATA[Dreamcast]]></category>

		<category><![CDATA[Mega Drive]]></category>

		<category><![CDATA[Neo Geo]]></category>

		<category><![CDATA[Nintendo 64]]></category>

		<category><![CDATA[Reflexões]]></category>

		<category><![CDATA[Super Nintendo]]></category>

		<guid isPermaLink="false">http://www.cubagames.com.br/?p=1491</guid>
		<description>&lt;p style="text-align: center;"&gt;&lt;a href="http://www.cubagames.com.br/wp-content/uploads/2010/01/pensador_macaco.jpg"&gt;&lt;img class="size-full wp-image-1492 alignnone" title="pensador_macaco" src="http://www.cubagames.com.br/wp-content/uploads/2010/01/pensador_macaco.jpg" alt="pensador_macaco" width="241" height="350" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Este é um texto que não se aplica totalmente com games, mas darei o devido enfoque gamístico ao tema.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Hoje, na era da informação, sabemos de muita coisa. Mas muitas delas apenas sabemos seu nome. E enganamos a nós mesmos achando que saber nomear algo é ter conhecimento sobre este algo.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Querem um exemplo? Pergunte para qualquer um porque os objetos caem ao soltá-los, e muito pomposamente, quase com uma ar de doutor, o sujeito responderá: "As coisas caem por causa da gravidade."&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Isso não explica absolutamente nada. Na verdade, até hoje não se sabe o que é realmente a gravidade. Só medimos seus efeitos, mas não sabemos o que a manifesta. Isto está sendo inclusive o maior esforço da física quântica atual, o de tentar unificar a relatividade geral (nova teoria da gravitação) com a mecânica quântica.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Isso não impede o pensamento quase tautológico das pessoas, afirmando que as coisas caem por causa da gravidade, e a gravidade existe porque as coisas caem.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Qualquer moleque sabe de cor os nomes de cada carro esportivo de luxo por aí. Mostre uma foto de uma Ferrari 355 e prontamente qualquer adolescente dirá o nome, exibindo uma grande pseudo-sabedoria.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Quem assistiu o filme &lt;span style="text-decoration: underline;"&gt;Idiocracy&lt;/span&gt;, provavelmente deve lembrar da cena onde o protagonista pergunta porque consideram aquela bebida verde tão boa. E todos sempre respondiam algo como: "porque contém electrolytes", fazendo sempre  um gesto com as mãos. Aí quando se perguntava se eles sabiam o que era "electrolytes", eles desconversavam e explicavam que era o que tornava a bebida boa.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;No universo dos jogos, isso ocorre com bastante frequência. Qualquer universo ligado com alta tecnologia traz consigo uma infinidade de siglas para definir cada um de seus elementos. Às vezes, um nome anterior já existente e perfeitamente compreensível dá lugar a um novo acrônimo, trazendo também um novo frescor na definição antiga.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Querem exemplos?&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;strong&gt;1 - ACM&lt;/strong&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;ACM é a sigla para "Advanced Computer Modelling", que significa nada mais que "Modelagem Avançada por Computador". Isso soa bonito, mas é somente um eufemismo para imagem pré-renderizada.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Esta tecnologia foi empregada em inúmeros jogos, mas foi em Donkey Kong Country que o acrônimo foi utilizado pela primeira (e talvez única) vez. Talvez antes de DKC nenhum outro jogo utilizou imagens pré-renderizadas com tamanho nível de qualidade para criar sprites e cenários. Mas de novidade mesmo, não há nada. Parece até que a maneira como a imprensa cita o tal ACM denota algo acima do normal; uma tecnologia que só foi possível usando um chip especialmente projetado para compor o cartucho. Donkey Kong Country possui uma engine muito parecida com a de Super Mario World. O console exibe o sprite independente dele ter sido gerado em pixel art ou digitalizado. Na memória, é tudo a mesma coisa.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Alone in the Dark usava gráficos pré-renderizados para os cenários, assim como os primeiros Resident Evil. Vectorman para Mega Drive tinha seus sprites criados a partir de modelos em 3D pré-renderizados assim como DKC. Acho que até o Sonic teve algo assim também. Já perceberam o quanto os gráficos de Sonic parecem plastificados? Pena que os fãs da Sega só ficam chorando, ao invés de investigarem essas coisas também.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Pit-Fighter e Mortal Kombat usavam algo muito próximo do tal ACM, mas com imagens obtidas de filmagens. Apesar de alguns poderes e personagens terem sido criados digitalmente e depois utilizados para gerar os sprites.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;O termo é tão genérico que posso criar um similar agora. ACM poderia significar "Advanced Clay Modelling", que é uma tecnologia usada para criar os games da série Clay Fighters, com personagens feitos de massinha e digitalizados (Goro de Mortal Kombat também foi criado assim).&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Aliás, desconfie da utilidade de qualquer sigla que possua "a" de "advanced".&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;strong&gt;2 - Blast Processing&lt;/strong&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Esse é o termo por trás do grande poder de processamento do Mega Drive. Ok, é óbvio que o nome foi inventado pela Sega para demonstrar o quanto o Mega Drive era mais poderoso que o console da geração anterior (comparar processamento entre consoles de diferentes gerações é apelação). Mas também foi utilizado para mostrar que o Mega Drive tinha algo mais que o recém lançado Super Nintendo. Veja que o Super Nintendo realmente tinha tecnologias reais, como o Mode 7, que era um conjunto de instruções capazes de aplicar escala, inclinação e rotação em imagens de background, gerando coisas reais mesmo, como as pistas em 3D de F-Zero.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Em um quesito o console da Sega realmente superava o Snes: Clock da CPU. O Snes possui uma CPU que atinge até 3,58MHz, enquanto o Mega Drive atinge 7,6MHz. Isso com certeza foi um diferencial em jogos que não possuem muita complexidade, mas apresentam muitos sprites e grande velocidade, como é o caso de Gunstar Heroes, Sonic, Contra Hard Corps, entre outros.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Talvez a Sega não tenha usado o Clock para fazer comparações diretas com o Snes porque o único número que as pessoas estavam familiarizadas para comparações era o poder de processamento, medido em bits. Isso nos leva ao próximo termo.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;strong&gt;3 - 16/32/64/128 bits&lt;/strong&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Quem nunca falou do console utilizando os bits de processamento para comparações? O problema é que ninguém sequer tem noção de como os bits influenciam a performance ou a qualidade gráfica.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Quantas vezes já ouvi gente dizer que preferia o Nintendo 64 ao Playstation porque o Nintendo 64 era "64", e o Playstation era "32".&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Os jogadores estavam tão acostumados a comparar e comprar consoles baseando-se no poder de processamento expresso em bits que vários fabricantes se aproveitaram disso para mentir um pouco. O Jaguar foi exaustivamente anunciado como um console de 64 bits, mas tinha um poder de processamento próximo do 3DO. Se não me engano, os marketeiros obtinham o número 64 somando os bits de cada processador interno, o que é um absurdo. A própria SNK chegou a declarar que o Neo Geo possuía 24 bits, porque somavam os 16 bits do processador gráfico com os 8 bits da cpu. Dois processadores de 32 bits não formam um de 64 bits. A arquitetura de hardware não é assim tão simples.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Para fazer uma analogia bem barata, é como que você tivesse um objeto de 2 metros de largura e alegasse que ele poderia ser levado para dentro de uma casa que possui uma porta na frente de 1 metro de largura e uma porta dos fundos com 1 metro também.  (Mas não pode quebrar o objeto no meio)&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;O primeiro console genuinamente 64 bits foi o Nintendo 64. E desta vez, parece que a própria Nintendo cedeu aos números e estampou o 64 em quase toda a linha de produtos da época. Eu possuo o N64 e às vezes me sinto constrangido com tanto 64 estampado nos títulos. Depois de um tempo fica bobo. Igual ao "Super" na maioria das séries que saíram do Nes e continuaram no Super Nes.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;O poder de processamento é tão mal compreendido que muitos profissionais da indústria simplesmente chutavam os valores de acordo com o que parecia mais óbvio. Por exemplo, o Dreamcast, mesmo sendo 64 bits, tem muito mais poder que o Nintendo 64, "então só pode ser 128 bits", pensavam alguns.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Mas afinal, o que esses bits significam? Como falei, ninguém sabe. Nem mesmo eu. O que imagino é que esses bits se referem ao tamanho dos registradores do processador (pequenas memórias) que armazenam os valores que estão sendo processados no momento. Também se referem às instruções da CPU. O que é uma instrução? No caso, é um comando que a CPU entende, escrita somente com 0 e 1. Uma &lt;span style="text-decoration: underline;"&gt;soma&lt;/span&gt; é uma instrução, assim como &lt;span style="text-decoration: underline;"&gt;ler&lt;/span&gt; um endereço de memória, &lt;span style="text-decoration: underline;"&gt;pular&lt;/span&gt; endereços, &lt;span style="text-decoration: underline;"&gt;multiplicar&lt;/span&gt; valores, etc. Ou seja, o Playstation consegue ler instruções de até 32 zeros e uns. O que isso acrescenta na qualidade gráfica é difícil de compreender. Talvez isso permita que algumas instruções possam ser implementadas adequadamente. Tipo, para aplicar sombreamento, é necessário algumas informações do polígono, endereços de memória, cores e etc. Se o processador não possui "espaço" para ler tudo isso, essa instrução não pode ser utilizada. Mas mesmo que possua poder, ainda é necessário que o processador implemente aquela instrução (aceleração por hardware, no caso).&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Mas tudo isso é especulação.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;strong&gt;4 - Jogabilidade&lt;/strong&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Este é um termo difícil de explicar. Mas sempre foi utilizado como simplesmente os comandos do joystick. Ou seja, se o Mega Man possui um pulo mais preciso que o de Simon Belmont, a jogabilidade de Mega Man é melhor. Claro que jogabilidade não pode ser somente isso. Se fosse, como definir a jogabilidade de jogos point and click? Se em Myst ou Monkey Island você não possui botão de pulo, a jogabilidade é pior? Claro que não. É justamente o ato de resolver enigmas apontando e clicando que define a jogabilidade desses games.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Quem me acompanha desde 2008 já sabe que escrevi muito sobre o tema. Aqui está o &lt;a href="http://www.cubagames.com.br/category/jogabilidade/"&gt;índice&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Cubagames?a=tshKjjaDHJA:1Uz37WY-Zz8:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Cubagames?i=tshKjjaDHJA:1Uz37WY-Zz8:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Cubagames?a=tshKjjaDHJA:1Uz37WY-Zz8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Cubagames?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Cubagames?a=tshKjjaDHJA:1Uz37WY-Zz8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Cubagames?i=tshKjjaDHJA:1Uz37WY-Zz8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
		<wfw:commentRss>http://www.cubagames.com.br/saber-algo-vs-saber-o-nome-de-algo/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.cubagames.com.br/saber-algo-vs-saber-o-nome-de-algo/</feedburner:origLink></item>
		<item>
		<title>Criando Um Jogo em Windows Forms - Parte 4 - Física</title>
		<link>http://feedproxy.google.com/~r/Cubagames/~3/Y66rsiWzCuA/</link>
		<comments>http://www.cubagames.com.br/criando-um-jogo-em-windows-forms-parte-4-fisica/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 22:53:09 +0000</pubDate>
		<dc:creator>Fernando Lorenzon</dc:creator>
		
		<category><![CDATA[Desenvolvimento]]></category>

		<category><![CDATA[C#]]></category>

		<category><![CDATA[Jogos]]></category>

		<category><![CDATA[Windows Forms]]></category>

		<category><![CDATA[WinForms Lander]]></category>

		<guid isPermaLink="false">http://www.cubagames.com.br/?p=1468</guid>
		<description>&lt;p&gt;Aqui serei mais teórico.&lt;/p&gt;
&lt;p&gt;Como aplicar física em jogos?&lt;br /&gt;
1 - Usando uma boa engine que já faça isso;&lt;br /&gt;
2 - Usando boas bibliotecas que façam isso;&lt;br /&gt;
3 - Manifestando um pouco do Newton que há dentro de nós;&lt;/p&gt;
&lt;p&gt;Como a idéia toda desta série é entender como tudo funciona, e não simplesmente criar um jogo o mais rápido possível, ficaremos com a terceira opção. Apesar de eu gostar de física, nunca estudei muito tal disciplina, e hoje sinto bastante dificuldade com vários cálculos básicos. Graças ao jogo em si, eu consegui redescobrir muitas coisas, pois na prática é mais fácil de entender um conceito.&lt;/p&gt;
&lt;p&gt;Vamos:&lt;/p&gt;
&lt;p&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;p&gt;A Física, entendida por muitos estudantes como a abreviação da disciplina "Educação Física", não é chutar uma bola e marcar um gol, e sim calcular sua tragetória, peso, velocidade, aceleração e etc.&lt;/p&gt;
&lt;p&gt;Para quem quer criar jogos de RPG, ignorem tudo isso. Para os demais, vamos analisar algumas coisas:&lt;/p&gt;
&lt;p&gt;Num fluxo de jogo, não basta aplicar uma fórmula para deslocar um objeto para outro lugar. É preciso MOVER o objeto um pouco a cada update.&lt;/p&gt;
&lt;p&gt;Como o fluxo é contínuo, você não deve prever onde os objetos estarão, e sim mover os objetos na direção que a fórmula deve prever. Complicado?&lt;/p&gt;
&lt;p&gt;Quando aplicamos uma fórmula para descobrir a aceleração ou velocidade de um corpo, o que obtemos é o valor em distância/tempo (km/h, m/s, mph, etc...). Se temos a velocidade e multiplicarmos pelo tempo, obteremos a posição onde o corpo estará.&lt;/p&gt;
&lt;p&gt;Mas para um sprite se mover, temos que reposicioná-lo a cada Update. Como num jogo 2D comum temos pixels, e aqui temos nosso Update() disparado por Timer.Tick() a cada 20 milisegundos, nossa velocidade é medida em pixels por tick.&lt;/p&gt;
&lt;p&gt;Ou seja, se um sprite se desloca com uma velocidade de 1 p/t (pixel por tick), e um tick é disparado a cada 20 milisegundos (resultando em 50 ticks por segundos), temos a velocidade de 50 pixels por segundo.&lt;/p&gt;
&lt;p&gt;Numa tela de jogo de 640 pixels de largura, o sprite demoraria 13 segundos para atravessá-la completamente.&lt;/p&gt;
&lt;p&gt;Definindo um pouco as coisas:&lt;/p&gt;
&lt;p&gt;Velocidade: é a taxa mudança de posição de um corpo ao longo do tempo. Se a cada tick temos a mudança de posição em 1 pixel, nossa velocidade é 1 p/t (não existe essa medida, e nem adianta sugerir à &lt;a href="http://www.bipm.org/en/si/"&gt;SI&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Aceleração: é a taxa de aumento de velocidade num determinado período de tempo. Se no primeiro tick temos 1 p/t, e no próximo temos 2 p/t, no terceiro estaremos com a velocidade acumulada do primeiro somado do segundo (1 + 2).&lt;/p&gt;
&lt;p&gt;A cada tick o sprite pulará mais pixels de uma vez:&lt;/p&gt;
&lt;p&gt;Ticks:    |&lt;br /&gt;
Pixels:   +&lt;/p&gt;
&lt;p&gt;|+|++|+++|++++|+++++|++++++|&lt;/p&gt;
&lt;p&gt;Como representar isso?&lt;/p&gt;
&lt;p&gt;Simples. É só criarmos uma variável para acumular a velocidade e somá-la aos pixels que representam a localização dos sprites.&lt;/p&gt;
&lt;p&gt;No exemplo da bola na parte 3, nós movíamos a bola em um pixel a cada tick quando o jogador mantinha uma seta pressionda. Agora vamos acrescentando unidades em uma variável e transferiremos o valor total dela no Location do sprite:&lt;/p&gt;
&lt;div class="igBar"&gt;&lt;span id="lc-4"&gt;&lt;a href="#" onclick="javascript:showPlainTxt('c-4'); return false;"&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="syntax_hilite"&gt;&lt;span class="langName"&gt;C:&lt;/span&gt;
&lt;div id="c-4"&gt;
&lt;div class="c"&gt;
&lt;ol&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #808080; font-style: italic;"&gt;//Declarar como global&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #993333;"&gt;int&lt;/span&gt; vel = &lt;span style="color: #cc66cc;color:#800000;"&gt;0&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;this.&lt;span style="color: #202020;"&gt;ks&lt;/span&gt;.&lt;span style="color: #202020;"&gt;IsKeyDown&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;Microsoft.&lt;span style="color: #202020;"&gt;Xna&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Framework&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Input&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Keys&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Left&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; vel = vel - &lt;span style="color: #cc66cc;color:#800000;"&gt;1&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;this.&lt;span style="color: #202020;"&gt;ks&lt;/span&gt;.&lt;span style="color: #202020;"&gt;IsKeyDown&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;Microsoft.&lt;span style="color: #202020;"&gt;Xna&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Framework&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Input&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Keys&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Right&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; vel = vel + &lt;span style="color: #cc66cc;color:#800000;"&gt;1&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;this.&lt;span style="color: #202020;"&gt;pictureBox1&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Location&lt;/span&gt; = &lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;new Point&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;this.&lt;span style="color: #202020;"&gt;pictureBox1&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Location&lt;/span&gt;.&lt;span style="color: #202020;"&gt;X&lt;/span&gt; + vel, this.&lt;span style="color: #202020;"&gt;pictureBox1&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Location&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Y&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;; &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;o que estamos fazendo acima é:&lt;/p&gt;
&lt;p&gt;1 - Criar uma variável para armazenar velocidade;&lt;br /&gt;
2 - Adicionar ou subtrair unidades a ela dependendo da direção esquerda/direita (velocidade na direção oposta é negativa)&lt;br /&gt;
3 - reposicionar o pictureBox acrescentando a velocidade à sua posição no eixo X atual;&lt;/p&gt;
&lt;p&gt;Execute e veja como para os lados a bola possui aceleração, velocidade e inércia. Enquanto para cima e para baixo ainda se move do jeito antigo.&lt;/p&gt;
&lt;p style="text-align: left;"&gt;Aqui vai o código completo da tela: &lt;a href="http://www.4shared.com/file/196349286/9323faf5/Ler_Teclas.html"&gt;link&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Cubagames?a=Y66rsiWzCuA:bvk0FIWLkG8:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Cubagames?i=Y66rsiWzCuA:bvk0FIWLkG8:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Cubagames?a=Y66rsiWzCuA:bvk0FIWLkG8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Cubagames?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Cubagames?a=Y66rsiWzCuA:bvk0FIWLkG8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Cubagames?i=Y66rsiWzCuA:bvk0FIWLkG8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
		<wfw:commentRss>http://www.cubagames.com.br/criando-um-jogo-em-windows-forms-parte-4-fisica/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.cubagames.com.br/criando-um-jogo-em-windows-forms-parte-4-fisica/</feedburner:origLink></item>
		<item>
		<title>Quanto um Cartucho de NES Aguenta?</title>
		<link>http://feedproxy.google.com/~r/Cubagames/~3/daJ8jVh35AM/</link>
		<comments>http://www.cubagames.com.br/quanto-um-cartucho-de-nes-aguenta/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 16:41:00 +0000</pubDate>
		<dc:creator>Fernando Lorenzon</dc:creator>
		
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://www.cubagames.com.br/?p=1463</guid>
		<description>&lt;p&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/uCLOxK6FpfA&amp;#038;color1=0xb1b1b1&amp;#038;color2=0xcfcfcf&amp;#038;hl=en_US&amp;#038;feature=player_embedded&amp;#038;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/uCLOxK6FpfA&amp;#038;color1=0xb1b1b1&amp;#038;color2=0xcfcfcf&amp;#038;hl=en_US&amp;#038;feature=player_embedded&amp;#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;
&lt;p&gt;Vi &lt;a href="http://kotaku.com/5444508/just-how-much-punishment-can-a-nes-cart-take?autoplay=true"&gt;este vídeo&lt;/a&gt; no &lt;a href="http://kotaku.com"&gt;kotaku&lt;/a&gt; e achei impressionante.&lt;/p&gt;
&lt;p&gt;Veja você também, tema pelos seus DVDs frágeis e cheios de não-me-toques e ajoelhe-se diante do poder do bom e velho cartucho / Printed Circuit Board !!!!&lt;/p&gt;
&lt;p&gt;Para quem quer montar uma coleção de games antigos, isso pode ser um alívio. Desde que pare a coleção nos 16-Bits, claro.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Cubagames?a=daJ8jVh35AM:67Y3EJj8L_M:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Cubagames?i=daJ8jVh35AM:67Y3EJj8L_M:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Cubagames?a=daJ8jVh35AM:67Y3EJj8L_M:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Cubagames?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Cubagames?a=daJ8jVh35AM:67Y3EJj8L_M:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Cubagames?i=daJ8jVh35AM:67Y3EJj8L_M:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
		<wfw:commentRss>http://www.cubagames.com.br/quanto-um-cartucho-de-nes-aguenta/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.cubagames.com.br/quanto-um-cartucho-de-nes-aguenta/</feedburner:origLink></item>
		<item>
		<title>Criando Um Jogo em Windows Forms - Parte 3 - Lendo Teclas</title>
		<link>http://feedproxy.google.com/~r/Cubagames/~3/QJJcW25p1s8/</link>
		<comments>http://www.cubagames.com.br/criando-um-jogo-em-windows-forms-parte-3-lendo-teclas/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 17:53:22 +0000</pubDate>
		<dc:creator>Fernando Lorenzon</dc:creator>
		
		<category><![CDATA[Desenvolvimento]]></category>

		<category><![CDATA[C#]]></category>

		<category><![CDATA[Jogos]]></category>

		<category><![CDATA[Windows Forms]]></category>

		<category><![CDATA[WinForms Lander]]></category>

		<guid isPermaLink="false">http://www.cubagames.com.br/?p=1439</guid>
		<description>&lt;p style="text-align: justify;"&gt;Nesta terceira parte, já vamos avançar para a parte prática. O foco desta série não é ensinar programação C#, nem Windows Forms. Portanto, vou partir do princípio que quem me acompanha aqui já possui conhecimento básico sobre estas tecnologias. Para quem quer aprender um pouco, &lt;a href="http://msdn.microsoft.com/pt-br/library/b201w61t.aspx"&gt;aqui&lt;/a&gt; tem um tutorial básico da Microsoft sobre Windows Forms. &lt;a href="http://msdn.microsoft.com/pt-br/vbasic/ms789117.aspx"&gt;Aqui&lt;/a&gt; tem mais coisas.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Para começarmos, será necessário criar um novo projeto do tipo &lt;strong&gt;Windows Application&lt;/strong&gt; no Visual Studio 2008. Ao criar um novo projeto, cria-se uma Solution que abriga este projeto.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Uma solução recém criada já apresenta um formulário chamado Form1. Podemos utilizar ele mesmo.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Com o XNA 3.1 devidamente instalado, vamos importar a DLL &lt;span style="text-decoration: underline;"&gt;Microsoft.XNA.Framework&lt;/span&gt; e &lt;span style="text-decoration: underline;"&gt;Microsoft.XNA.Framework.Game&lt;/span&gt;.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Para isso, clique com o botão direito na pasta &lt;strong&gt;References&lt;/strong&gt; no menu &lt;span style="text-decoration: underline;"&gt;Solution Explorer&lt;/span&gt; e selecione &lt;strong&gt;Add Reference&lt;/strong&gt;. Aguarde a janela aparecer (demora!) e na aba &lt;span style="text-decoration: underline;"&gt;.Net&lt;/span&gt;, selecione as DLLs &lt;span style="text-decoration: underline;"&gt;Microsoft.XNA.Framework&lt;/span&gt; e &lt;span style="text-decoration: underline;"&gt;Microsoft.XNA.Framework.Game&lt;/span&gt; nas versões 3.1.0.0.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;a href="http://www.cubagames.com.br/wp-content/uploads/2010/01/add_reference.png"&gt;&lt;img class="aligncenter size-full wp-image-1456" title="add_reference" src="http://www.cubagames.com.br/wp-content/uploads/2010/01/add_reference.png" alt="add_reference" width="234" height="184" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Abra o ToolBox (CTRL + W + X) e, na entrada &lt;span style="text-decoration: underline;"&gt;All Windows Forms&lt;/span&gt;, procure e arraste para o formulário o controle chamado &lt;span style="text-decoration: underline;"&gt;PictureBox&lt;/span&gt; e outro chamado &lt;span style="text-decoration: underline;"&gt;Timer&lt;/span&gt;.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Selecione o PictureBox e na aba &lt;strong&gt;Properties&lt;/strong&gt; (F4), mude a propriedade &lt;span style="text-decoration: underline;"&gt;Size&lt;/span&gt; para 32;32. Na propriedade &lt;span style="text-decoration: underline;"&gt;BackgroundImage&lt;/span&gt;, clique e em Local Resource, navegue nos diretórios e selecione uma imagem qualquer. Sugiro salvar e usar esta aqui:&lt;/p&gt;
&lt;p&gt;&lt;img class="size-full wp-image-1441 alignleft" title="ball" src="http://www.cubagames.com.br/wp-content/uploads/2010/01/ball.png" alt="ball" width="32" height="32" /&gt;&lt;/p&gt;
&lt;p&gt;Agora vamos mexer no Timer. Selecione lá embaixo o timer1, que foi criado ao arrastar o Timer. Em &lt;strong&gt;Properties&lt;/strong&gt; (F4), mude o &lt;span style="text-decoration: underline;"&gt;Interval&lt;/span&gt; para 20 (50Hz). Mude também o &lt;span style="text-decoration: underline;"&gt;Enabled&lt;/span&gt; para&lt;strong&gt; true&lt;/strong&gt;;&lt;/p&gt;
&lt;p&gt;Agora vamos implementar o evento &lt;span style="text-decoration: underline;"&gt;Timer.Tick&lt;/span&gt;. Ainda em &lt;strong&gt;Properties&lt;/strong&gt;, no topo da aba existe uma figurinha em forma de raio. Clique nela. Aqui temos os eventos disponíveis para o Timer. O único disponível é o Tick. Clique duas vezes na célula vazia e o Visual Studio vai criar o evento e a função associada ao evento (event handler), chamada timer1_Tick().&lt;/p&gt;
&lt;p&gt;Todo o código fica neste arquivo.&lt;/p&gt;
&lt;p&gt;Vamos escrever algumas coisas por aqui. Primeiramente, vamos criar um objeto do tipo KeyboardState. Logo acima da linha&lt;span style="color: #800000;"&gt; public Form1()&lt;/span&gt;, escreva:&lt;/p&gt;
&lt;div class="igBar"&gt;&lt;span id="lc-5"&gt;&lt;a href="#" onclick="javascript:showPlainTxt('c-5'); return false;"&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="syntax_hilite"&gt;&lt;span class="langName"&gt;C:&lt;/span&gt;
&lt;div id="c-5"&gt;
&lt;div class="c"&gt;
&lt;ol&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;Microsoft.&lt;span style="color: #202020;"&gt;Xna&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Framework&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Input&lt;/span&gt;.&lt;span style="color: #202020;"&gt;KeyboardState&lt;/span&gt; ks; &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Agora, dentro do bloco timer1_Tick(), escreva:&lt;/p&gt;
&lt;div class="igBar"&gt;&lt;span id="lc-6"&gt;&lt;a href="#" onclick="javascript:showPlainTxt('c-6'); return false;"&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="syntax_hilite"&gt;&lt;span class="langName"&gt;C:&lt;/span&gt;
&lt;div id="c-6"&gt;
&lt;div class="c"&gt;
&lt;ol&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;this.&lt;span style="color: #202020;"&gt;ks&lt;/span&gt; = Microsoft.&lt;span style="color: #202020;"&gt;Xna&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Framework&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Input&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Keyboard&lt;/span&gt;.&lt;span style="color: #202020;"&gt;GetState&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;this.&lt;span style="color: #202020;"&gt;ks&lt;/span&gt;.&lt;span style="color: #202020;"&gt;IsKeyDown&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;Microsoft.&lt;span style="color: #202020;"&gt;Xna&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Framework&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Input&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Keys&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Up&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; this.&lt;span style="color: #202020;"&gt;pictureBox1&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Location&lt;/span&gt; =&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;new Point&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;this.&lt;span style="color: #202020;"&gt;pictureBox1&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Location&lt;/span&gt;.&lt;span style="color: #202020;"&gt;X&lt;/span&gt;, this.&lt;span style="color: #202020;"&gt;pictureBox1&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Location&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Y&lt;/span&gt; - &lt;span style="color: #cc66cc;color:#800000;"&gt;1&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt; &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;p style="text-align: left;"&gt;O que estou fazendo acima é a cada 20 milisegundos:&lt;/p&gt;
&lt;p style="text-align: left;"&gt;1 - Capturar o estado do teclado (teclas pressionadas);&lt;/p&gt;
&lt;p style="text-align: left;"&gt;2 - Verificar se a tecla pressionda é a Seta Para Cima;&lt;/p&gt;
&lt;p style="text-align: left;"&gt;2.1 - Se sim, a localização do pictureBox1 muda para um novo ponto cartesiano, onde o eixo X mantém o mesmo  valor, e o Y é decrescido de um pixel.&lt;/p&gt;
&lt;p style="text-align: left;"&gt;
&lt;p style="text-align: left;"&gt;O problema desses controles é que a posição é definida por um objeto Point que une o X e o Y. Então eu não posso simplesmente decrementar diretamente o Y,  e sim recriar o Point, repassando o X e o Y do jeito que eu quero.&lt;/p&gt;
&lt;p style="text-align: left;"&gt;O interessante é que quanto mais para cima, menor é o Y. Ou seja, o ponto X=0 e Y=0 é o canto superior esquerdo do formulário. Isso vale para qualquer aplicação baseada em pixels na tela. Até o paint.&lt;/p&gt;
&lt;p&gt;Agora vamos rodar o programa. Pressione F5 para compilar e rodar. Se tudo deu certo, o formulario e a figura aparecerão na tela. E ainda se moverá para cima enquanto a tecla &lt;strong&gt;Seta Para Cima&lt;/strong&gt; estiver pressionada.&lt;/p&gt;
&lt;p&gt;Podemos fechar a janela e continuar o programa.&lt;/p&gt;
&lt;p&gt;Ainda dentro do timer1_Tick(), vamos aplicar todas as direções.&lt;/p&gt;
&lt;p&gt;Basta escrever o restante:&lt;/p&gt;
&lt;div class="igBar"&gt;&lt;span id="lc-7"&gt;&lt;a href="#" onclick="javascript:showPlainTxt('c-7'); return false;"&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="syntax_hilite"&gt;&lt;span class="langName"&gt;C:&lt;/span&gt;
&lt;div id="c-7"&gt;
&lt;div class="c"&gt;
&lt;ol&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;this.&lt;span style="color: #202020;"&gt;ks&lt;/span&gt;.&lt;span style="color: #202020;"&gt;IsKeyDown&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;Microsoft.&lt;span style="color: #202020;"&gt;Xna&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Framework&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Input&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Keys&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Down&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp;this.&lt;span style="color: #202020;"&gt;pictureBox1&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Location&lt;/span&gt; =&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;new Point&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;this.&lt;span style="color: #202020;"&gt;pictureBox1&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Location&lt;/span&gt;.&lt;span style="color: #202020;"&gt;X&lt;/span&gt;, this.&lt;span style="color: #202020;"&gt;pictureBox1&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Location&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Y&lt;/span&gt; + &lt;span style="color: #cc66cc;color:#800000;"&gt;1&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;this.&lt;span style="color: #202020;"&gt;ks&lt;/span&gt;.&lt;span style="color: #202020;"&gt;IsKeyDown&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;Microsoft.&lt;span style="color: #202020;"&gt;Xna&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Framework&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Input&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Keys&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Left&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; this.&lt;span style="color: #202020;"&gt;pictureBox1&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Location&lt;/span&gt; =&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;new Point&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;this.&lt;span style="color: #202020;"&gt;pictureBox1&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Location&lt;/span&gt;.&lt;span style="color: #202020;"&gt;X&lt;/span&gt; - &lt;span style="color: #cc66cc;color:#800000;"&gt;1&lt;/span&gt;, this.&lt;span style="color: #202020;"&gt;pictureBox1&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Location&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Y&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;this.&lt;span style="color: #202020;"&gt;ks&lt;/span&gt;.&lt;span style="color: #202020;"&gt;IsKeyDown&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;Microsoft.&lt;span style="color: #202020;"&gt;Xna&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Framework&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Input&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Keys&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Right&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; this.&lt;span style="color: #202020;"&gt;pictureBox1&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Location&lt;/span&gt; =&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-weight: bold;color:#26536A;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;new Point&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;this.&lt;span style="color: #202020;"&gt;pictureBox1&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Location&lt;/span&gt;.&lt;span style="color: #202020;"&gt;X&lt;/span&gt; + &lt;span style="color: #cc66cc;color:#800000;"&gt;1&lt;/span&gt;, this.&lt;span style="color: #202020;"&gt;pictureBox1&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Location&lt;/span&gt;.&lt;span style="color: #202020;"&gt;Y&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"&gt;
&lt;div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"&gt;&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt; &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Agora rode novamente e experimente mover a bola para todas as direções.&lt;/p&gt;
&lt;p&gt;Por enquanto é isso. No proximo post, vamos aplicar aceleração e outras coisas a mais.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Cubagames?a=QJJcW25p1s8:Ln2gjBkdGnY:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Cubagames?i=QJJcW25p1s8:Ln2gjBkdGnY:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Cubagames?a=QJJcW25p1s8:Ln2gjBkdGnY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Cubagames?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Cubagames?a=QJJcW25p1s8:Ln2gjBkdGnY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Cubagames?i=QJJcW25p1s8:Ln2gjBkdGnY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
		<wfw:commentRss>http://www.cubagames.com.br/criando-um-jogo-em-windows-forms-parte-3-lendo-teclas/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.cubagames.com.br/criando-um-jogo-em-windows-forms-parte-3-lendo-teclas/</feedburner:origLink></item>
		<item>
		<title>Criando Um Jogo em Windows Forms - Parte 2 - Fluxo e Update</title>
		<link>http://feedproxy.google.com/~r/Cubagames/~3/A0VE18ATr_A/</link>
		<comments>http://www.cubagames.com.br/criando-um-jogo-em-windows-forms-parte-2-fluxo-e-update/#comments</comments>
		<pubDate>Sun, 03 Jan 2010 17:30:31 +0000</pubDate>
		<dc:creator>Fernando Lorenzon</dc:creator>
		
		<category><![CDATA[Desenvolvimento]]></category>

		<category><![CDATA[C#]]></category>

		<category><![CDATA[Jogos]]></category>

		<category><![CDATA[Windows Forms]]></category>

		<category><![CDATA[WinForms Lander]]></category>

		<guid isPermaLink="false">http://www.cubagames.com.br/?p=1430</guid>
		<description>&lt;p style="text-align: justify;"&gt;Aqui, eu tratarei um pouco sobre o fluxo de jogo.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Qualquer jogo possui uma estrutura genérica que geralmente segue o mesmo padrão. Aqui, o principal é mostrar o básico, e sem utilizar ferramentas que escondem alguns dos passos básicos do fluxo.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Como eu havia falado, o Windows Forms atualiza as figuras na tela automaticamente quando detecta uma mudança, e isso é bem difícil de controlar manualmente. Então, a parte de fazer as imagens ser renderizadas fica oculta para nós.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Abaixo está a figura com o fluxo básico do &lt;strong&gt;WinForms Lander&lt;/strong&gt;. Vejam:&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;a href="http://www.cubagames.com.br/wp-content/uploads/2010/01/fluxo.png"&gt;&lt;img class="aligncenter size-full wp-image-1434" title="fluxo" src="http://www.cubagames.com.br/wp-content/uploads/2010/01/fluxo.png" alt="fluxo" width="452" height="733" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Como podem ver, não é nada muito complicado. Dos 3 blocos, o mais importante é o &lt;strong&gt;Update&lt;/strong&gt;. Nele todas as coisas que fazem a partida funcionar são continuamente executadas num loop infinito. Bom, só não é infinito porque se o jogador vencer ou perder, o loop se quebra e o jogo segue para o terceiro bloco.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;No caso do WinForms Lander, e muito povavelmente para qualquer engine, o update é disparado automaticamente. Geralmente é utilizado um temporizador (timer para os íntimos) que dispara uma função a cada X milisegundos. Em Windows Forms, eu utilizo o controle &lt;span style="text-decoration: underline;"&gt;Timer&lt;/span&gt;. No evento &lt;span style="text-decoration: underline;"&gt;Timer.Tick&lt;/span&gt; eu chamo a minha função &lt;strong&gt;Update()&lt;/strong&gt;.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;O padrão para os jogos é rodar a 60 quadros por segundo, e isso conta também os updates, e não somente a atualização dos gráficos. Na verdade, como os videogames são feitos para ligar na TV, e a TV atualiza as imagens 60 vezes por segundo, o video dos consoles gera e envia imagens nesta taxa também. E como o processo de update e geração de imagens são síncronas, o update acaba rodando nesta velocidade.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Muito provavelmente, até os jogos de PC com taxa de quadros variável deve rodar seus updates 60 vezes por segundo. Ou seja, mesmo que o jogo esteja exibindo 20 frames por segundo, a captura de teclas, detecção de colisão, movimentos e toda a lógica do jogo está executando a cada 16,66 milisegundos (60Hz).  Isso se deve ao fato dos jogos modernos serem assíncronos. Ou seja, a geração das imagens não bate com a atualização delas, nem com a lógica de jogo. Isso quer dizer que é possível jogar Quake 3 com a lógica rodando a 60Hz, taxa de atualização do monitor à 85Hz, e 70 FPS. Num console, principalmente os antigos, é tudo síncrono. Acredito que nos consoles antigos, disparar o update seja uma implementação de hardware, com o uso de algum temporizador baseado num chip.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Mas isso é só suposição. Imagino que seja assim porque ao usar um jogo NTSC (60Hz) num console PAL (50Hz), o jogo roda mais lento. O inverso também ocorre.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Usando o Timer do Windows Forms, é possível informar o intervalo de tempo em que o evento Timer.Tick será disparado. Com isso, podemos fazer com que a lógica do jogo seja executada no tempo que quiser. E o melhor é que o intervalo pode ser alterado a qualquer momento. O legal é que diminuindo o intervalo, todo o jogo se acelera. Não sei se é possível alterar o intervalo em qualquer ferramenta.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Por enquanto é isso.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Cubagames?a=A0VE18ATr_A:_a6Pf0sVDb0:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Cubagames?i=A0VE18ATr_A:_a6Pf0sVDb0:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Cubagames?a=A0VE18ATr_A:_a6Pf0sVDb0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Cubagames?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Cubagames?a=A0VE18ATr_A:_a6Pf0sVDb0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Cubagames?i=A0VE18ATr_A:_a6Pf0sVDb0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
		<wfw:commentRss>http://www.cubagames.com.br/criando-um-jogo-em-windows-forms-parte-2-fluxo-e-update/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.cubagames.com.br/criando-um-jogo-em-windows-forms-parte-2-fluxo-e-update/</feedburner:origLink></item>
		<item>
		<title>Criando Um Jogo em Windows Forms - Parte 1</title>
		<link>http://feedproxy.google.com/~r/Cubagames/~3/Z2TUcJxPwsg/</link>
		<comments>http://www.cubagames.com.br/criando-um-jogo-em-windowsforms-parte-1/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 20:07:38 +0000</pubDate>
		<dc:creator>Fernando Lorenzon</dc:creator>
		
		<category><![CDATA[Desenvolvimento]]></category>

		<category><![CDATA[C#]]></category>

		<category><![CDATA[Jogos]]></category>

		<category><![CDATA[Visual Studio]]></category>

		<category><![CDATA[Windows Forms]]></category>

		<category><![CDATA[WinForms Lander]]></category>

		<category><![CDATA[XNA]]></category>

		<guid isPermaLink="false">http://www.cubagames.com.br/?p=1416</guid>
		<description>&lt;p style="text-align: center;"&gt;&lt;a href="http://www.cubagames.com.br/wp-content/uploads/2009/12/forms_game1.png"&gt;&lt;img class="size-full wp-image-1426  aligncenter" title="forms_game1" src="http://www.cubagames.com.br/wp-content/uploads/2009/12/forms_game1.png" alt="forms_game1" width="248" height="123" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;De todos os colaboradores da Cubagames, eu sou o menos familiarizado com desenvolvimento de jogos. Não tenho muita familiaridade nem com Web, que geralmente possui ferramentas muito boas para implementar um jogo, como é o caso do Flash.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Mas tenho bastante familiaridade com programação de sistemas e um pouco de conceito sobre criação de jogos. A plataforma de desenvolvimento que possuo mais experiência é Windows Forms, e a linguagem que mais domino é o C#. Há alguns anos venho pensando (filosofando) como os jogos antigos de 8 e 16 bits eram criados. Hoje temos muitas ferramentas visuais, frameworks, engines, todos equipados com temporizadores automáticos, eventos, gerenciamento de memória, threads e o escambal. Com isso, criar um jogo pode ser bem rápido, mas talvez não tão didático.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Acompanhem-me:&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Aventurar-se numa ferramenta dessas pode ser bastante confuso. Até eu tive dificuldades de compreender o funcionamento do XNA. E olha que ele usa C# e o Visual Studio. É claro que agora, fazendo quase tudo no braço usando Forms, já consigo entender como o XNA funciona. É por isso que quero compartilhar este conhecimento aqui. Claro que "no braço" é um termo relativo, pois com C# e o Visual Studio muita coisa já vem pronta. Só que nada vem pronto para ser utilizado em jogos. Comparando com engines como a Unity, ou ferramentas como o Flash, C# e WindowsForms é bem cru. Se eu tivesse paciência para aprender C++, com certeza usaria ele aqui.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Por um lado, ferramentas completas são úteis e muito produtivas, mas para quem está interessado em conceitos, isso pode atrapalhar mais no aprendizado do que ensinar.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Muito antes de bolar meu próprio MMO para concorrer com WoW, eu quero entender como tratar uma &lt;span style="text-decoration: underline;"&gt;colisão&lt;/span&gt; "no muque". Ou ainda, como trabalhar os &lt;span style="text-decoration: underline;"&gt;updates por segundo&lt;/span&gt; de jogos mais rústicos, como os antigões. Essas novas engines mascaram tudo isso. (Recomendo ler um texto muito bom do Rômulo sobre isso: &lt;a href="http://www.cubagames.com.br/comentario-cubagames-sobre-design-inchado/"&gt;Design Inchado&lt;/a&gt;)&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Então, por causa dessa minha curiosidade e também falta de compromisso para criar um jogo propriamente dito, comecei a fuçar um pouco no Windows Forms com C#, usando a ferramenta Visual Studio 2008. Aqui eu me sinto em casa. Porém, O WindowsForms já é todo otimizado e "fechado" para uso em programas com telas estáticas, com botões, campos de texto, barras, grids etc. Traduzindo, Windows Forms não foi feito para criar jogos. Então pensei: "Perfeito!".&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;O problema do Windows Forms é que o programa fica esperando o usuário interagir com as telas, pronto para capturar teclas pressionadas e cliques de mouse. Num jogo, o que ocorre é o contrário. Ele funciona continuamente, mesmo sem a intervenção do jogador. Ou seja, se você largar o controle por um tempo, morre.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Para poder quebrar essa primeira e talvez a única barreira que o WindowsForms oferece ao criar jogos, eu tive que usar uma biblioteca em que eu determinasse quando pegar as teclas pressionadas pelo jogador e aplicar a lógica de jogo. Ou seja, o programa não ficaria esperando as teclas serem pressionadas para disparar os eventos.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Comecei a procurar por uma biblioteca que fizesse leitura de teclas com intervenção do programador, e logo descobri que o próprio XNA possui a dita cuja.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;A biblioteca usada foi justamente uma que acompanha o XNA. O resto foi WindowsForms puro.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;No início, fiquei apenas fazendo uma esfera deslizar pela tela conforme o uso das setas. Logo depois eu comecei a criar mais e mais funções para fazer diversas coisas, como gravidade, arrasto, colisão, leitura do teclado, aplicação dos comando para a esfera, esticamentos,  etc. No processo, acabei até adquirindo alguns conhecimentos sobre física. Afinal, criar jogos é uma boa oportunidade de aplicar teorias da física.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Tudo utilizando imagens carregadas num "botão". No WindowsForms, essa é a melhor (ou única) maneira de representar sprites.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Quando percebi, já tinha um bom começo para criar um jogo. E foi o que fiz. Com o que eu já tinha, daria para criar sem grandes problemas uma versão simples do jogo clássico &lt;strong&gt;Lunar Lander&lt;/strong&gt;. E assim nasceu o projeto &lt;strong&gt;WinForms Lander&lt;/strong&gt;. Com este game, acabei juntando coisas que me interesso, como física, astronomia, games e desenvolvimento. Só assim para sentirmos motivados a criar algo.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Logo no início, ficou óbvio o quanto o WindowsForms é limitado para trabalhar com imagens. Quanto mais sprites e backgrounds existir, menos fluentes ficam os sprites. Isso se deve ao fato do WindowsForms atualizar as imagens na tela por conta própria. Você desloca uma figura, e a imagem se move sem você dizer quando isso deve ocorrer. O resultado não é tão ruim quanto parece, desde que se use pouquíssimos sprites numa tela.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Conforme fui desenvolvendo, fui aprimorando os códigos e arrumando a estrutura das funções. Posso dizer que o resultado ficou muito bom.Para contornar as limitações tecnológicas, fui adicionando conteúdo para tornar o jogo mais divertido, e atualmente o jogo já conta com várias "navinhas" e estágios, com variáveis diversas para aumentar o limitado desafio.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Inclusive, todas as naves foram desenhadas por mim num criador de ícones, e foi bastante divertido bolar as naves e os poderes especiais de cada uma (sim, eu fiz isso). Como se trata de um jogo de pousar corretamente, os poderes se limitam a auxiliar o pouso, como anti-gravidade, estabilização, etc.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Estou incluindo alguns efeitos sonoros também. E não tenho nenhuma biblioteca avançada em mãos para tocar os sons paralelamente e de qualquer jeito. Estou usando a biblioteca padrão para tocar sons em WindowsForms. É bem fácil de carregar um som e tocar, mas não é possível tocar áudios paralelamente. Portanto, tudo tem que ser feito controlando manualmente se o áudio está tocando, se deve trocar de áudio, etc. Difícil, mas recompensadoramente didático.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Posso dizer que o jogo está uns 70% pronto, faltando apenas aprimoramentos na jogabilidade e algum polimento no código. O jogo já salva e carrega, possui naves e fases secretas, e terá alguns desafios extras.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Quando terminar, ainda vou migrar o jogo para o XNA, que atualmente nem parece mais o bicho de sete cabeças de antes. E com certeza melhorarei o que o WindowsForms não permitiu.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Bom, este texto foi somente uma introdução. No próximo post, eu explico um pouco o que aprendi e aos poucos vou esclarecendo sobre &lt;span style="text-decoration: underline;"&gt;lógica de jogo&lt;/span&gt; em geral e algumas decisões tomadas por mim durante o desenvolvimento.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Esta série não tem o intuito de ensinar a programar C#, nem mesmo de ensinar a criar jogos a torto e direito. Tenho a intenção de explicar mais coisas teóricas, que serão úteis mais para frente,  conforme eu for mostrando os códigos.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Você talvez deva estar se perguntando: "Se Windows Forms é ruim pra jogos, por que perder tempo com ele?"&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Volto a salientar: isso tem &lt;span style="text-decoration: underline;"&gt;somente&lt;/span&gt; fins didáticos. Eu ainda vou converter o jogo para XNA daqui alguns meses, e aí sim teremos um jogo decente (ou não).&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Mas na verdade, se for analisar a simplicidade de alguns games antigos, o &lt;strong&gt;WinForms Lander&lt;/strong&gt; até que não está indo mal.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Para quem já conhece C# e tem interesse em acompanhar a série, será necessário o Visual Studio 2008 ou o &lt;a href="http://www.microsoft.com/express/vcsharp/"&gt;Visual C# Express Edition&lt;/a&gt; para programar. Ah, e instale o &lt;a href="http://creators.xna.com/en-US/downloads"&gt;XNA 3.1&lt;/a&gt; para utilizar a biblioteca. O C# Express e o XNA são gratuitos.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Após a conclusão do game, me aventurarei com o XNA. E com certeza criarei uma série de tutoriais sobre XNA.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Cubagames?a=Z2TUcJxPwsg:zG-jqIKsBto:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Cubagames?i=Z2TUcJxPwsg:zG-jqIKsBto:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Cubagames?a=Z2TUcJxPwsg:zG-jqIKsBto:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Cubagames?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Cubagames?a=Z2TUcJxPwsg:zG-jqIKsBto:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Cubagames?i=Z2TUcJxPwsg:zG-jqIKsBto:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
		<wfw:commentRss>http://www.cubagames.com.br/criando-um-jogo-em-windowsforms-parte-1/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.cubagames.com.br/criando-um-jogo-em-windowsforms-parte-1/</feedburner:origLink></item>
		<item>
		<title>Zoeira News - Pitfall Motion</title>
		<link>http://feedproxy.google.com/~r/Cubagames/~3/skfOAIdyfC0/</link>
		<comments>http://www.cubagames.com.br/zoeira-news-pitfall-motion/#comments</comments>
		<pubDate>Sun, 27 Dec 2009 03:05:16 +0000</pubDate>
		<dc:creator>Fernando Lorenzon</dc:creator>
		
		<category><![CDATA[Zoeira News]]></category>

		<guid isPermaLink="false">http://www.cubagames.com.br/?p=1408</guid>
		<description>&lt;p style="text-align: center;"&gt;&lt;a href="http://www.cubagames.com.br/wp-content/uploads/2009/12/pitfallwii.png"&gt;&lt;img class="aligncenter size-full wp-image-1413" title="pitfallwii" src="http://www.cubagames.com.br/wp-content/uploads/2009/12/pitfallwii.png" alt="pitfallwii" width="350" height="245" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Dando continuidade à série de notícias inventadas por mim, a Actvision é a bola da vez, soltando mais uma delas:&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;
&lt;p style="text-align: justify;"&gt;&lt;strong&gt;Actvision relançará Pitfall com controle próprio&lt;/strong&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;É isso mesmo!&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;A Actvision não descansa nem no Natal. No embalo do tremendo sucesso de Tony Hawk's Ride e sua prancha-controle, a Actvision anuncia um novo game da série Pitfall com seu próprio controle.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Segundo as especificações, o controle, batizado de &lt;strong&gt;Vine e-Motion&lt;/strong&gt;, se trata de um cipó com sensor de movimentos. O controle poderá - ou deverá - ser pendurado para que o jogador se balance nele e assim passe a controlar Pitfall Harry!&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;O jogo será basicamente um conjunto de seções de salto, onde o jogador deverá se agarrar (literalmente) ao controle e balançar. Assim que o jogador se solta, o controle calcula a velocidade e faz com que Harry também salte no jogo. Apesar dos riscos, eles garantem que é extremamente seguro e não há perigo de se machucar. Muito menos acertar a TV (o controle acompanha 3 acolchoados para colocar no chão).&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;Com o sucesso iminente, a empresa cojita lançar alguns jogos do Tarzan para aproveitar o controle.&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;A empresa garante que será um sucesso e provavelmente enterre o projeto Natal devido à grande tecnologia e inovação por trás do cipó,... digo, &lt;strong&gt;Vine e-Motion&lt;/strong&gt;.&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;a href="http://www.cubagames.com.br/wp-content/uploads/2009/12/tarzan.jpg"&gt;&lt;img class="size-full wp-image-1409 alignnone" title="tarzan" src="http://www.cubagames.com.br/wp-content/uploads/2009/12/tarzan.jpg" alt="tarzan" width="400" height="300" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Cubagames?a=skfOAIdyfC0:d27g2Wz0vMs:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Cubagames?i=skfOAIdyfC0:d27g2Wz0vMs:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Cubagames?a=skfOAIdyfC0:d27g2Wz0vMs:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Cubagames?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Cubagames?a=skfOAIdyfC0:d27g2Wz0vMs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Cubagames?i=skfOAIdyfC0:d27g2Wz0vMs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
		<wfw:commentRss>http://www.cubagames.com.br/zoeira-news-pitfall-motion/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.cubagames.com.br/zoeira-news-pitfall-motion/</feedburner:origLink></item>
	</channel>
</rss>
