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

<channel>
	<title>Tolstenko &#187; XNA</title>
	<atom:link href="http://tolstenko.net/category/programacao-de-jogos/xna/feed/" rel="self" type="application/rss+xml" />
	<link>http://tolstenko.net</link>
	<description>Sobre computação e o mundo</description>
	<lastBuildDate>Sat, 15 May 2010 22:04:27 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Carregamento de mapas em games: Quadtree e Octatree (Octree)</title>
		<link>http://tolstenko.net/2009/11/21/carregamento-de-mapas-em-games-quadtree-e-octatree/</link>
		<comments>http://tolstenko.net/2009/11/21/carregamento-de-mapas-em-games-quadtree-e-octatree/#comments</comments>
		<pubDate>Sun, 22 Nov 2009 00:57:13 +0000</pubDate>
		<dc:creator>Alexandre</dc:creator>
				<category><![CDATA[F 313]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[XNA]]></category>
		<category><![CDATA[applet]]></category>
		<category><![CDATA[árvore]]></category>
		<category><![CDATA[bsp]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[carregamento]]></category>
		<category><![CDATA[demo]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[estrutura de dados]]></category>
		<category><![CDATA[fenando lucchesi]]></category>
		<category><![CDATA[Game]]></category>
		<category><![CDATA[game programming]]></category>
		<category><![CDATA[ian liu]]></category>
		<category><![CDATA[mapas]]></category>
		<category><![CDATA[octatree]]></category>
		<category><![CDATA[octree]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[pygame]]></category>
		<category><![CDATA[quadtree]]></category>
		<category><![CDATA[tree]]></category>

		<guid isPermaLink="false">http://tolstenko.net/?p=362</guid>
		<description><![CDATA[<a href="http://tolstenko.net/2009/11/21/carregamento-de-mapas-em-games-quadtree-e-octatree/"><img align="left" hspace="5" width="150" height="150" src="http://tolstenko.net/wp-content/uploads/2009/11/380px-Quad_tree_bitmap.svg_-150x150.png" class="alignleft wp-post-image tfe" alt="380px-Quad_tree_bitmap.svg" title="380px-Quad_tree_bitmap.svg" /></a><p>Existe um grande problema na área de games que é o carregamento de mapas. Uma das soluções mais utilizadas  é utilizar estruturas quadtrees para games 2D e octatrees para games 3D.</p>
<p>Quadtree é um tipo de estrutura na qual tem-se um nó raiz(quadrado maior) que se abre em 4 filhos, aonde cada filho será responsável por [...]]]></description>
			<content:encoded><![CDATA[<p>Existe um grande problema na área de games que é o carregamento de mapas. Uma das soluções mais utilizadas  é utilizar estruturas quadtrees para games 2D e octatrees para games 3D.</p>
<p>Quadtree é um tipo de estrutura na qual tem-se um nó raiz(quadrado maior) que se abre em 4 filhos, aonde cada filho será responsável por um quadrante do quadrado repesentado pelo nó pai.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-365" title="380px-Quad_tree_bitmap.svg" src="http://tolstenko.net/wp-content/uploads/2009/11/380px-Quad_tree_bitmap.svg_.png" alt="380px-Quad_tree_bitmap.svg" width="380" height="156" /></p>
<p>De maneira análoga, o octatree é uma estrutura na qual se tem um nó raiz(cubo maior) que se abre em 8 filhos, aonde cada filho será responsável por um octante do cubo representado pelo nó pai.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-366" title="400px-Octree2" src="http://tolstenko.net/wp-content/uploads/2009/11/400px-Octree2.png" alt="400px-Octree2" width="400" height="230" /></p>
<p>Agora vamos aos exemplos práticos:</p>
<p><span id="more-362"></span></p>
<p>Para exemplificar o Quadtree, encontrei neste <a href="http://www.cs.utah.edu/~croberts/courses/cs7962/project/index.html">site</a> um applet exemplificando o quadtree, o mesmo segue logo abaixo. Para adicionar pontos na estrutura, clique no quadrado, para visualizar a estrutura da árvore clique em show tree.</p>
<p><APPLET archive="/wp-content/uploads/2009/11/QTApplet.jar" code="QTApplet" width=700 height=600><br />
Your browser does not support Java, so nothing is displayed.<br />
</APPLET></p>
<p>Para exemplificar uma octree, não encontrei nenhum applet, mas encontrei uma outra estrutura de dados para mapas 3D: <a href="http://en.wikipedia.org/wiki/Binary_space_partitioning" target="_blank">BSP</a>. Para usar o exemplo abaixo, basta utilizar o primeiro quadrado. Dentro dele, para desenhar uma parede no mapa, clique e arraste com o botão direito. Para mover a camera clique com o botão esquerdo no ponto vermelho e arraste. Os demais campos são representações do mapa.</p>
<p><applet archive="/wp-content/uploads/2009/11/BSPTreeDemo.jar" code="BSPTreeDemo.class" width="424" height="576"><br />
Your browser does not support Java, so nothing is displayed.<br />
</APPLET></p>
<p>Nesta sexta-feira(20/11/2009) tentamos implementar árvores quadtree.</p>
<ul>
<li>Eu fiz um exemplo em C# e com XNA:
<ul>
<li><a href="/wp-content/uploads/2009/11/XnaQuadtreeSource.rar" target="_blank">Codigo-Fonte</a> (necessita do <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=53867a2a-e249-4560-8011-98eb3e799ef2" target="_blank">XNA framework 3.1</a> e <a href="http://www.microsoft.com/express/vcsharp/" target="_blank">Visual Studio C# 2008</a>)</li>
<li><a href="/wp-content/uploads/2009/11/XnaQuadtreeBin.rar" target="_blank">Executavel </a>(necessita do <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=53867a2a-e249-4560-8011-98eb3e799ef2" target="_blank">XNA 3.1 Redistributable</a> e <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=333325FD-AE52-4E35-B531-508D977D32A6" target="_blank">.NET 3.5</a>)</li>
</ul>
</li>
<li>Ian Liu juntamente com o Fenando Lucchesi implementaram em Python com Pygame
<ul>
<li><a href="/wp-content/uploads/2009/11/PythonQuadtreesSrc.zip" target="_blank">Código-Fonte</a> (necessita do<a href="http://www.python.org/download/" target="_blank"> Pyhon</a> e do <a href="http://www.pygame.org/download.shtml" target="_blank">Pygame</a>)</li>
</ul>
</li>
</ul>
<p>Espero que tenham gostado, qualquer dúvida, entre em contato.</p>
]]></content:encoded>
			<wfw:commentRss>http://tolstenko.net/2009/11/21/carregamento-de-mapas-em-games-quadtree-e-octatree/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Classe Fade</title>
		<link>http://tolstenko.net/2009/05/28/classe-fade/</link>
		<comments>http://tolstenko.net/2009/05/28/classe-fade/#comments</comments>
		<pubDate>Thu, 28 May 2009 21:30:34 +0000</pubDate>
		<dc:creator>Alexandre</dc:creator>
				<category><![CDATA[Classes]]></category>
		<category><![CDATA[fade]]></category>
		<category><![CDATA[Game]]></category>
		<category><![CDATA[game programming]]></category>
		<category><![CDATA[Xbox360]]></category>
		<category><![CDATA[XNA]]></category>

		<guid isPermaLink="false">http://tolstenko.net/?p=126</guid>
		<description><![CDATA[<a href="http://tolstenko.net/2009/05/28/classe-fade/"><img align="left" hspace="5" width="150" height="150" src="http://tolstenko.net/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a><p>Implementei uma classe simples, mas interessante, ela faz o fade de imagens. Ela permite a exibição de imagens da mesma maneira que encontramos no inicio de alguns games: o logo de uma empresa, depois outro logo e assim vai até entrar num filmezinho ou entrar no menu inicial do game. Observe que vc poderá modificar [...]]]></description>
			<content:encoded><![CDATA[<p>Implementei uma classe simples, mas interessante, ela faz o fade de imagens. Ela permite a exibição de imagens da mesma maneira que encontramos no inicio de alguns games: o logo de uma empresa, depois outro logo e assim vai até entrar num filmezinho ou entrar no menu inicial do game. Observe que vc poderá modificar essa classe para fazer outras coisas interessantes como fazer a imagem crescer, diminuir&#8230; etc.</p>
<p>O código segue abaixo:</p>
<p><span id="more-126"></span></p>
<table class="csharp" style="border: 1px solid #054b6e; background: #f8f8f8 none repeat scroll 0% 0%; border-collapse: collapse; width: 646px; height: 3447px;" border="0">
<tbody>
<tr class="li1">
<td style="border-right: 1px dotted #dddddd; background: #f0f0f0 none repeat scroll 0% 0%; width: 1px; vertical-align: top; color: #676f73; font-size: 12px; text-align: right;">
<pre style="margin:0; background:none; vertical-align:top; padding: 0px 4px; font-size: 12px;">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185</pre>
</td>
<td style="margin:0; background:none; vertical-align:top; padding: 0px 4px; font-size: 12px;">
<pre style="margin:0; background:none; vertical-align:top; padding: 0px 4px; font-size: 12px;"><span style="vertical-align:top"><span style="color: #0600FF;">using</span> <span style="color: #008080;">System</span><span style="color: #008000;">;</span></span>
<span style="vertical-align:top"><span style="color: #0600FF;">using</span> <span style="color: #008080;">System.Collections.Generic</span><span style="color: #008000;">;</span></span>
<span style="vertical-align:top"><span style="color: #0600FF;">using</span> <span style="color: #008080;">System.Text</span><span style="color: #008000;">;</span></span>
<span style="vertical-align:top"><span style="color: #0600FF;">using</span> <span style="color: #008080;">Microsoft.Xna.Framework</span><span style="color: #008000;">;</span></span>
<span style="vertical-align:top"><span style="color: #0600FF;">using</span> <span style="color: #008080;">Microsoft.Xna.Framework.Graphics</span><span style="color: #008000;">;</span></span>
<span style="vertical-align:top"><span style="color: #0600FF;">using</span> <span style="color: #008080;">Microsoft.Xna.Framework.Content</span><span style="color: #008000;">;</span></span>
<span style="vertical-align:top"> </span>
<span style="vertical-align:top"><span style="color: #0600FF;">namespace</span> MetalX.<span style="color: #0000FF;">Efeitos</span></span>
<span style="vertical-align:top"><span style="color: #000000;">{</span></span>
<span style="vertical-align:top">    <span style="color: #FF0000;">class</span> Fade</span>
<span style="vertical-align:top">    <span style="color: #000000;">{</span></span>
<span style="vertical-align:top">        <span style="color: #008080;">#region atributos</span></span>
<span style="vertical-align:top">        Texture2D textura<span style="color: #008000;">;</span></span>
<span style="vertical-align:top">        SpriteFont fonte<span style="color: #008000;">;</span></span>
<span style="vertical-align:top">        estadoImg meuEstado<span style="color: #008000;">;</span></span>
<span style="vertical-align:top">        <span style="color: #FF0000;">int</span> alfaAtual<span style="color: #008000;">;</span></span>
<span style="vertical-align:top">        <span style="color: #FF0000;">double</span> tempoEsperaAcender<span style="color: #008000;">;</span></span>
<span style="vertical-align:top">        <span style="color: #FF0000;">double</span> tempoEsperaFim<span style="color: #008000;">;</span></span>
<span style="vertical-align:top">        <span style="color: #FF0000;">double</span> tempoAcesa<span style="color: #008000;">;</span></span>
<span style="vertical-align:top">        <span style="color: #FF0000;">double</span> horaInicioAcesa<span style="color: #008000;">;</span></span>
<span style="vertical-align:top"> </span>
<span style="vertical-align:top">        <span style="color: #FF0000;">int</span> velAlfa<span style="color: #008000;">;</span></span>
<span style="vertical-align:top"> </span>
<span style="vertical-align:top">        <span style="color: #008080;">#endregion</span></span>
<span style="vertical-align:top"> </span>
<span style="vertical-align:top"> </span>
<span style="vertical-align:top">        <span style="color: #008080;">#region enums</span></span>
<span style="vertical-align:top"> </span>
<span style="vertical-align:top">        <span style="color: #008080; font-style: italic;">/// </span></span>
<span style="vertical-align:top">        <span style="color: #008080; font-style: italic;">/// enum for the image state</span></span>
<span style="vertical-align:top">        <span style="color: #008080; font-style: italic;">/// </span></span>
<span style="vertical-align:top">        <span style="color: #0600FF;">public</span> <span style="color: #FF0000;">enum</span> estadoImg</span>
<span style="vertical-align:top">        <span style="color: #000000;">{</span></span>
<span style="vertical-align:top">            Apagada,</span>
<span style="vertical-align:top">            Acendendo,</span>
<span style="vertical-align:top">            Acesa,</span>
<span style="vertical-align:top">            Apagando,</span>
<span style="vertical-align:top">            PreFim,</span>
<span style="vertical-align:top">            Fim</span>
<span style="vertical-align:top">        <span style="color: #000000;">}</span></span>
<span style="vertical-align:top"> </span>
<span style="vertical-align:top">        <span style="color: #008080;">#endregion</span></span>
<span style="vertical-align:top"> </span>
<span style="vertical-align:top"> </span>
<span style="vertical-align:top"> </span>
<span style="vertical-align:top">        <span style="color: #008080;">#region propriedades</span></span>
<span style="vertical-align:top"> </span>
<span style="vertical-align:top">        <span style="color: #0600FF;">public</span> <span style="color: #FF0000;">int</span> Width <span style="color: #000000;">{</span> get <span style="color: #000000;">{</span> <span style="color: #0600FF;">return</span> textura.<span style="color: #0000FF;">Width</span><span style="color: #008000;">;</span> <span style="color: #000000;">}</span> <span style="color: #000000;">}</span></span>
<span style="vertical-align:top">        <span style="color: #0600FF;">public</span> <span style="color: #FF0000;">int</span> Height <span style="color: #000000;">{</span> get <span style="color: #000000;">{</span> <span style="color: #0600FF;">return</span> textura.<span style="color: #0000FF;">Height</span><span style="color: #008000;">;</span> <span style="color: #000000;">}</span> <span style="color: #000000;">}</span></span>
<span style="vertical-align:top"> </span>
<span style="vertical-align:top">        <span style="color: #008080; font-style: italic;">/// </span></span>
<span style="vertical-align:top">        <span style="color: #008080; font-style: italic;">/// Atribute for MeuEstado</span></span>
<span style="vertical-align:top">        <span style="color: #008080; font-style: italic;">/// </span></span>
<span style="vertical-align:top">        <span style="color: #0600FF;">public</span> estadoImg MeuEstado <span style="color: #000000;">{</span> get <span style="color: #000000;">{</span> <span style="color: #0600FF;">return</span> meuEstado<span style="color: #008000;">;</span> <span style="color: #000000;">}</span>
                                     set <span style="color: #000000;">{</span> meuEstado <span style="color: #008000;">=</span> value<span style="color: #008000;">;</span> <span style="color: #000000;">}</span> <span style="color: #000000;">}</span></span>
<span style="vertical-align:top"> </span>
<span style="vertical-align:top">        <span style="color: #008080; font-style: italic;">/// </span></span>
<span style="vertical-align:top">        <span style="color: #008080; font-style: italic;">/// Valor em segundos, podendo ser fracionario que se espera para</span></span>
<span style="vertical-align:top">        <span style="color: #008080; font-style: italic;">/// comecar a imagem</span></span>
<span style="vertical-align:top">        <span style="color: #0600FF;">public</span> <span style="color: #FF0000;">double</span> TempoEsperaAcender <span style="color: #000000;">{</span> set <span style="color: #000000;">{</span> tempoEsperaAcender <span style="color: #008000;">=</span> value<span style="color: #008000;">;</span> <span style="color: #000000;">}</span>
                                           get <span style="color: #000000;">{</span> <span style="color: #0600FF;">return</span> tempoEsperaAcender<span style="color: #008000;">;</span> <span style="color: #000000;">}</span> <span style="color: #000000;">}</span></span>
<span style="vertical-align:top"> </span>
<span style="vertical-align:top">        <span style="color: #008080; font-style: italic;">/// </span></span>
<span style="vertical-align:top">        <span style="color: #008080; font-style: italic;">/// warning!! the alfa value must be between 0 and 255</span></span>
<span style="vertical-align:top">        <span style="color: #008080; font-style: italic;">/// </span></span>
<span style="vertical-align:top">        <span style="color: #0600FF;">public</span> <span style="color: #FF0000;">int</span> AlfaAtual <span style="color: #000000;">{</span> set <span style="color: #000000;">{</span> alfaAtual <span style="color: #008000;">=</span> value<span style="color: #008000;">;</span> <span style="color: #000000;">}</span>
                               get <span style="color: #000000;">{</span> <span style="color: #0600FF;">return</span> alfaAtual<span style="color: #008000;">;</span> <span style="color: #000000;">}</span> <span style="color: #000000;">}</span></span>
<span style="vertical-align:top"> </span>
<span style="vertical-align:top">        <span style="color: #008080; font-style: italic;">/// </span></span>
<span style="vertical-align:top">        <span style="color: #008080; font-style: italic;">/// value in seconds, the value may be fractional. is the time waited </span></span>
<span style="vertical-align:top">        <span style="color: #008080; font-style: italic;">/// waited to draw another image</span></span>
<span style="vertical-align:top">        <span style="color: #0600FF;">public</span> <span style="color: #FF0000;">double</span> TempoEsperaFim <span style="color: #000000;">{</span> set <span style="color: #000000;">{</span> tempoEsperaFim <span style="color: #008000;">=</span> value<span style="color: #008000;">;</span> <span style="color: #000000;">}</span>
                                       get <span style="color: #000000;">{</span> <span style="color: #0600FF;">return</span> tempoEsperaFim<span style="color: #008000;">;</span> <span style="color: #000000;">}</span> <span style="color: #000000;">}</span></span>
<span style="vertical-align:top"> </span>
<span style="vertical-align:top">        <span style="color: #008080; font-style: italic;">/// </span></span>
<span style="vertical-align:top">        <span style="color: #008080; font-style: italic;">/// The velocity that alfa changes</span></span>
<span style="vertical-align:top">        <span style="color: #008080; font-style: italic;">/// </span></span>
<span style="vertical-align:top">        <span style="color: #0600FF;">public</span> <span style="color: #FF0000;">int</span> VelAlfa <span style="color: #000000;">{</span> get <span style="color: #000000;">{</span> <span style="color: #0600FF;">return</span> velAlfa<span style="color: #008000;">;</span> <span style="color: #000000;">}</span> set <span style="color: #000000;">{</span> velAlfa <span style="color: #008000;">=</span> value<span style="color: #008000;">;</span> <span style="color: #000000;">}</span> <span style="color: #000000;">}</span></span>
<span style="vertical-align:top"> </span>
<span style="vertical-align:top">        <span style="color: #008080; font-style: italic;">/// </span></span>
<span style="vertical-align:top">        <span style="color: #008080; font-style: italic;">/// time to wait in seconds of the duration of the fully painted image</span></span>
<span style="vertical-align:top">        <span style="color: #008080; font-style: italic;">/// </span></span>
<span style="vertical-align:top">        <span style="color: #0600FF;">public</span> <span style="color: #FF0000;">double</span> TempoAcesa <span style="color: #000000;">{</span> get <span style="color: #000000;">{</span> <span style="color: #0600FF;">return</span> tempoAcesa<span style="color: #008000;">;</span> <span style="color: #000000;">}</span>
                                   set <span style="color: #000000;">{</span> tempoAcesa <span style="color: #008000;">=</span> value<span style="color: #008000;">;</span> <span style="color: #000000;">}</span> <span style="color: #000000;">}</span></span>
<span style="vertical-align:top"> </span>
<span style="vertical-align:top">        <span style="color: #008080; font-style: italic;">/// </span></span>
<span style="vertical-align:top">        <span style="color: #008080; font-style: italic;">/// the exact time of the end of the last image state</span></span>
<span style="vertical-align:top">        <span style="color: #008080; font-style: italic;">/// </span></span>
<span style="vertical-align:top">        <span style="color: #0600FF;">public</span> <span style="color: #FF0000;">double</span> HoraInicioAcesa <span style="color: #000000;">{</span> set <span style="color: #000000;">{</span> horaInicioAcesa <span style="color: #008000;">=</span> value<span style="color: #008000;">;</span> <span style="color: #000000;">}</span>
                                        get <span style="color: #000000;">{</span> <span style="color: #0600FF;">return</span> horaInicioAcesa<span style="color: #008000;">;</span> <span style="color: #000000;">}</span> <span style="color: #000000;">}</span></span>
<span style="vertical-align:top"> </span>
<span style="vertical-align:top">        <span style="color: #008080;">#endregion</span></span>
<span style="vertical-align:top"> </span>
<span style="vertical-align:top">        <span style="color: #008080; font-style: italic;">/// </span></span>
<span style="vertical-align:top">        <span style="color: #008080; font-style: italic;">/// Class construtor</span></span>
<span style="vertical-align:top">        <span style="color: #008080; font-style: italic;">/// </span></span>
<span style="vertical-align:top">        <span style="color: #008080; font-style: italic;">/// </span></span></pre>
<p>parameter passed to be used to load the image<br />
<span style="vertical-align:top"> <span style="color: #008080; font-style: italic;">/// </span></span></p>
<p>the adress of the image<br />
<span style="vertical-align:top"> <span style="color: #008080; font-style: italic;">/// </span></span></p>
<p>the velocity of changing alfa<br />
<span style="vertical-align:top"> <span style="color: #008080; font-style: italic;">/// </span></span></p>
<p>time waited before start drawing the image<br />
<span style="vertical-align:top"> <span style="color: #008080; font-style: italic;">/// </span></span></p>
<p>time waited on the image state fully draw<br />
<span style="vertical-align:top"> <span style="color: #008080; font-style: italic;">/// </span></span></p>
<p>time waited after the draw becomes transparent<br />
<span style="vertical-align:top"> <span style="color: #0600FF;">public</span> Fade<span style="color: #000000;">(</span>Game1 game, <span style="color: #FF0000;">string</span> theFilePathAndName, <span style="color: #FF0000;">int</span> inc, <span style="color: #FF0000;"><br />
double</span> tempoEsperaAcender, <span style="color: #FF0000;">Double</span> tAcesa, <span style="color: #FF0000;">double</span> tempoEsperaFim<span style="color: #000000;">)</span></span><br />
<span style="vertical-align:top"> <span style="color: #000000;">{</span></span><br />
<span style="vertical-align:top"> TempoEsperaFim <span style="color: #008000;">=</span> tempoEsperaFim<span style="color: #008000;">;</span></span><br />
<span style="vertical-align:top"> fonte <span style="color: #008000;">=</span> game.<span style="color: #0000FF;">Content</span>.<span style="color: #0000FF;">Load</span><span style="color: #008000;">&lt;</span>SpriteFont<span style="color: #008000;">&gt;</span><span style="color: #000000;">(</span><span style="color: #666666;">@&#8221;fonts\arial&#8221;</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span></span><br />
<span style="vertical-align:top"> TempoEsperaAcender <span style="color: #008000;">=</span> tempoEsperaAcender<span style="color: #008000;">;</span></span><br />
<span style="vertical-align:top"> TempoAcesa <span style="color: #008000;">=</span> tAcesa<span style="color: #008000;">;</span></span><br />
<span style="vertical-align:top"> AlfaAtual <span style="color: #008000;">=</span> <span style="color: #FF0000;">0</span><span style="color: #008000;">;</span></span><br />
<span style="vertical-align:top"> MeuEstado <span style="color: #008000;">=</span> estadoImg.<span style="color: #0000FF;">Apagada</span><span style="color: #008000;">;</span></span><br />
<span style="vertical-align:top"> textura <span style="color: #008000;">=</span> game.<span style="color: #0000FF;">Content</span>.<span style="color: #0000FF;">Load</span><span style="color: #008000;">&lt;</span>Texture2D<span style="color: #008000;">&gt;</span><span style="color: #000000;">(</span>theFilePathAndName<span style="color: #000000;">)</span> <span style="color: #0600FF;">as</span> Texture2D<span style="color: #008000;">;</span></span><br />
<span style="vertical-align:top"> tempoEsperaAcender <span style="color: #008000;">=</span> <span style="color: #FF0000;">2</span><span style="color: #008000;">;</span> </span><br />
<span style="vertical-align:top"> velAlfa <span style="color: #008000;">=</span> inc<span style="color: #008000;">;</span></span><br />
<span style="vertical-align:top"> <span style="color: #000000;">}</span></span><br />
<span style="vertical-align:top"> </span><br />
<span style="vertical-align:top"> </span><br />
<span style="vertical-align:top"> </span><br />
<span style="vertical-align:top"> <span style="color: #008080; font-style: italic;">/// </span></span><br />
<span style="vertical-align:top"> <span style="color: #008080; font-style: italic;">/// updates the object </span></span><br />
<span style="vertical-align:top"> <span style="color: #008080; font-style: italic;">/// </span></span><br />
<span style="vertical-align:top"> <span style="color: #008080; font-style: italic;">/// </span></span></p>
<p>game time<br />
<span style="vertical-align:top"> <span style="color: #0600FF;">public</span> <span style="color: #0600FF;">void</span> Update<span style="color: #000000;">(</span>GameTime theGameTime<span style="color: #000000;">)</span></span><br />
<span style="vertical-align:top"> <span style="color: #000000;">{</span></span><br />
<span style="vertical-align:top"> <span style="color: #0600FF;">switch</span> <span style="color: #000000;">(</span>MeuEstado<span style="color: #000000;">)</span></span><br />
<span style="vertical-align:top"> <span style="color: #000000;">{</span></span><br />
<span style="vertical-align:top"> <span style="color: #008080; font-style: italic;">// caso inicial, espera para comecar a acender</span></span><br />
<span style="vertical-align:top"> <span style="color: #0600FF;">case</span> estadoImg.<span style="color: #0000FF;">Apagada</span><span style="color: #008000;">:</span></span><br />
<span style="vertical-align:top"><span style="color: #008080; font-style: italic;"> // atualiza o contador de espera para acender</span></span><span style="vertical-align:top"><br />
tempoEsperaAcender <span style="color: #008000;">-=</span> theGameTime.<span style="color: #0000FF;">ElapsedGameTime</span>.<span style="color: #0000FF;">TotalSeconds</span><span style="color: #008000;">;</span> </span><br />
<span style="vertical-align:top"><span style="color: #008080; font-style: italic;">// testa se ja tá na hora de comecar a acender</span></span><span style="vertical-align:top"> <span style="color: #0600FF;"><br />
if</span> <span style="color: #000000;">(</span>tempoEsperaAcender <span style="color: #008000;">&lt;=</span> <span style="color: #FF0000;">0</span><span style="color: #000000;">)</span> </span><br />
<span style="vertical-align:top"> MeuEstado <span style="color: #008000;">=</span> estadoImg.<span style="color: #0000FF;">Acendendo</span><span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">// comeca a acender</span></span><br />
<span style="vertical-align:top"> break<span style="color: #008000;">;</span></span><br />
<span style="vertical-align:top"> </span><br />
<span style="vertical-align:top"> <span style="color: #008080; font-style: italic;">// caso onde a imagem esta comecando a acender</span></span><br />
<span style="vertical-align:top"> <span style="color: #0600FF;">case</span> estadoImg.<span style="color: #0000FF;">Acendendo</span><span style="color: #008000;">:</span></span><br />
<span style="vertical-align:top"> AlfaAtual <span style="color: #008000;">+=</span> velAlfa<span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">// incrementa o canal de alfa</span></span><br />
<span style="vertical-align:top"> <span style="color: #0600FF;">if</span> <span style="color: #000000;">(</span>AlfaAtual <span style="color: #008000;">&gt;</span> <span style="color: #FF0000;">255</span><span style="color: #000000;">)</span></span><br />
<span style="vertical-align:top"> <span style="color: #000000;">{</span></span><br />
<span style="vertical-align:top"> MeuEstado <span style="color: #008000;">=</span> estadoImg.<span style="color: #0000FF;">Acesa</span><span style="color: #008000;">;</span></span><br />
<span style="vertical-align:top"> AlfaAtual <span style="color: #008000;">=</span> <span style="color: #FF0000;">255</span><span style="color: #008000;">;</span></span><br />
<span style="vertical-align:top"> HoraInicioAcesa <span style="color: #008000;">=</span> theGameTime.<span style="color: #0000FF;">TotalRealTime</span>.<span style="color: #0000FF;">TotalSeconds</span><span style="color: #008000;">;</span></span><br />
<span style="vertical-align:top"> <span style="color: #000000;">}</span></span><br />
<span style="vertical-align:top"> break<span style="color: #008000;">;</span></span><br />
<span style="vertical-align:top"> </span><br />
<span style="vertical-align:top"> <span style="color: #008080; font-style: italic;">// caso onde a imagem está acesa e ela tem que esperar um tempo acesa</span></span><br />
<span style="vertical-align:top"> <span style="color: #0600FF;">case</span> estadoImg.<span style="color: #0000FF;">Acesa</span><span style="color: #008000;">:</span></span><br />
<span style="vertical-align:top"> <span style="color: #008080; font-style: italic;">// se o tempo q ela está acesa passar do tempo q foi dito<br />
// para ela ficar</span></span><br />
<span style="vertical-align:top"> <span style="color: #0600FF;">if</span> <span style="color: #000000;">(</span>TempoAcesa <span style="color: #008000;">&lt;=</span> theGameTime.<span style="color: #0000FF;">TotalRealTime</span>.<span style="color: #0000FF;">TotalSeconds</span> <span style="color: #008000;"><br />
-</span> HoraInicioAcesa<span style="color: #000000;">)</span></span><br />
<span style="vertical-align:top"> <span style="color: #000000;">{</span></span><br />
<span style="vertical-align:top"> MeuEstado <span style="color: #008000;">=</span> estadoImg.<span style="color: #0000FF;">Apagando</span><span style="color: #008000;">;</span></span><br />
<span style="vertical-align:top"> <span style="color: #000000;">}</span></span><br />
<span style="vertical-align:top"> break<span style="color: #008000;">;</span></span><br />
<span style="vertical-align:top"> </span><br />
<span style="vertical-align:top"> <span style="color: #008080; font-style: italic;">// caso em que a imagem está apagando</span></span><br />
<span style="vertical-align:top"> <span style="color: #0600FF;">case</span> estadoImg.<span style="color: #0000FF;">Apagando</span><span style="color: #008000;">:</span></span><br />
<span style="vertical-align:top"> AlfaAtual <span style="color: #008000;">-=</span> velAlfa<span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">// vai diminuido o alfa</span></span><br />
<span style="vertical-align:top"> <span style="color: #0600FF;">if</span> <span style="color: #000000;">(</span>AlfaAtual <span style="color: #008000;">&lt;=</span> <span style="color: #FF0000;">0</span><span style="color: #000000;">)</span> <span style="color: #008080; font-style: italic;">// se tiver apagado tudo, muda o estado</span></span><br />
<span style="vertical-align:top"> <span style="color: #000000;">{</span></span><br />
<span style="vertical-align:top"> MeuEstado <span style="color: #008000;">=</span> estadoImg.<span style="color: #0000FF;">PreFim</span><span style="color: #008000;">;</span></span><br />
<span style="vertical-align:top"> AlfaAtual <span style="color: #008000;">=</span> <span style="color: #FF0000;">0</span><span style="color: #008000;">;</span></span><br />
<span style="vertical-align:top"> HoraInicioAcesa <span style="color: #008000;">=</span> theGameTime.<span style="color: #0000FF;">TotalRealTime</span>.<span style="color: #0000FF;">TotalSeconds</span><span style="color: #008000;">;</span> </span><br />
<span style="vertical-align:top"> <span style="color: #000000;">}</span></span><br />
<span style="vertical-align:top"> break<span style="color: #008000;">;</span></span><br />
<span style="vertical-align:top"> </span><br />
<span style="vertical-align:top"> <span style="color: #008080; font-style: italic;">// caso a imagem apague, espera por um tempo dps permite outra<br />
// imagem aparecer</span></span><br />
<span style="vertical-align:top"> <span style="color: #0600FF;">case</span> estadoImg.<span style="color: #0000FF;">PreFim</span><span style="color: #008000;">:</span></span><br />
<span style="vertical-align:top"> <span style="color: #0600FF;">if</span> <span style="color: #000000;">(</span>TempoEsperaFim <span style="color: #008000;">&lt;=</span> theGameTime.<span style="color: #0000FF;">TotalRealTime</span>.<span style="color: #0000FF;">TotalSeconds</span><br />
<span style="color: #008000;">-</span> HoraInicioAcesa<span style="color: #000000;">)</span></span><br />
<span style="vertical-align:top"> <span style="color: #000000;">{</span></span><br />
<span style="vertical-align:top"> MeuEstado <span style="color: #008000;">=</span> estadoImg.<span style="color: #0000FF;">Fim</span><span style="color: #008000;">;</span></span><br />
<span style="vertical-align:top"> <span style="color: #000000;">}</span></span><br />
<span style="vertical-align:top"> break<span style="color: #008000;">;</span></span><br />
<span style="vertical-align:top"> <span style="color: #008080; font-style: italic;">// nao faz nada qnd apaga</span></span><br />
<span style="vertical-align:top"> <span style="color: #0600FF;">case</span> estadoImg.<span style="color: #0000FF;">Fim</span><span style="color: #008000;">:</span></span><br />
<span style="vertical-align:top"> break<span style="color: #008000;">;</span></span><br />
<span style="vertical-align:top"> <span style="color: #000000;">}</span></span><br />
<span style="vertical-align:top"> <span style="color: #000000;">}</span></span><br />
<span style="vertical-align:top"> </span><br />
<span style="vertical-align:top"> <span style="color: #008080; font-style: italic;">/// </span></span><br />
<span style="vertical-align:top"> <span style="color: #008080; font-style: italic;">/// the method draw</span></span><br />
<span style="vertical-align:top"> <span style="color: #008080; font-style: italic;">/// </span></span><br />
<span style="vertical-align:top"> <span style="color: #008080; font-style: italic;">/// </span></span></p>
<p>the spritebatch<br />
<span style="vertical-align:top"> <span style="color: #008080; font-style: italic;">/// </span></span></p>
<p>the position X<br />
<span style="vertical-align:top"> <span style="color: #008080; font-style: italic;">/// </span></span></p>
<p>the position Y<br />
<span style="vertical-align:top"> <span style="color: #0600FF;">public</span> <span style="color: #0600FF;">void</span> Draw<span style="color: #000000;">(</span>SpriteBatch theBatch, <span style="color: #FF0000;">int</span> theXPosition, <span style="color: #FF0000;">int</span> theYPosition<span style="color: #000000;">)</span></span><br />
<span style="vertical-align:top"> <span style="color: #000000;">{</span></span><br />
<span style="vertical-align:top"> theBatch.<span style="color: #0000FF;">Draw</span><span style="color: #000000;">(</span>textura,<br />
<a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span style="color: #008000;">new</span></a> Rectangle<span style="color: #000000;">(</span>theXPosition, theYPosition, textura.<span style="color: #0000FF;">Width</span>, textura.<span style="color: #0000FF;">Height</span><span style="color: #000000;">)</span>,<br />
<a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span style="color: #008000;">new</span></a> Color<span style="color: #000000;">(</span><span style="color: #FF0000;">255</span>, <span style="color: #FF0000;">255</span>, <span style="color: #FF0000;">255</span>, <span style="color: #000000;">(</span><span style="color: #FF0000;">byte</span><span style="color: #000000;">)</span>MathHelper.<span style="color: #0000FF;">Clamp</span><span style="color: #000000;">(</span>alfaAtual, <span style="color: #FF0000;">0</span>, <span style="color: #FF0000;">255</span><span style="color: #000000;">)</span><span style="color: #000000;">)</span><span style="color: #000000;">)</span><span style="color: #008000;">;</span></span><br />
<span style="vertical-align:top"> <span style="color: #000000;">}</span></span><br />
<span style="vertical-align:top"> </span><br />
<span style="vertical-align:top"> <span style="color: #000000;">}</span></span><br />
<span style="vertical-align:top"><span style="color: #000000;">}</span></span><br />
<span style="vertical-align:top"> </span></td>
</tr>
</tbody>
</table>
<p>Com essa idéia, pude fazer com que se desenhasse uma imagem apos a outra, instanciando um objeto de cada vez e transitando de uma imagem para outra quando a anterior chegar no estado fim.</p>
]]></content:encoded>
			<wfw:commentRss>http://tolstenko.net/2009/05/28/classe-fade/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>#00 &#8211; Apresentação</title>
		<link>http://tolstenko.net/2009/02/12/17/</link>
		<comments>http://tolstenko.net/2009/02/12/17/#comments</comments>
		<pubDate>Thu, 12 Feb 2009 20:05:52 +0000</pubDate>
		<dc:creator>Alexandre</dc:creator>
				<category><![CDATA[XNA]]></category>
		<category><![CDATA[begining]]></category>
		<category><![CDATA[creators]]></category>
		<category><![CDATA[developer center]]></category>
		<category><![CDATA[game programming]]></category>
		<category><![CDATA[Gamux]]></category>
		<category><![CDATA[jogos]]></category>
		<category><![CDATA[Unicamp]]></category>
		<category><![CDATA[xna creators club]]></category>

		<guid isPermaLink="false">http://tolstenko.net/?p=17</guid>
		<description><![CDATA[<a href="http://tolstenko.net/2009/02/12/17/"><img align="left" hspace="5" width="150" height="150" src="http://tolstenko.net/wp-content/uploads/2009/02/apresentacao-150x150.jpg" class="alignleft wp-post-image tfe" alt="apresentacao" title="apresentacao" /></a><p></p>
<p>Começo com esse post, uma série de artigos desenvolvidos por mim com o intúito de aprender ensinar como programar jogos em XNA. O mote desse projeto é o fato consumado de que muitos brasileiros são apaixonados por jogos, inclusive eu, mas não possuem, à sua disposição, um material tal qual eu busco construir seguindo essas [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://tolstenko.net/2009/02/12/17/"><img class="size-full wp-image-30 alignleft" title="apresentacao" src="http://tolstenko.net/wp-content/uploads/2009/02/apresentacao.jpg" alt="apresentacao" width="315" height="315" /></a></p>
<p>Começo com esse post, uma série de artigos desenvolvidos por mim com o intúito de <span style="text-decoration: line-through;">aprender</span> ensinar como programar jogos em XNA. O mote desse projeto é o fato consumado de que muitos brasileiros são apaixonados por jogos, inclusive eu, mas não possuem, à sua disposição, um material tal qual eu busco construir seguindo essas diretivas:</p>
<ul>
<li> Claro (fácil de entender);</li>
<li>Conciso (o material todo mastigadinho e resumido);</li>
<li>Dinâmico (enérgico, se bate de um lado e ja está do outro);</li>
<li>Referenciável (como um caderno de consulta por assuntos estudados);</li>
<li>Em português (nossa! é um horror ter que ler tudo em inglês);</li>
<li>E o mais importante de tudo: um material <span style="text-decoration: underline;">DIVERTIDO</span>.</li>
<p><span id="more-17"></span></ul>
<p>Irei fazer o processo inverso de uma produção de artigos, ou séries de artigos: falarei primeiro das referências usadas para o estudo. Pois assim fica mais fácil para os curiosos que<span style="text-decoration: line-through;">, come eu,</span> gostam de pular algumas etapas no aprendizado. E de qualquer forma, poderei livremente falar usando citações, sem que me <span style="text-decoration: line-through;">importunem</span> chamem à atenção sobre direitos autorais.</p>
<ol>
<li><img class="alignnone size-full wp-image-16" title="prefessional-xna-game-programming" src="http://tolstenko.net/wp-content/uploads/2009/02/prefessional-xna-game-programming.jpg" alt="prefessional-xna-game-programming" width="118" height="150" /> &#8211; Professional XNA Game Programming &#8211; Meu primeiro livro sobre XNA. Focado no XNA 1.0, que sofreu algumas mudanças, mas com ele aprendí as idéias e a logica desse tipo de programação. Possui muito código de exemplo e também explica muitissimo bem.</li>
<li><img class="alignnone size-medium wp-image-23" title="beginning-xna-20-game-programming-from-novice-to-professional" src="http://tolstenko.net/wp-content/uploads/2009/02/beginning-xna-20-game-programming-from-novice-to-professional.jpg" alt="beginning-xna-20-game-programming-from-novice-to-professional" width="192" height="254" /> &#8211; Begining XNA 2.0 Game programming &#8211; From Novice to Professional. Busquei esse livre mais pelo fato dos escritores serem brasileiros e para me atualizar para as mudanças para XNA 2.0.</li>
<li><img class="alignnone size-full wp-image-24" title="learning-xna-30" src="http://tolstenko.net/wp-content/uploads/2009/02/learning-xna-30.jpg" alt="learning-xna-30" width="194" height="254" /> &#8211; Learning XNA 3.0. Estou comprando esse hoje, espero que chegue inteiro e não se perca pelo meio do caminho. Nem sei como vai ser. Pelo que eu li&#8230; parece que promete.</li>
<li><a href="http://www.lms.ic.unicamp.br:3334/">Gamux</a> &#8211; Grupo de jogos da UNICAMP. Foi lá aonde tudo começou.</li>
<li><a href="http://www.sharpgames.net">SharpGames</a> &#8211; Excelente lugar para se encontrar material em português.</li>
<li><a href="http://creators.xna.com">XNA Creators Club</a>- O lugar onde as pessoas podem encontrar exemplos de codigos para baixar, e, tambem starterkits.</li>
<li><a href="http://msdn.microsoft.com/en-us/xna/default.aspx">Xna Developer Center</a> e <a href="http://msdn.microsoft.com/en-us/library/bb200104.aspx">XNA Library</a> &#8211; Material mais hardcore e guia de referencia de funções.</li>
</ol>
<p>Agora é &#8220;só&#8221; falta seguir essas coisas que daqui à pouco alguem da MS Games te liga te chamando para trabalhar lá&#8230; (huahehaui) Ai ai&#8230; mas não tem nada não, sonhar faz bem né?</p>
<p>Só para não estimular tanto vocês, os programadores de games de verdade programam em algo semelhante ao <a href="http://pt.wikipedia.org/wiki/Assembly">Assembly</a>. <span style="text-decoration: line-through;">E aí negão, tú se lascou! (heahuheuhi)</span> Mas não desestimulem não, porque se aprendermos um framework do nível do XNA, passar para qualquer outra coisa fica muito mais fácil.</p>
<p>Aquele abraço!</p>
]]></content:encoded>
			<wfw:commentRss>http://tolstenko.net/2009/02/12/17/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->