<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2211950964556159463</id><updated>2011-12-17T02:23:37.674-02:00</updated><category term='Dicas para Iniciantes'/><category term='Diário de Aprendizado'/><category term='projetos'/><category term='rodrigo strauss'/><category term='Entrevistas'/><category term='Tutoriais'/><category term='Links para Tutoriais'/><category term='Organização pessoal'/><category term='Links para IDEs'/><category term='Off-topic'/><category term='Planejamento'/><category term='Links para outros Blogs'/><category term='Introdução'/><category term='empreendedorismo'/><title type='text'>Aprendendo C++: Do ZERO ao MESTRE</title><subtitle type='html'>Fiz esse Blog para servir como um guia para quem deseja aprender C++ avançado, do ZERO, com foco em programação de jogos usando livrarias Open-Source (Ogre 3D, SDL, Newton, etc).

Se você está cansado de tutoriais que só ensinam a escrever numa tela preta, você veio ao lugar certo. Aqui vou procurar ensinar o básico com exemplos avançados, mostrando a teoria na prática.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://dozeroaomestre.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2211950964556159463/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://dozeroaomestre.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Rafael Beckel</name><uri>http://www.blogger.com/profile/01830105071166080182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Ai3cuiX4grk/TQ5xoUpX6KI/AAAAAAAAAM8/dFw03bJ_PFQ/S220/Twitter.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2211950964556159463.post-882740581873829504</id><published>2011-08-05T15:22:00.000-03:00</published><updated>2011-08-05T15:22:13.051-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diário de Aprendizado'/><category scheme='http://www.blogger.com/atom/ns#' term='projetos'/><title type='text'>Renascendo - ou Os Desafios de aprender C e C++</title><content type='html'>Oi pessoal,&lt;br /&gt;&lt;br /&gt;Tem um bom tempo que não escrevo nesse Blog. Muita coisa aconteceu desde que criei o primeiro post. Quando comecei, imaginei usar a livraria do &lt;a href="http://ogre3d.org/"&gt;Ogre&lt;/a&gt; e o &lt;a href="http://www.libsdl.org/"&gt;SDL&lt;/a&gt; para criar um game simples, que pudesse ser usado como tutorial e alguém pudesse aprender alguma coisa com isso.&lt;br /&gt;&lt;br /&gt;A idéia central era "ensinar enquanto aprendia", assim todos poderiam aprender juntos. Porém, por razões pessoais e profissionais, eu não conseguia ter mais tempo livre para estudar o Ogre e o SDL, então por consequência acabei parando de escrever aqui.&lt;br /&gt;&lt;br /&gt;Embora eu tenha deixado essas duas livrarias um pouco de lado, meu interesse em C/C++ não diminuiu e eu continuei estudando sempre que podia. Peço desculpas por não compartilhar meu progresso por aqui, porque pensei que como o que eu estudava não estava diretamente relacionado à proposta de um game 3D, pensei que aqui não seria o lugar correto para escrever.&lt;br /&gt;&lt;br /&gt;Aprendi nesse processo que o desafio de aprender C e C++ está muito além da linguem em si. As linguagens são fáceis. Não muda muita coisa em relação a todas as outras. O desafio, na verdade, é que para aproveitá-las ao máximo você precisa estudar os fundamentos do funcionamento de um computador. Precisa voltar um pouco na história, ver o contexto em que elas foram criadas, daí a coisa começa a fazer mais sentido.&lt;br /&gt;&lt;br /&gt;Outra grande dificuldade é que não existe um repositório central de informações sobre C. Diferentemente do PHP, por exemplo, que possui o &lt;a href="http://www.php.net/manual/pt_BR/index.php"&gt;manual no php.net&lt;/a&gt;, com tudo explicadinho e cheio de exemplos, com o C a gente precisa fuçar muito mais. Em geral, os tutoriais na internet são básicos, explicam o uso das funções e tal, mas em lugar algum você vai achar exemplos avançados, a não ser que baixe o código de programas open-source pra estudar.&lt;br /&gt;&lt;br /&gt;Não estou com os links de todas as referências que andei fuçando (fica para um próximo post), mas pra quem tem interesse nos fundamentos, passo o link &lt;a href="http://www.google.com.br/url?sa=t&amp;amp;source=web&amp;amp;cd=5&amp;amp;sqi=2&amp;amp;ved=0CEoQFjAE&amp;amp;url=http%3A%2F%2Fnet.pku.edu.cn%2F%7Ecourse%2Fcs101%2F2008%2Fresource%2FThe_C_Programming_Language.pdf&amp;amp;rct=j&amp;amp;q=the%20c%20programming%20language&amp;amp;ei=yiI8Tpz5IImatweru6iKAw&amp;amp;usg=AFQjCNEt5_YR3UBuDCIz2biVm0hQxjBjug&amp;amp;cad=rja"&gt;do livro do Dennis Ritchie&lt;/a&gt;, criador da linguagem C. Passo também o link do &lt;a href="http://gwan.ch/"&gt;Gwan&lt;/a&gt;, hoje o servidor web mais rápido do mundo, que permite que você escreva em C direto, sem compilar (você salva o arquivo, o servidor compila em real-time e voilà, seu programa tá funcionando). Finalmente, pra quem quiser fuçar o código-fonte de alguma coisa, é interessante olhar a evolução da &lt;a href="http://www.lua.org/"&gt;linguagem de programação Lua&lt;/a&gt;, que foi feita em C. O código fonte está &lt;a href="http://www.lua.org/ftp"&gt;aqui&lt;/a&gt;, recomendo baixar o &lt;a href="http://www.lua.org/ftp/lua-all.tar.gz"&gt;lua-all.tar.gz&lt;/a&gt; e ler o documento em que os criadores &lt;a href="http://www.lua.org/history.html"&gt;descrevem sua evolução&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Vou tentar pegar um tempo livre nesse final de semana pra migrar esse blog para Wordpress e dividí-lo em duas partes: uma para os fundamentos da linguagem e outra para o tal do game 3D que todos estão esperando. Espero poder cumprir minha missão dessa vez, sem interrupções.&lt;br /&gt;&lt;br /&gt;Abraço a todos,&lt;br /&gt;Rafael&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2211950964556159463-882740581873829504?l=dozeroaomestre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dozeroaomestre.blogspot.com/feeds/882740581873829504/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2211950964556159463&amp;postID=882740581873829504' title='19 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2211950964556159463/posts/default/882740581873829504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2211950964556159463/posts/default/882740581873829504'/><link rel='alternate' type='text/html' href='http://dozeroaomestre.blogspot.com/2011/08/renascendo-ou-os-desafios-de-aprender-c.html' title='Renascendo - ou Os Desafios de aprender C e C++'/><author><name>Rafael Beckel</name><uri>http://www.blogger.com/profile/01830105071166080182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Ai3cuiX4grk/TQ5xoUpX6KI/AAAAAAAAAM8/dFw03bJ_PFQ/S220/Twitter.png'/></author><thr:total>19</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2211950964556159463.post-550023902263507802</id><published>2009-11-23T13:56:00.003-02:00</published><updated>2009-11-23T14:50:02.939-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rodrigo strauss'/><category scheme='http://www.blogger.com/atom/ns#' term='empreendedorismo'/><category scheme='http://www.blogger.com/atom/ns#' term='projetos'/><title type='text'>Ressurgindo das cinzas</title><content type='html'>Depois que quase 1 ano parado, decidi retomar esse blog. Existem 3 motivos que me levaram a tomar essa decisão. O primeiro deles é que agora estou trabalhando por conta própria (num &lt;a href="http://www.ptodecontato.com.br"&gt;escritório muito legal&lt;/a&gt; que eu recomendo a todos) e assim minha agenda está mais flexível.&lt;br /&gt;&lt;br /&gt;O segundo é que recebi uma proposta de dar aula numa universidade em Belém-PA, e a pessoa me achou através desse blog que estava parado. Ou seja: isso aqui é uma vitrine e eu tenho que cuidar bem dela.&lt;br /&gt;&lt;br /&gt;O terceiro motivo vai ser o tema desse post. Sexta passada encontrei pessoalmente o Rodrigo Strauss. Sim, ele mesmo, o cara do &lt;a href="http://www.1bit.com.br"&gt;1bit&lt;/a&gt;, que concedeu uma &lt;a href="http://dozeroaomestre.blogspot.com/2009/02/entrevista-rodrigo-strauss.html"&gt;entrevista&lt;/a&gt; a esse mesmo blog lááá no comecinho do ano.&lt;br /&gt;&lt;br /&gt;Ele me encontrou num comentário do site da &lt;a href="http://www.resultson.com.br/"&gt;ResultsON&lt;/a&gt;, em que escrevi alguma coisa sobre empreendedorismo, e lembrou do meu nome "de algum lugar". Daí ele resolveu fuçar nos e-mails dele (de quando eu o convidei para a entrevista) e achou meu telefone. Então ele me ligou e tivemos uma conversa sobre dominar o mundo e resolvemos marcar no mesmo dia na Av. Paulista.&lt;br /&gt;&lt;br /&gt;Falamos sobre nossos projetos pessoais, planos para o futuro e, principalmente, sobre a sina de pessoas criativas que não conseguem levar um projeto até o final (depois dessa conversa, me senti melhor porque vi que não sou só eu que sofro desse problema).&lt;br /&gt;&lt;br /&gt;Nesse último item, nos estendemos bastante, porque é um ponto que concordamos. Acho que vale a pena postar aqui, porque acredito que não somos as únicas pessoas do mundo que passam por isso.&lt;br /&gt;&lt;br /&gt;Veja se você se identifica:&lt;br /&gt;- Todos os projetos são lindos no início. É divertido criar, ter idéias mirabolantes e colocá-las no papel. Você se empolga e começa a trabalhar nela.&lt;br /&gt;&lt;br /&gt;- Aí vem a segunda fase. No primeiro, segundo e terceiro mês você está empolgado trabalhando, desenvolvendo tudo aquilo que você colocou no papel.&lt;br /&gt;&lt;br /&gt;- Depois vem a terceira fase (e última para a maioria das pessoas): seu código começa a dar bug, você tem que refatorar, resolver pequenos pepinos, ou, se não for projeto de software, você se depara com questões legais, administrativas, financeiras, burocráticas, pessoais ou, que seja, espirituais.&lt;br /&gt;&lt;br /&gt;- Ao mesmo tempo em que isso acontece, você está com outras 500 idéias maravilhosas na cabeça gritando para que sejam colocadas no papel. Então, as pessoas criativas sentam de novo e começam a desenhar, voltando para a primeira fase e perdendo meses (ou até anos) de trabalho porque não ficaram firmes o suficiente para passar por cima dos obstáculos.&lt;br /&gt;&lt;br /&gt;Conversamos bastante sobre isso e vimos que estamos alinhados nesse ponto. Ambos estão com pique de pegar um projeto e tocá-lo ATÉ O FIM, mesmo que isso signifique sacrificar outras boas idéias. &lt;span style="font-weight: bold;"&gt;Então decidimos publicar nosso problema para encontrar outras pessoas que passam por isso&lt;/span&gt;, para criarmos um grupo no estilo Alcóolicos Anônimos, em que a galera se encontra pra dizer "Eu estou há 3 meses sem trocar de projeto". =D&lt;br /&gt;&lt;br /&gt;Claro que a coisa pode ser mais informal, regada a cerveja e petisco em algum bar de São Paulo, mas o intuito é o mesmo: pessoas que se encontram para trocar idéias e se ajudar mutuamente.&lt;br /&gt;&lt;br /&gt;Se você leu até aqui e ficou interessado, escreva para o meu e-mail: rafaelbeckel@gmail.com ou me siga no Twitter: @rafaelbeckel. Você pode seguir o Rodrigo Strauss também, ele ficou de postar alguma coisa sobre isso: @rodrigostrauss.&lt;br /&gt;&lt;br /&gt;Espero que saia algum fruto muito produtivo dessas conversas, para todas as pessoas envolvidas. Te encontro lá! =)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2211950964556159463-550023902263507802?l=dozeroaomestre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dozeroaomestre.blogspot.com/feeds/550023902263507802/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2211950964556159463&amp;postID=550023902263507802' title='7 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2211950964556159463/posts/default/550023902263507802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2211950964556159463/posts/default/550023902263507802'/><link rel='alternate' type='text/html' href='http://dozeroaomestre.blogspot.com/2009/11/ressurgindo-das-cinzas.html' title='Ressurgindo das cinzas'/><author><name>Rafael Beckel</name><uri>http://www.blogger.com/profile/01830105071166080182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Ai3cuiX4grk/TQ5xoUpX6KI/AAAAAAAAAM8/dFw03bJ_PFQ/S220/Twitter.png'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2211950964556159463.post-1903983153594862560</id><published>2009-03-06T14:39:00.017-03:00</published><updated>2009-03-09T14:34:21.039-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dicas para Iniciantes'/><category scheme='http://www.blogger.com/atom/ns#' term='Tutoriais'/><category scheme='http://www.blogger.com/atom/ns#' term='Links para IDEs'/><title type='text'>Tutorial 01- Configurando o SDL</title><content type='html'>&lt;span style="font-size:78%;"&gt;&lt;span&gt;Para saber o que é esse blog, leia o post &lt;a href="http://dozeroaomestre.blogspot.com/2008/07/hello-world.html"&gt;Hello World&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Paraver o índice dos tutoriais, clique &lt;a href="http://dozeroaomestre.blogspot.com/2009/03/desvendando-o-sdl-simple-directmedia.html"&gt;aqui&lt;/a&gt;.&lt;/span&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;Tutorial 01: Configurando o SDL&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;i&gt;&lt;span style="color:black;"&gt;Nesse tutorial, vou ensinar a configurar o &lt;a href="http://www.libsdl.org/"&gt;SDL&lt;/a&gt; com o &lt;a href="http://www.codeblocks.org/"&gt;Code::Blocks&lt;/a&gt; e o compilador MingW no Windows. O Code::Blocks é o meu editor de escolha porque eu uso uma máquina que tem um dual-boot Com Linux (&lt;a href="http://www.ubuntu.com/"&gt;Ubuntu&lt;/a&gt;) e Windows, e preciso de um IDE multiplataforma (uso Linux 90% do tempo e preciso de um editor compatível pra usar nos outros 10%).&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;i&gt;&lt;span style="color:black;"&gt;Se você usa outro IDE, visite o &lt;a href="http://lazyfoo.net/SDL_tutorials/lesson01/index.php"&gt;tutorial do Lazy Foo&lt;/a&gt; (em inglês) para obter instruções específicas de como configurar.&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Primeiro passo:&lt;/span&gt; se você ainda não instalou o Code::Blocks, &lt;a href="http://www.codeblocks.org/downloads/5"&gt;instale agora&lt;/a&gt; a versão que já vem com o MingW (codeblocks-8.02mingw-setup.exe).&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Segundo Passo:&lt;/span&gt; instale o SDL. Faça o Download &lt;a class="tutLink" href="http://www.libsdl.org/download-1.2.php"&gt;Nessa Página&lt;/a&gt;. Role até "Development Libraries" e faça o download da livraria para MingW (Imagem Abaixo).&lt;br /&gt;&lt;/p&gt;&lt;div style="text-align: center;" class="tutImg"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Ai3cuiX4grk/SbF2htLn3qI/AAAAAAAAAHg/miQhjcq4kgc/s1600-h/download.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 369px;" src="http://1.bp.blogspot.com/_Ai3cuiX4grk/SbF2htLn3qI/AAAAAAAAAHg/miQhjcq4kgc/s400/download.jpg" alt="" id="BLOGGER_PHOTO_ID_5310155757082631842" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="tutText"&gt;&lt;div class="tutImg"&gt;&lt;img src="file:///C:/DOCUME%7E1/beckel/CONFIG%7E1/Temp/moz-screenshot-2.jpg" alt="" /&gt;&lt;/div&gt;- Extraia o arquivo .gz (se não sabe como extrair, baixe o &lt;a href="http://www.7-zip.org/"&gt;7zip&lt;/a&gt;)&lt;br /&gt;- Tem um arquivo .tar dentro dele. Extraia também.&lt;br /&gt;- Agora você pode copiar a pasta para onde quiser. Nesse exemplo vou usar a pasta &lt;span style="font-weight: bold;"&gt;C:\&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Terceiro Passo:&lt;/span&gt; inicie o Code::Blocks, vá em "File" -&gt; "New" -&gt; "Project" e crie um projeto em branco ("Empty Project"). &lt;a class="tutLink" name="6" href="http://lazyfoo.net/SDL_tutorials/lesson01/windows/codeblocks/index.php#6"&gt;&lt;/a&gt;Pode salvar seu projeto onde quiser.&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Nota: eu sei que o Code::Blocks tem um template de projeto chamado "SDL Project", mas aqui vamos configurar manualmente pra ter mais controle.&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Ai3cuiX4grk/SbF4eyGTPlI/AAAAAAAAAIg/VLSvfxmNvfw/s1600-h/template.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 296px;" src="http://2.bp.blogspot.com/_Ai3cuiX4grk/SbF4eyGTPlI/AAAAAAAAAIg/VLSvfxmNvfw/s400/template.jpg" alt="" id="BLOGGER_PHOTO_ID_5310157905886133842" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Quarto Passo:&lt;/span&gt; vá para "Project" -&gt; "Properties".&lt;a class="tutLink" name="7" href="http://lazyfoo.net/SDL_tutorials/lesson01/windows/codeblocks/index.php#7"&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: left;" class="tutImg"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Ai3cuiX4grk/SbF23ZHRqLI/AAAAAAAAAHo/oqyDoBVR32w/s1600-h/project_properties.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 181px; height: 201px;" src="http://2.bp.blogspot.com/_Ai3cuiX4grk/SbF23ZHRqLI/AAAAAAAAAHo/oqyDoBVR32w/s400/project_properties.jpg" alt="" id="BLOGGER_PHOTO_ID_5310156129652811954" border="0" /&gt;&lt;/a&gt;&lt;/div&gt; Na aba "Build Targets", selecione "Gui Application" para evitar que uma janela de console abra toda vez que você executar seu programa.&lt;a class="tutLink" name="8" href="http://lazyfoo.net/SDL_tutorials/lesson01/windows/codeblocks/index.php#8"&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class="tutImg"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Ai3cuiX4grk/SbF3Da8I6ZI/AAAAAAAAAHw/Y4N0VflYu_4/s1600-h/gui.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 330px;" src="http://1.bp.blogspot.com/_Ai3cuiX4grk/SbF3Da8I6ZI/AAAAAAAAAHw/Y4N0VflYu_4/s400/gui.jpg" alt="" id="BLOGGER_PHOTO_ID_5310156336301402514" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Quinto Passo:&lt;/span&gt; abra o menu "Settings" -&gt; "Compiler and Debugger".&lt;a class="tutLink" name="2" href="http://lazyfoo.net/SDL_tutorials/lesson01/windows/codeblocks/index.php#2"&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Nota: você pode também fazer a mesma coisa no menu "Project" -&gt; "Build Options". Qual a diferença? Em "Build Options", você está definindo as configurações do Compilador apenas para o projeto ativo (útil se vc edita mais de um projeto ao mesmo tempo que usam diferentes livrarias). Em "Settings", você está editando as configurações para todos os projetos.&lt;/span&gt;&lt;br /&gt;&lt;div class="tutImg"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Ai3cuiX4grk/SbF3VSQiAlI/AAAAAAAAAH4/Ipuik6jgbEc/s1600-h/settings.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 171px; height: 157px;" src="http://3.bp.blogspot.com/_Ai3cuiX4grk/SbF3VSQiAlI/AAAAAAAAAH4/Ipuik6jgbEc/s400/settings.jpg" alt="" id="BLOGGER_PHOTO_ID_5310156643208659538" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Sexto Passo:&lt;/span&gt; vá para a aba "Search Directories" -&gt; "Compiler" e clique em "Add".&lt;br /&gt;&lt;div class="tutImg"&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Ai3cuiX4grk/SbF3iQv5tQI/AAAAAAAAAIA/DrERcnjwghc/s1600-h/directories.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 356px;" src="http://2.bp.blogspot.com/_Ai3cuiX4grk/SbF3iQv5tQI/AAAAAAAAAIA/DrERcnjwghc/s400/directories.jpg" alt="" id="BLOGGER_PHOTO_ID_5310156866141664514" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Então escolha a pasta "include" da pasta SDL que você extraiu.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Ai3cuiX4grk/SbF3vQXjOwI/AAAAAAAAAII/ReM8LV_cEug/s1600-h/add.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 350px; height: 106px;" src="http://4.bp.blogspot.com/_Ai3cuiX4grk/SbF3vQXjOwI/AAAAAAAAAII/ReM8LV_cEug/s400/add.jpg" alt="" id="BLOGGER_PHOTO_ID_5310157089377827586" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Ai3cuiX4grk/SbF30mdjjsI/AAAAAAAAAIQ/NCOKVDoPJyo/s1600-h/include.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 323px; height: 327px;" src="http://1.bp.blogspot.com/_Ai3cuiX4grk/SbF30mdjjsI/AAAAAAAAAIQ/NCOKVDoPJyo/s400/include.jpg" alt="" id="BLOGGER_PHOTO_ID_5310157181207940802" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Ai3cuiX4grk/SbF300UZ-II/AAAAAAAAAIY/9tBF0UidmjQ/s1600-h/added.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 356px;" src="http://4.bp.blogspot.com/_Ai3cuiX4grk/SbF300UZ-II/AAAAAAAAAIY/9tBF0UidmjQ/s400/added.jpg" alt="" id="BLOGGER_PHOTO_ID_5310157184927660162" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Sétimo Passo: &lt;/span&gt;na aba "Linker", adicione a pasta "lib" da pasta SDL que você extraiu.&lt;a class="tutLink" name="4" href="http://lazyfoo.net/SDL_tutorials/lesson01/windows/codeblocks/index.php#4"&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class="tutImg"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Ai3cuiX4grk/SbF43tBp6rI/AAAAAAAAAIo/-KtS3q_qKts/s1600-h/linker.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 356px;" src="http://3.bp.blogspot.com/_Ai3cuiX4grk/SbF43tBp6rI/AAAAAAAAAIo/-KtS3q_qKts/s400/linker.jpg" alt="" id="BLOGGER_PHOTO_ID_5310158334021200562" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Ai3cuiX4grk/SbF436notBI/AAAAAAAAAIw/kz9Jj-Yfuuw/s1600-h/lib.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 329px; height: 327px;" src="http://3.bp.blogspot.com/_Ai3cuiX4grk/SbF436notBI/AAAAAAAAAIw/kz9Jj-Yfuuw/s400/lib.jpg" alt="" id="BLOGGER_PHOTO_ID_5310158337670165522" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Oitavo Passo:&lt;/span&gt; na aba "Linker settings" cole esse texto em "Other linker options": &lt;h6 style="color: rgb(51, 51, 255);"&gt;&lt;span style="font-size:100%;"&gt;-lmingw32 -lSDLmain -lSDL&lt;/span&gt;&lt;/h6&gt; &lt;div class="tutImg"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Ai3cuiX4grk/SbF44EfBK-I/AAAAAAAAAI4/MqK6UDRfcic/s1600-h/linking.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 356px;" src="http://1.bp.blogspot.com/_Ai3cuiX4grk/SbF44EfBK-I/AAAAAAAAAI4/MqK6UDRfcic/s400/linking.jpg" alt="" id="BLOGGER_PHOTO_ID_5310158340318374882" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Nono Passo:&lt;/span&gt; agora copie o arquivo SDL.dll da pasta que você extraiu (está dentro da subpasta "bin") para a pasta que você vai criar seu projeto. Você vai ter que colocar essa DLL na mesma pasta em que vai ficar seu EXE quando você compilar.&lt;br /&gt;&lt;br /&gt;Outra opção é copiar essa DLL para a pasta C:\WINDOWS\SYSTEM32, então seu aplicativo irá encontrá-lo mesmo que não esteja no mesmo diretório. O problema é que se você tiver mais de um aplicativo SDL rodando na sua máquina, você terá conflitos se eles usarem versões diferentes da DLL. Ou seja, sempre distribua seus programas com uma cópia da DLL na mesma pasta.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Décimo Passo:&lt;/span&gt; agora estamos prontos para programar. =)&lt;br /&gt;Adicione um novo arquivo source (em "New" -&gt; Empty File") , nomeie como "Main.cpp" (importante que a extensão seja CPP), e cole o seguinte código:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 153);" class="co2"&gt;#include "stdlib.h"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="co2"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);" class="co2"&gt;#include "SDL/SDL.h"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy4"&gt;//Declara uma Surface do SDL para receber o desenho&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;SDL_Surface &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy2"&gt;*&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;tela&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy4"&gt;;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 153);" class="kw4"&gt;void&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; desenha&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;()&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt; {&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy4"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="co1"&gt;// Pega o tempo em Milisegundos&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="kw4"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; milisegundos &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy1"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; SDL_GetTicks&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;()&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy4"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="co1"&gt;// Declara algumas variáveis&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="kw4"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; i, j, yofs, ofs&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy4"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="co1"&gt;// Desenha na tela (mas não mostra o desenho)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   yofs &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy1"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="nu0"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy4"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="kw1"&gt;for&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;i &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy1"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="nu0"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy4"&gt;;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; i &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy1"&gt;&lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="nu0"&gt;480&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy4"&gt;;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; i&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy2"&gt;++&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;     &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="kw1"&gt;for&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;j &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy1"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="nu0"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;, ofs &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy1"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; yofs&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy4"&gt;;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; j &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy1"&gt;&lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="nu0"&gt;640&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy4"&gt;;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; j&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy2"&gt;++&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;, ofs&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy2"&gt;++&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;     &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;       &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;((&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="kw4"&gt;unsigned&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="kw4"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy2"&gt;*&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;)tela&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy2"&gt;-&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy1"&gt;&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;pixels&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;)[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;ofs&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;]&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy1"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; i&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy2"&gt;*&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;i &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy2"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; j&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy2"&gt;*&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;j &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy2"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; milisegundos&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy4"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;     &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;     yofs &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy2"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy1"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; tela&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy2"&gt;-&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy1"&gt;&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;pitch &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy2"&gt;/&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="nu0"&gt;4&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy4"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;}&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy4"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="co1"&gt;// Atualiza a tela (agora manda mostrar o que foi desenhado)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   SDL_UpdateRect&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;tela, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="nu0"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="nu0"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="nu0"&gt;640&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="nu0"&gt;480&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy4"&gt;;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);" class="co1"&gt;// Início do programa&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);" class="kw4"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; main&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="kw4"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; argc, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="kw4"&gt;char&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy2"&gt;*&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;argv&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;[])&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="co1"&gt;// Inicializa o SDL (nesse caso, somente Vídeo)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="kw1"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; SDL_Init&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;SDL_INIT_VIDEO&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy1"&gt;&lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="nu0"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;     &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="kw3"&gt;fprintf&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="kw2"&gt;stderr&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="st0"&gt;"Unable to init SDL: %s&lt;span class="es1"&gt;\n&lt;/span&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;, SDL_GetError&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;())&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy4"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;     &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="kw3"&gt;exit&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="nu0"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy4"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="co1"&gt;// Faz com que a memória seja limpa após finalizar o programa&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="co1"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="kw3"&gt;atexit&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;SDL_Quit&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy4"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;     &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="co1"&gt;// Cria uma janela de 640x480 pixels e 32 bpp&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   tela &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy1"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; SDL_SetVideoMode&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="nu0"&gt;640&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="nu0"&gt;480&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="nu0"&gt;32&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;, SDL_SWSURFACE&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy4"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="co1"&gt;// Se algo der errado, retorna um erro&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="kw1"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; tela &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy1"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="kw2"&gt;NULL&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;     &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="kw3"&gt;fprintf&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="kw2"&gt;stderr&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="st0"&gt;"Unable to set 640x480 video: %s&lt;span class="es1"&gt;\n&lt;/span&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;, SDL_GetError&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;())&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy4"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;     &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="kw3"&gt;exit&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="nu0"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy4"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="co1"&gt;// Loop principal (repete-se pra sempre, até sairmos do programa)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="kw1"&gt;while&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="nu0"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;     &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="co1"&gt;// Chama a função de desenhar na tela (que escrevemos acima)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;     desenha&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;()&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy4"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;     &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="co1"&gt;// Gerencia os eventos do teclado&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;     SDL_Event event&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy4"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;     &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="kw1"&gt;while&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;SDL_PollEvent&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy3"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;event&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;     &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;       &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="kw1"&gt;switch&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;event.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="me1"&gt;type&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;       &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;       &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="kw1"&gt;case&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; SDL_KEYDOWN&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy4"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;         &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="kw1"&gt;break&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy4"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;       &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="kw1"&gt;case&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; SDL_KEYUP&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy4"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;         &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="co1"&gt;// Se pressionarmos ESC, saimos do programa&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;         &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="kw1"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;event.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="me1"&gt;key&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="me1"&gt;keysym&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="me1"&gt;sym&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy1"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; SDLK_ESCAPE&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;           &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="kw1"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="nu0"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy4"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;         &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="kw1"&gt;break&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy4"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;       &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="kw1"&gt;case&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; SDL_QUIT&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy4"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;         &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="kw1"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="nu0"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy4"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;       &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;     &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="kw1"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="nu0"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);" class="sy4"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);" class="br0"&gt;}&lt;/span&gt;&lt;/span&gt;  &lt;br /&gt;&lt;/pre&gt;                        &lt;br /&gt;&lt;br /&gt;Não se preocupe com os detalhes ainda (nos próximos tutoriais vou explicar). Salve o projeto e compile seu código. Se não ocorreram erros, está tudo pronto. Se não funcionar, volte atrás e verifique se foi feito tudo corretamente. Cheque se você tem a SDL.dll na mesma pasta que seu EXE ou no System32. &lt;pre style="color: rgb(255, 0, 0);"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://sol.gfxile.net/gp/ss_ch02.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 120px; height: 94px;" src="http://sol.gfxile.net/gp/ss_ch02.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;/pre&gt; &lt;/div&gt;&lt;img src="file:///C:/DOCUME%7E1/beckel/CONFIG%7E1/Temp/moz-screenshot-1.jpg" alt="" /&gt;&lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2211950964556159463-1903983153594862560?l=dozeroaomestre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dozeroaomestre.blogspot.com/feeds/1903983153594862560/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2211950964556159463&amp;postID=1903983153594862560' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2211950964556159463/posts/default/1903983153594862560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2211950964556159463/posts/default/1903983153594862560'/><link rel='alternate' type='text/html' href='http://dozeroaomestre.blogspot.com/2009/03/tutorial-01-configurando-o-sdl.html' title='Tutorial 01- Configurando o SDL'/><author><name>Rafael Beckel</name><uri>http://www.blogger.com/profile/01830105071166080182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Ai3cuiX4grk/TQ5xoUpX6KI/AAAAAAAAAM8/dFw03bJ_PFQ/S220/Twitter.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Ai3cuiX4grk/SbF2htLn3qI/AAAAAAAAAHg/miQhjcq4kgc/s72-c/download.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2211950964556159463.post-4689672623172377892</id><published>2009-03-06T11:18:00.006-03:00</published><updated>2009-03-09T14:34:02.019-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dicas para Iniciantes'/><category scheme='http://www.blogger.com/atom/ns#' term='Tutoriais'/><title type='text'>Desvendando o SDL (Simple Directmedia Layer)</title><content type='html'>&lt;span style="font-size:78%;"&gt;&lt;span&gt;Para saber o que é esse blog, leia o post &lt;a href="http://dozeroaomestre.blogspot.com/2008/07/hello-world.html"&gt;Hello World&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Para ler o resumo do quarto dia, clique &lt;a href="http://dozeroaomestre.blogspot.com/2008/08/quarto-quinto-dcimo-sexto.html"&gt;aqui&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Para ler a entrevista com o Rodrigo Strauss, clique &lt;a href="http://dozeroaomestre.blogspot.com/2009/02/entrevista-rodrigo-strauss.html"&gt;aqui&lt;/a&gt;.&lt;/span&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;Introdução ao SDL e programação de gráficos com C++&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;i&gt;&lt;span style="color:black;"&gt;O &lt;a href="http://www.libsdl.org/"&gt;SDL&lt;/a&gt; (Simple Directmedia Layer) é uma biblioteca C/C++ Open Source multiplataforma (roda em Windows, Linux, Mac, Solaris e onde mais você quiser),  &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;que permite que você acesse diretamente funções de teclado, mouse, audio, joystick, video e hardware 3D (tando via &lt;a href="http://www.opengl.org/"&gt;OpenGL&lt;/a&gt; como também &lt;a href="http://www.gamesforwindows.com/en-US/AboutGFW/Pages/DirectX10.aspx"&gt;DirectX&lt;/a&gt;, embora para programação em DirectX seja mais recomendado usar a livraria de eventos do próprio &lt;a href="http://msdn.microsoft.com/en-us/directx/aa937788.aspx"&gt;DirectX SDK&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;(Estou com pressa e &lt;a href="http://dozeroaomestre.blogspot.com/2009/03/tutorial-01-configurando-o-sdl.html"&gt;quero ir diretamente para os tutoriais&lt;/a&gt;)&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Segue abaixo os tópicos que serão abordados:&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;0- Introdução (é nesse post mesmo, basta rolar a tela mais para baixo)&lt;/p&gt;&lt;p&gt;TUTORIAIS DE PROGRAMAÇÃO C++ E SDL&lt;/p&gt;&lt;p&gt;1- &lt;a href="http://dozeroaomestre.blogspot.com/2009/03/tutorial-01-configurando-o-sdl.html"&gt;Configurando o SDL&lt;/a&gt;&lt;br /&gt;2- Conceitos fundamentais do SDL&lt;br /&gt;3- Carregando e mostrando Surfaces (com imagens BMP)&lt;br /&gt;4- Livrarias de Extensão (Carregando outros formatos de Imagem)&lt;br /&gt;5- Programação Orientada a Eventos&lt;br /&gt;6- Cor Transparente&lt;br /&gt;7- Recortando uma imagem (para animar sprites)&lt;br /&gt;8- Carregando Fontes True Type&lt;br /&gt;9- Eventos do Teclado&lt;br /&gt;10- Eventos do Mouse&lt;br /&gt;11- Estado das Teclas&lt;br /&gt;12- Tocando Sons&lt;br /&gt;13- Tempo&lt;br /&gt;14- Tempo Avançado (independente da velocidade do hardware)&lt;br /&gt;15-  Regulando o Frame Rate&lt;br /&gt;16- Movimento&lt;br /&gt;17- Detectando Colisões&lt;br /&gt;18- Detectando Colisões por pixel&lt;br /&gt;19- Detectando Colisões de Círculos&lt;br /&gt;20- Animação&lt;br /&gt;21- Scroll (rolagem)&lt;br /&gt;22- Scrool da imagem de fundo&lt;br /&gt;23- Capturando uma entrada de String&lt;br /&gt;24- Salvando seu jogo&lt;br /&gt;25- Joysticks&lt;br /&gt;26- Eventos de Janela (e janelas redimensionáveis)&lt;br /&gt;27- Alpha Blending (transparência)&lt;br /&gt;28- Sistemas de Partículas&lt;br /&gt;29- Tiling (mosaico de imagens)&lt;br /&gt;30- Fontes em Bitmap (texto em imagens)&lt;br /&gt;31- Manipulação de Pixel e Rotação de Surfaces&lt;br /&gt;31.1- Hora do café: Animando Pixels&lt;br /&gt;32- Movimentos Independentes dos Frames&lt;br /&gt;33- Multiprocessamento&lt;br /&gt;34- Semáforos&lt;br /&gt;35- Condições&lt;br /&gt;36- Usando OpenGL com SDL&lt;br /&gt;37- Usando DirectX com SDL&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;TUTORIAL DE COMO FAZER UM JOGO DO ZERO&lt;br /&gt;&lt;/p&gt; 38- Programando seu primeiro jogo (e não é um Pong)&lt;br /&gt;39- Fundamentos de Roteiro e Game Design&lt;br /&gt;  39.1- Teoria dos Jogos&lt;br /&gt;  39.2- Ambientação do Jogo&lt;br /&gt;  39.3- Criação de Personagens&lt;br /&gt;  39.4- Roteiro&lt;br /&gt;  39.5- Storyboard e Ilustração&lt;br /&gt;40- Modelagem 3D e Texturização&lt;br /&gt;  40.1- Modelando o Cenário&lt;br /&gt;  40.2- Modelando um personagem&lt;br /&gt;  40.3- Texturizando o Cenário e o Personagem&lt;br /&gt;  40.4- Animando o personagem&lt;br /&gt;  40.5- Criando e animando Objetos do cenário&lt;br /&gt;  40.6- Criando efeitos especiais&lt;br /&gt;  40.7- Links pra quem quer se aprofundar&lt;br /&gt;41- Interface&lt;br /&gt;  41.1- Fundamentos de Design de Interface&lt;br /&gt;  41.2- Desenhando e Montando a Interface&lt;br /&gt;42- Trilha sonora e efeitos de som&lt;br /&gt;  42.1- Fundamentos de Design de Som&lt;br /&gt;  42.2- Criando a trilha sonora&lt;br /&gt;  42.3- Criando efeitos de som&lt;br /&gt;43- Juntando tudo&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Introdução:&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;Durante esse tempo que o Blog ficou parado, andei aprendendo algumas coisas sobre SDL, e agora vou passar para frente o que aprendi. Para essa série de tutoriais, vou me basear nos &lt;a href="http://lazyfoo.net/SDL_tutorials/index.php"&gt;tutoriais do Lazy Foo&lt;/a&gt;, que é um dos melhores que achei entre os muitos que existem para iniciantes. Também vou usar alguma coisa do &lt;a href="http://sol.gfxile.net/gp/"&gt;Sol::Tutorials&lt;/a&gt; para cobrir alguns tópicos mais avançados. Depois, vou escrever uma série de artigos ensinando como planejar, montar e programar um jogo do Zero, desde a concepção da idéia até a distribuição.&lt;br /&gt;&lt;br /&gt;A minha série de tutoriais vai ser quase uma tradução do Lazy Foo, mas com algumas adaptações e com mais exercícios do que tem lá. A idéia é que eles façam jus ao nome desse blog: &lt;span style="font-weight: bold;"&gt;servir como um guia para quem está começando agora&lt;/span&gt;, talvez nunca teve contato com programação antes, cobrindo desde o bê-a-bá até programação de vetores 3D. Porém, tenho um público-alvo específico no meio desses iniciantes: aqueles que &lt;span style="font-weight: bold;"&gt;querem se aprofundar de verdade&lt;/span&gt;, desejem ser mais do que "o garoto dos scripts" e queiram programar seus objetos 3D no nível dos pixels, controlando via código cada uma das coordenadas dos vértices.&lt;br /&gt;&lt;br /&gt;O C e o C++ são as linguagens de mais baixo nível entre as &lt;a href="http://en.wikipedia.org/wiki/High-level_programming_language"&gt;linguagens de alto nível&lt;/a&gt;. &lt;a href="http://en.wikipedia.org/wiki/Low-level_programming_language"&gt;Linguagens de baixo nível&lt;/a&gt; são a linguagem da máquina (programação bit a bit) e o Assembly, que exigem que você conheça as especificidades do hardware em que está programando. As linguagens de alto nível são independentes de Hardware. Entre as de alto nível, C++ é uma das que mais se aproxima diretamente do Hardware e é o padrão da indústria para programação de jogos.&lt;br /&gt;&lt;br /&gt;Quando eu trabalhava na &lt;a href="http://www.pixellabs.com.br/"&gt;Pixel Labs&lt;/a&gt; (programando em JavaScript), alguns programadores mais experientes diziam por lá que quanto mais você se aproxima da máquina, ou seja, quanto mais baixo nível é a linguagem de programação, você se aproxima mais da matemática pura do que do código (e isso é particurlamente mais válido para programação de gráficos).&lt;br /&gt;&lt;br /&gt;Se você é um dos que desejam se aprofundar, recomendo este &lt;a href="http://www.geometriaanalitica.com.br/index3.html"&gt;livro de Geometria Analítica&lt;/a&gt;. Não precisa ler tudo, apenas use-o como consulta. Estudando os fundamentos, fica mais fácil entender o código quando precisarmos rotacionar um polígono ou fazer algo parecido.&lt;br /&gt;&lt;br /&gt;Então, vamos aos Tutoriais?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2211950964556159463-4689672623172377892?l=dozeroaomestre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dozeroaomestre.blogspot.com/feeds/4689672623172377892/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2211950964556159463&amp;postID=4689672623172377892' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2211950964556159463/posts/default/4689672623172377892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2211950964556159463/posts/default/4689672623172377892'/><link rel='alternate' type='text/html' href='http://dozeroaomestre.blogspot.com/2009/03/desvendando-o-sdl-simple-directmedia.html' title='Desvendando o SDL (Simple Directmedia Layer)'/><author><name>Rafael Beckel</name><uri>http://www.blogger.com/profile/01830105071166080182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Ai3cuiX4grk/TQ5xoUpX6KI/AAAAAAAAAM8/dFw03bJ_PFQ/S220/Twitter.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2211950964556159463.post-1139907083604949892</id><published>2009-02-27T17:43:00.004-03:00</published><updated>2009-02-27T18:44:30.408-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Entrevistas'/><category scheme='http://www.blogger.com/atom/ns#' term='Dicas para Iniciantes'/><category scheme='http://www.blogger.com/atom/ns#' term='Links para outros Blogs'/><title type='text'>Entrevista: Rodrigo Strauss</title><content type='html'>&lt;p&gt;&lt;span style="font-size:78%;"&gt;&lt;span&gt;Para saber o que é esse blog, leia o post &lt;a href="http://dozeroaomestre.blogspot.com/2008/07/hello-world.html"&gt;Hello World&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;Para ler o resumo do quarto dia, clique &lt;a href="http://dozeroaomestre.blogspot.com/2008/08/quarto-quinto-dcimo-sexto.html"&gt;aqui&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Explicação da mudança de foco desse blog e entrevista com o Rodrigo Strauss.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;Olá, pessoal. Estou postando aqui depois de meses deixando esse blog meio abandonado  e deixo aqui minha justificativa e pedido de desculpas&lt;/span&gt;&lt;span style="font-size:85%;"&gt;:&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;Como escrevi &lt;a href="http://dozeroaomestre.blogspot.com/2008/08/quarto-quinto-dcimo-sexto.html"&gt;nesse post&lt;/a&gt; do dia 04/08 do ano passado,  &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;arrumei um emprego que me desviou totalmente do &lt;a href="http://dozeroaomestre.blogspot.com/2008/07/hello-world.html"&gt;foco que eu propus inicialmente&lt;/a&gt; nesse Blog&lt;/span&gt;. &lt;/span&gt;&lt;span style="font-size:85%;"&gt;Como vocês podem perceber, já passei do prazo que eu mesmo propus (30 de janeiro). Acabei congelando meus estudos de C++ e estou postando novamente agora, pois voltei a estudar; dessa vez com mais calma, mas com a inspiração redobrada. =)&lt;br /&gt;&lt;br /&gt;Voltei a postar da melhor forma possível: a tão aguardada entrevista com o Rodrigo Strauss, do &lt;a href="http://www.1bit.com.br/"&gt;1bit&lt;/a&gt;, que pediram nos coments. Na verdade, essa entrevista foi feita em 14 de agosto do ano passado e segue abaixo, na íntegra. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;----------------------------------------------------------------------------------------------&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;Qual foi a sua motivação para começar a programar? Foi com C++ direto?&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;i&gt;&lt;span style="color:black;"&gt;Eu comecei a programar com 12 anos e é uma história curiosa. Eu adorava vídeo game e lia todas as revistas que existiam do assunto (Ação Games, GamePower e algumas gringas quando eu conseguia). Eu sabia as especificações de todos os consoles e realmente me interessava. Quando alguém me perguntava o que eu queria ser quando crescer, eu dizia que queria fazer jogos de vídeo game. Mas eu não tinha idéia de como um jogo era feito, não sabia que eu jogo era programado.&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;i&gt;&lt;span style="color:black;"&gt;Minha mãe trabalhava na UNESP de Botucatu e me arrumou um emprego para trabalhar em um centro acadêmico por lá. Lá eu descobri o “Polo Computacional” da UNESP, onde os alunos e funcionários podiam usar os computadores. Isso parece ridiculamente comum hoje em dia, mas em 1992 era algo completamente novo. As máquinas eram PCs XT com DOS e rede Novel, e eu comecei aprendendo a usar DOS, Banner, PrintShop, Word 5. Como eu fiquei realmente fascinado por aquilo, fui até a biblioteca da UNESP procurar uns livros para aprender mais (imagina a cena de um garoto de 12 anos fuçando nas estantes da uma universidade procurando livros de informática). Os primeiros livros que eu peguei foram um de DOS 5 e outro de BASIC. Foi esse o comço de tudo.&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;i&gt;&lt;span style="color:black;"&gt;Comecei a programar em C++ em 1997, por que o Visual Basic já estava ficando muito limitado. Eu estava usando muito Win32 e aquele monte de Declares já estava ficando complicado demais.&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;  &lt;div&gt;&lt;div class="Ih2E3d"&gt;  &lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;b&gt;Quais programadores brasileiros você mais admira? Por quê?&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/div&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;i&gt;&lt;span style="color:black;"&gt;&lt;a href="http://caloni.com.br/"&gt;Wanderley Caloni&lt;/a&gt; e o &lt;a href="http://driverentry.com.br/blog/"&gt;Fernando Roberto&lt;/a&gt;. Existem outros caras que eu julgo muito bons (&lt;a href="http://mndfck.org/%7Epedro.lamarao/"&gt;Pedro Lamarão&lt;/a&gt; da lista C &amp;amp; C++ Brasil é um deles), mas eu já trabalhei com esses dois e foram eles que me socorreram e ainda socorrem nas dúvidas mas complicadas. Apesar de eu programar a muito anos, as vezes eu também preciso de ajuda... :-)&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;i&gt;&lt;span style="color:black;"&gt;Tem uma história muito engraçada do Wanderley. Eu tinha acabado de formatar uma máquina e instalado o SO, mas a máquina não dava boot. Pedi socorro para o Wanderley e ele perguntou: “Você colocou a partição como ativa e ‘bootável’?”. Eu respondi que não, tinha esquecido disso. Ele voltou para mesa dele, pegou um disquete de boot, reiniciou o máquina e abriu o Norton Disk Editor. Abriu o disco no editor hexa e mudou um byte lá no meio. Tirou o disquete, reiniciou a máquina e tudo funcionou.&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;div class="Ih2E3d"&gt;  &lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;b&gt;Quais programadores estrangeiros você mais admira? Por quê?&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/div&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;i&gt;&lt;span style="color:black;"&gt;Esse é mais complicado, porque eu costumo acreditar que o cara é bom de verdade depois de trabalhar com ele e vê-lo realmente fazendo. Conheço bastante gente que fala bastante mas na hora de fazer um software estável e com prazo e orçamento finito não consegue. Como diz um camiseta no Think Geek, “Talk is cheap, show me the code”.&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;i&gt;&lt;span style="color:black;"&gt;Eu gosto muito dos autores clássicos do C++ (&lt;a href="http://www.research.att.com/%7Ebs/"&gt;Bjarne Stroustrup&lt;/a&gt;, &lt;a href="http://www.aristeia.com/"&gt;Scott Myers&lt;/a&gt;, &lt;a href="http://www.gotw.ca/"&gt;Herb Sutter&lt;/a&gt; e &lt;a href="http://erdani.org/"&gt;Andrei Alexandrescu&lt;/a&gt;), e dos clássicos de Win32 (&lt;a href="http://www.charlespetzold.com/"&gt;Charles Petzold&lt;/a&gt; e &lt;a href="http://www.wintellect.com/cs/blogs/jeffreyr/default.aspx"&gt;Jeffrey Ritcher&lt;/a&gt;). Gosto muito também do &lt;a href="http://blogs.technet.com/markrussinovich/"&gt;Russinovich do Sysinternals&lt;/a&gt;. Bom, não é a toa que viraram clássicos...&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="Ih2E3d"&gt;  &lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;b&gt;Poste alguns links que você acha úteis (pode ser artigos seus, de outros programadores ou até um site com recursos úteis).&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/div&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;i&gt;&lt;span style="color:black;"&gt;Eu gosto bastante dos meus artigos para iniciantes, o “&lt;a href="http://www.1bit.com.br/content.1bit/programador"&gt;Como ser um programador&lt;/a&gt;” e “&lt;a href="http://www.1bit.com.br/content.1bit/bom_programador"&gt;Como ser um bom programador&lt;/a&gt;”, além das coisas que eu já escrevi no blog sobre mercado de trabalho. Eu escrevi o que eu gostaria e precisava ter lido quando eu estava começando, e fico bem feliz que eles tenham ajudado tanta gente (eu sei disso porque o pessoal me manda e-mail agradecendo). &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;i&gt;&lt;span style="color:black;"&gt;De brasileiro, eu leios os blogs do Wanderley e do Fernando. Dos gringos o “&lt;a href="http://blogs.msdn.com/oldnewthing/"&gt;The Old New Thing&lt;/a&gt;” do Raymond Chen é essencial para quem programa C++ para Windows. O &lt;a href="http://www.codeproject.com/"&gt;Code Project&lt;/a&gt; tem muita coisa boa de C++ para Windows, muito do que eu aprendi veio de lá. O &lt;a href="http://www.codeproject.com/script/Membership/Profiles.aspx?mid=152"&gt;Michael Dunn&lt;/a&gt; escreve bastante lá e ele é muito bom.&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="Ih2E3d"&gt;  &lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;br /&gt;Acho que já está bom. Essa última pergunta é só pra vc se despedir e escrever o que quiser.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/div&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;i&gt;&lt;span style="color:black;"&gt;Espero que você continue seu blog e que ele te sirva para, daqui uns anos, ver o quanto progresso você teve. Seria bem legal se eu tivesse escrito um diário ou algo assim sobre as coisas que eu estudei...&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2211950964556159463-1139907083604949892?l=dozeroaomestre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dozeroaomestre.blogspot.com/feeds/1139907083604949892/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2211950964556159463&amp;postID=1139907083604949892' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2211950964556159463/posts/default/1139907083604949892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2211950964556159463/posts/default/1139907083604949892'/><link rel='alternate' type='text/html' href='http://dozeroaomestre.blogspot.com/2009/02/entrevista-rodrigo-strauss.html' title='Entrevista: Rodrigo Strauss'/><author><name>Rafael Beckel</name><uri>http://www.blogger.com/profile/01830105071166080182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Ai3cuiX4grk/TQ5xoUpX6KI/AAAAAAAAAM8/dFw03bJ_PFQ/S220/Twitter.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2211950964556159463.post-7006881919834440147</id><published>2008-08-14T02:00:00.004-03:00</published><updated>2008-08-14T02:38:38.857-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dicas para Iniciantes'/><category scheme='http://www.blogger.com/atom/ns#' term='Links para outros Blogs'/><category scheme='http://www.blogger.com/atom/ns#' term='Links para Tutoriais'/><title type='text'>Encarando os temidos pointers...</title><content type='html'>&lt;span style="font-size:78%;"&gt;&lt;span&gt;Para saber o que é esse blog, leia o post &lt;a href="http://dozeroaomestre.blogspot.com/2008/07/hello-world.html"&gt;Hello World&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Encarando os temidos pointers:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Sinceramente, eu pensava que essa coisa de pointers era mais difícil do que realmente é. Nunca tinha tido contato com eles antes de começar a aprender C++, mas em todos os lugares eu lia que os iniciantes têm dificuldade em aprender.&lt;br /&gt;&lt;br /&gt;Por isso, comecei a ler sobre eles no &lt;a href="http://www.cprogramming.com/tutorial/lesson6.html"&gt;tutorial que escolhi&lt;/a&gt; meio que com o pé atrás, mas bem atento, com medo de que viesse uma coisa bem cabeluda pela frente. Na verdade, eles são bem fáceis. Li esse tutorial e mais &lt;a href="http://www.sumersoft.com/publicacoes/TutorialC++.pdf"&gt;um em português muito bom para iniciantes&lt;/a&gt;, que explica direitinho, e entendi tudo (talvez porque eu já soubesse antes o que eles faziam).&lt;br /&gt;&lt;br /&gt;Ok, agora sei como os pointers funcionam e qual sua sintaxe, maaaaaaaaaas.....&lt;br /&gt;&lt;br /&gt;PRA QUE PORRA QUE ISSO SERVE????&lt;br /&gt;&lt;br /&gt;Bom, se eles existem e os programadores mais experientes falam que são muito bons, deve servir para alguma coisa. Só preciso agora estudar mais pra saber exatamente quando preciso usar, como usar, por quê isso vai otimizar a velocidade do meu programa, etc, etc, etc.&lt;br /&gt;&lt;br /&gt;Creio eu que só sejam necessários mesmo quando estou lidando com variáveis com tamanho MUITO grande. Ao invés de chamar uma variável gigante, eu chamo só o endereço dela, que não ocupa muito espaço na memória. Isso me parece ser o óbvio, mas vou me aprofundar mais pra ver onde vou chegar... talvez procurar um exemplo real sendo usado, tutoriais para iniciantes explicam o que é, mas não podem dar exemplos reais, pois seriam muito grandes. Acho.&lt;br /&gt;&lt;br /&gt;Dessa vez não vou me delongar mais que isso. Vou mergulhar mais no estudo dos pointers, até que eu esteja dominando. Aí escrevo alguma coisa aqui. Se vocês estão estudando esse tópico, comentem, postem links, digam o que aprenderam.&lt;br /&gt;&lt;br /&gt;Próximo passo? &lt;a href="http://br.geocities.com/cesarakg/pointers.html"&gt;Clique aqui&lt;/a&gt;. É um tutorial que não li ainda, mas parece ser bem completo. Leia por sua conta e risco.&lt;br /&gt;&lt;br /&gt;PS: no post anterior, pediram uma entrevista com o &lt;a href="http://www.1bit.com.br/"&gt;Rodrigo Strauss&lt;/a&gt;. Enviei as perguntas pra ele, mas ainda não recebi resposta. Vamos torcer aí (e esperar), acho que essa entrevista vai ser bem instrutiva para quem está começando.&lt;br /&gt;&lt;br /&gt;PS2: Estou preparando um artigo mais aprofundado sobre bits e bytes, porque li as explicações sobre pointers e tive facilidade de entender porque já tinha um conhecimento sobre isso. Vi que nesses tutoriais eles não explicam direito essa parte, então vou postar aqui o que sei sobre isso da forma mais didática possível, pra dar um embasamento maior pra quem ainda não entende porque o computador entende "zeros e uns" e não entende "....oito-nove-dez". Depois, continuarei a focar mais ainda nos pointers.&lt;br /&gt;&lt;br /&gt;Concordam? Discordam? Comentem! =)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2211950964556159463-7006881919834440147?l=dozeroaomestre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dozeroaomestre.blogspot.com/feeds/7006881919834440147/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2211950964556159463&amp;postID=7006881919834440147' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2211950964556159463/posts/default/7006881919834440147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2211950964556159463/posts/default/7006881919834440147'/><link rel='alternate' type='text/html' href='http://dozeroaomestre.blogspot.com/2008/08/encarando-os-temidos-pointers.html' title='Encarando os temidos pointers...'/><author><name>Rafael Beckel</name><uri>http://www.blogger.com/profile/01830105071166080182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Ai3cuiX4grk/TQ5xoUpX6KI/AAAAAAAAAM8/dFw03bJ_PFQ/S220/Twitter.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2211950964556159463.post-2225908063334025437</id><published>2008-08-04T10:39:00.006-03:00</published><updated>2009-02-27T18:00:59.108-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Off-topic'/><category scheme='http://www.blogger.com/atom/ns#' term='Dicas para Iniciantes'/><category scheme='http://www.blogger.com/atom/ns#' term='Links para outros Blogs'/><title type='text'>Quarto, quinto... décimo sexto.</title><content type='html'>&lt;span style="font-size:78%;"&gt;&lt;span&gt;Para saber o que é esse blog, leia o post &lt;a href="http://dozeroaomestre.blogspot.com/2008/07/hello-world.html"&gt;Hello World&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;Para ler o resumo do terceiro dia, clique &lt;a href="http://dozeroaomestre.blogspot.com/2008/07/terceiro-dia-revisando.html"&gt;aqui&lt;/a&gt;.&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;Para ler o próximo post (sobre pointers), clique &lt;a href="http://dozeroaomestre.blogspot.com/2008/08/encarando-os-temidos-pointers.html"&gt;aqui&lt;/a&gt;.&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;(Atualizado em 27 de fevereiro de 2009)------------------------------&lt;br /&gt;Explicação da mudança de foco desse blog e entrevista com o Rodrigo Strauss.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;Olá, pessoal. Estou postando aqui depois de meses deixando esse blog meio abandonado. Como escrevi nesse post do dia 04/08 do ano passado,  &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;arrumei um emprego que me desviou totalmente do &lt;a href="http://dozeroaomestre.blogspot.com/2008/07/hello-world.html"&gt;foco que eu propus inicialmente&lt;/a&gt; nesse Blog&lt;/span&gt;. &lt;/span&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;Como vocês podem perceber, já passei do prazo que eu mesmo propus (30 de janeiro). Acabei congelando meus estudos de C++ e estou postando novamente agora, pois voltei a estudar; dessa vez com mais calma, mas com a inspiração redobrada. =)&lt;br /&gt;&lt;br /&gt;Voltei a postar da melhor forma possível: a tão aguardada &lt;a href="http://dozeroaomestre.blogspot.com/2009/02/entrevista-rodrigo-strauss.html"&gt;entrevista com o Rodrigo Strauss&lt;/a&gt;, que pediram nos coments.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;----------------------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Quarto, quinto... décimo sexto dia:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Eu tenho uma boa e uma má notícia. Qual vocês querem primeiro?&lt;br /&gt;&lt;br /&gt;Ok, comecemos pela má:&lt;br /&gt;&lt;br /&gt;Eu arrumei um emprego que vai me obrigar a focar mais em PHP e Java, não vou mais poder atualizar isso aqui todos os dias (embora eu ainda continue estudando C++).&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Existe uma vantagem aí: &lt;a href="http://www.php.net/"&gt;PHP&lt;/a&gt; e &lt;a href="http://pt.wikipedia.org/wiki/Java_%28linguagem_de_programa%C3%A7%C3%A3o%29"&gt;Java&lt;/a&gt; também são &lt;a href="http://en.wikipedia.org/wiki/Object_oriented"&gt;OOP&lt;/a&gt;, embora menos complexas.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Agora a boa notícia:&lt;br /&gt;&lt;br /&gt;Eu arrumei um emprego que vai me obrigar a me focar mais em PHP e Java, não vou mais poder atualizar isso aqui todos os dias (embora eu ainda continue estudando C++). Parece a mesma notícia, né? Pois é, e é mesmo, porque eu descobri uma coisa: atualizar isso aqui uma vez por semana é melhor, por diversas vantagens:&lt;br /&gt;&lt;br /&gt;1- Os posts recebem mais visitas e comentários. E mais e-mails, também.&lt;br /&gt;2- Eu foco mais na qualidade, e não na quantidade. Eu posso pesquisar durante a semana coisas interessantes para postar, como tutoriais específicos, e não fazer desse blog apenas um diário de produção (o que dá muito trabalho e eu acabava dedicando mais tempo a isso aqui do que aos estudos propriamente ditos).&lt;br /&gt;3- Posso também fazer posts sob encomenda, basta vc comentar lá embaixo e dizer o que está procurando. Se eu achar interessante, posto.&lt;br /&gt;4- Posso formar uma rede de pessoas interessadas no tal do jogo secreto.&lt;br /&gt;&lt;br /&gt;E é sobre ele mesmo o post. No iniciozinho desse blog, um pouco antes de eu começar a ler os &lt;a href="http://www.cprogramming.com/tutorial/lesson1.html"&gt;tutoriais que escolhi&lt;/a&gt; no site Cprogramming.com, li nesse mesmo site um artigo chamado: "&lt;a href="http://www.cprogramming.com/gameprogramming.html"&gt;So you want to be a game programmer?&lt;/a&gt;" que dizia, basicamente, que vc tinha que aprender antes toda a parte chata e que se vc não souber escrever uma calculadora você não faz um game.&lt;br /&gt;&lt;br /&gt;É a mais pura verdade. E eu vou um pouco mais longe: sozinho, você não vai fazer um jogo realmente bom. É impossível. Fazer um game envolve trabalho de equipe, o programador é só mais um membro dela.&lt;br /&gt;&lt;br /&gt;Recebi um comment no post anterior do José Roberto (eu ia linká-lo, mas ele colocou perfil não disponível), dizendo que queria construir algo do zero e ofereceu ajuda para esse jogo secreto. Isso me colocou pra pensar, porque tem mais pessoas interessadas nesse desafio.&lt;br /&gt;&lt;br /&gt;O jogo já está concebido. Desenhado. Todinho no papel. Eu o escrevi pensando em programar no &lt;a href="http://www.3dgamestudio.com/"&gt;3D Game Studio&lt;/a&gt;, que é uma ótima ferramenta para o que ela se propõe, porém limitada. Com o 3DGS eu até conseguiria fazer algo sozinho, mas não com a qualidade que estou almejando.&lt;br /&gt;&lt;span style="font-size:78%;"&gt;*Mas deixa eu deixar uma coisa bem clara aqui: mesmo com suas limitações, os caras fazem &lt;a href="http://www.c4robot.com/"&gt;coisas de responsa&lt;/a&gt; usando o 3DGS, o que prova que a qualidade do seu game não está na ferramenta que vc usa, e sim na(s) pessoa(s) que a usa(m). &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Então... quais passos eu preciso dar para que esse jogo saia do papel, com a qualidade almejada?&lt;br /&gt;&lt;br /&gt;A resposta imediata a essa pergunta é: preciso juntar uma equipe até a data final desse blog (dia 30 de janeiro). Equipe de especialistas, que sejam apaixonados pelo que fazem e amem games. Segundo: &lt;span style="font-weight: bold;"&gt;esses caras não vão trabalhar de graça&lt;/span&gt;, precisam ganhar o que merecem e trabalhar com exclusividade. Pra isso, tenho que apresentar o projeto pra um investidor; ou então dividir com eles os resultados financeiros que eu tiver. Ou as duas coisas juntas.&lt;br /&gt;&lt;br /&gt;Resultado financeiro com games no Brasil? É piada? E a pirataria?&lt;br /&gt;&lt;br /&gt;Bom... é aqui que entra o primeiro cara da minha equipe: um &lt;span style="font-weight: bold;"&gt;empresário visionário&lt;/span&gt; que pense num bom modelo de negócios pro cenário brasileiro. Será que não seria melhor distribuir o jogo de graça e ganhar em cima de outra coisa? Ele vai saber a resposta, pois conhece o mercado, é criativo, sabe empreender e controlar uma equipe. Ah, uma &lt;a href="http://www.linkedin.com/"&gt;boa rede de contatos&lt;/a&gt; também ajuda. Deixa que esse eu arrumo.&lt;br /&gt;&lt;br /&gt;E as outras pessoas da equipe? Se vocês conhecem alguém, ou se conhecem alguém que conhece alguém, indiquem esse blog. Peçam pra pessoa postar aqui, ou me mandar um &lt;a href="mailto:rafaelbeckel@gmail.com"&gt;e-mail&lt;/a&gt; com portfolio e salário pretendido. Veja se ele está na lista abaixo:&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Uma observação: uma grande vantagem do profissional brasileiro é a multidisciplinaridade. Conheço pessoas que fazem mais de uma dessas coisas muito bem, então podemos fazer uma equipe menor do que essa que tenha pessoas assumindo mais de um papel, se necessário.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Um&lt;span style="font-weight: bold;"&gt; game designer&lt;/span&gt;. Esse cara vai desenhar no papel todo o conceito e a lógica do jogo, vai fazer alguns rascunhos de arte também. Ele tem que entender bastante do &lt;a href="http://www.gamasutra.com/"&gt;mercado de games&lt;/a&gt;, um pouco da parte técnica, um pouco de arte, um pouco de lógica de programação, enfim... um pouco de tudo, mas não precisa ser especialista em nada. Deve saber apenas se expressar bem, escrever bem, saber mexer com projetos e conversar com toda a equipe.&lt;br /&gt;&lt;br /&gt;Um&lt;span style="font-weight: bold;"&gt; gerente de projetos&lt;/span&gt;. Esse cara vai botar ordem na casa, vai integrar todos os talentos, vai garantir que o prazo será cumprido, vai comunicar as diversas falhas para a equipe, vai buscar soluções, vai contratar pessoas, demitir pessoas, motivar, organizar, acompanhar, etc, etc, etc. Esse cara tem que entender dos métodos da &lt;a href="http://www.pmi.org/Pages/default.aspx"&gt;PMI&lt;/a&gt;, talvez ter um certificado (não é uma exigência, mas é um diferencial) ter conhecimento do mercado de games e experiência com projetos de software na bagagem.&lt;br /&gt;&lt;br /&gt;Um &lt;span style="font-weight: bold;"&gt;roteirista&lt;/span&gt;. esse vai fazer o roteiro do jogo, falas, diálogos, menus, características dos personagens (físicas e psicológicas). Ele trabalha junto com o game designer. Apenas tem que ser criativo, ter uma cultura geral muito boa, entender um pouco de psicologia, história, geografia e cinema. Sim, cinema principalmente, e &lt;a href="http://imasters.uol.com.br/artigo/3769/"&gt;como escrever um roteiro e um storyboard&lt;/a&gt;. Não precisa falar que ele tem que ser criativo e escrever bem, né?&lt;br /&gt;&lt;br /&gt;Um &lt;span style="font-weight: bold;"&gt;ilustrador&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; conceitual&lt;/span&gt;, que seja muito foda. Pode ser de papel ou digital, tanto faz. O portfolio dele deve ser digno de trabalhar nas maiores agências de publicidade. Esse vai pegar o conceito do game designer e &lt;a href="http://www.geocities.com/themsfx/tite9.htm"&gt;transformar em arte&lt;/a&gt;. Esse vai criar os personagens, suas formas, texturas, desenhar os cenários, imaginar prontas as principais cenas do jogo e colocá-las no papel.&lt;br /&gt;&lt;br /&gt;Um &lt;span style="font-weight: bold;"&gt;ilustrador técnico&lt;/span&gt;. Ele não precisa ser criativo, mas tem que ser metódico e calculista. Ah, e desenhar bem, claro. Ele vai transformar os desenhos do ilustrador conceitual em desenhos técnicos, prontos pra passar pro 3D. &lt;a href="http://www.allanbrito.com/wp-content/uploads/2007/12/flatshot.gif"&gt;Desenho técnico&lt;/a&gt; é quando ele desenha o personagem de frente, de lado, de cima e de costas, todos com a mesma medida, para o modelador usar como referência. Modelar os bonecos em argila e fotografar nesses ângulos também tá valendo. E se achar um amigo feio que parece o monstro do game, fotografa ele também.&lt;br /&gt;&lt;br /&gt;Três &lt;span style="font-weight: bold;"&gt;Modeladores 3D&lt;/span&gt;. Um pra modelar personagens, outro pra modelar cenários, outro pra modelar objetos. Eles tem que ser bons, modelar rápido, dominar o software que eles escolheram, saber transformar em 3D tudo o que o ilustrador técnico colocou no papel. Simples assim. Ah, claro, saber fazer um texture bake bem feito ajuda.&lt;br /&gt;&lt;br /&gt;Um &lt;span style="font-weight: bold;"&gt;ilustrador digital&lt;/span&gt;. Esse também tem que ser muito foda. Ele vai trabalhar junto com o modelador 3D e vai transformar a arte do ilustrador conceitual nas texturas que o modelador vai usar nos modelos 3D. Ele tem que saber pintar peles, terra, grama, pedras, etc; e entender do 3D também porque ele vai fazer texturas procedurais na mão, não apenas pintar no photoshop. Mesclar fotos até vale, mas que no final saia algo original.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;(já trabalhei numa empresa que os próprios modeladores texturizavam, não existia essa coisa de separar profissional de modelagem dos de textura e às vezes até animação. Às vezes isso nem precisa mesmo, principalmente no Brasil, mas mesmo que você saiba os dois, sempre tem um deles em que  vc é melhor)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Um &lt;span style="font-weight: bold;"&gt;riggador&lt;/span&gt;. Esse vai preparar o modelo 3D e deixá-lo pronto para animação. Vai criar todas as ferramentas e manipuladores para que o animador possa trabalhar sossegado, sem se preocupar com possíveis errinhos nos modelos.&lt;br /&gt;&lt;br /&gt;Um &lt;span style="font-weight: bold;"&gt;animador&lt;/span&gt;. O personagem 3D já deve chegar na mão desse cara completamente riggado, pronto pra animar. Esse cara entende de &lt;a href="http://en.wikipedia.org/wiki/The_Animator%27s_Survival_Kit"&gt;teoria da animação&lt;/a&gt;, 2D mesmo. Com essas sólidas teorias na bagagem e um bom rigg, ele vai dar vida aos nossos personagens.&lt;br /&gt;&lt;br /&gt;Pronto, e agora o nosso art pipeline já está pronto?&lt;br /&gt;&lt;br /&gt;Claro que não... ainda temos que ter um bom &lt;span style="font-weight: bold;"&gt;arquiteto de informação&lt;/span&gt; trabalhando junto com um &lt;span style="font-weight: bold;"&gt;designer de interfaces.&lt;/span&gt; Eles vão criar juntos a arte dos menus e a forma de fazer o jogador interagir (e interagir um com o outro, caso seja um jogo online). Uma boa base conceitual em usabilidade, acessibilidade, jogabilidade e todos os ades são um pré-requisito.&lt;br /&gt;&lt;br /&gt;Vocês devem estar loucos pra que eu entre logo na parte de programação, né? Ok, ok, eu vou chegar lá, mas antes tem duas pessoas muito importantes:&lt;br /&gt;&lt;br /&gt;Um &lt;span style="font-weight: bold;"&gt;sound designer&lt;/span&gt; e um &lt;span style="font-weight: bold;"&gt;músico (ou uma banda)&lt;/span&gt;. O primeiro cria os efeitos sonoros do jogo, o segundo vai criar as músicas. Única coisa que se exige aqui é criatividade e talento. Ah, e claro, o mais importante: saber trabalhar em equipe, cumprir prazos e cronogramas, saber transformar em músicas o conceito que está no papel, saber criar um clima para o jogador baseado nas idéias do game designer e do roteirista (não criar coisas avulsas). Em outras palavras, quero um profissional, não um alucinado que vai pedir 300 toalhas brancas faltando 1 dia pra cumprir o prazo.&lt;br /&gt;&lt;br /&gt;E agora, finalmente, os &lt;span style="font-weight: bold;"&gt;programadores&lt;/span&gt;. Sem eles, o jogo não existe. &lt;span style="font-weight: bold;"&gt;Na verdade, se eles souberem modelar, texturizar, animar e mexer num programa de edição de áudio, eles já podem fazer um jogo sozinhos&lt;/span&gt;; sem precisar de investidor nem nada. Até existe gente que sabe um pouco de tudo isso, e cria coisas usando o 3DGS ou alguma ferramenta similar, mas JAMAIS vai sair desse cara solitário um Final Fantasy da vida. Impossível. O FF existe porque tem uma puta equipe por trás; o músico deles é um maestro, compositor, sabe latim, o caralho a4. Os artistas deles são os melhores do mundo, criativos, premiados, etc. Os programadores deles são de C++, não de 3DGS (sem querer menosprezar o 3DGS, claro). É cada um na sua especialidade, explorando a fundo seu talento, não sendo bonzinho em várias coisas, mas sendo FODA em uma coisa só.&lt;br /&gt;&lt;br /&gt;Isso significa que vou precisar de programadores pra fazer a lógica, outros pra fazer AI, outros pra Pathfinding, outros pra controlar a animação dos personagens, outros pra gráficos e render, outros pra física e outros pra som. Ou um só que conheça boas ferramentas que facilitem tudo isso. Quero fazer a coisa do zero, mas também não há necessidade de re-inventar a roda... se tem ferramentas boas, vamos usá-las, mas sabendo como elas funcionam e personalizando-as de acordo com a nossa necessidade.&lt;br /&gt;&lt;br /&gt;É esse tipo de equipe que eu estou procurando... e espero encontrar até o final do ano. Alguém topa?&lt;br /&gt;&lt;br /&gt;Ah, sim... lembrem-se de que esse é um blog sobre C++, para programadores iniciantes; ou para os não iniciantes que se interessam por games. Outros posts sobre esse projeto eu vou fazer DEPOIS DO DIA 30 DE JANEIRO DE 2009. Até lá, só quero juntar pessoas interessadas e vou revelar o segredo do game para aquelas que eu selecionar.&lt;br /&gt;&lt;br /&gt;FIM. Agora vou voltar a publicar meu conteúdo normal, uma vez por semana; ou de 15 em 15 dias. Uma coincidência: na mesma semana que arrumei esse emprego, recebi um e-mail do Rodrigo Strauss, do &lt;a href="http://www.blogger.com/www.1bit.com.br"&gt;1bit&lt;/a&gt;, que dizia:&lt;br /&gt;"Achei boa tua iniciativa, espero que continue. Só saiba que escrever um post por dia dá bastante trabalho, talvez um resumo da &lt;span class="nfakPe"&gt;semana&lt;/span&gt; seria mais fácil e factivel."&lt;br /&gt;&lt;br /&gt;Eu respondi pra ele falando do emprego, que na verdade eu não tinha escolha, teria que ser uma vez por semana mesmo (e que eu iria fazer um post citando o e-mail dele, que só consegui encaixar aqui embaixo =p).&lt;br /&gt;&lt;br /&gt;E agora? Qual o próximo passo? Uma entrevista com o Rodrigo Strauss? Um post só sobre Pointers e seus segredos? um artigo sobre Game Design, ou &lt;a href="http://cboard.cprogramming.com/showthread.php?t=61570"&gt;como fazer um Game Loop no C++&lt;/a&gt;? Algo técnico? Algo inspirador?&lt;br /&gt;&lt;br /&gt;Comentem! O que vocês querem saber?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2211950964556159463-2225908063334025437?l=dozeroaomestre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dozeroaomestre.blogspot.com/feeds/2225908063334025437/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2211950964556159463&amp;postID=2225908063334025437' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2211950964556159463/posts/default/2225908063334025437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2211950964556159463/posts/default/2225908063334025437'/><link rel='alternate' type='text/html' href='http://dozeroaomestre.blogspot.com/2008/08/quarto-quinto-dcimo-sexto.html' title='Quarto, quinto... décimo sexto.'/><author><name>Rafael Beckel</name><uri>http://www.blogger.com/profile/01830105071166080182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Ai3cuiX4grk/TQ5xoUpX6KI/AAAAAAAAAM8/dFw03bJ_PFQ/S220/Twitter.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2211950964556159463.post-6819874983989118920</id><published>2008-07-23T03:07:00.004-03:00</published><updated>2008-07-23T03:54:27.637-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Entrevistas'/><category scheme='http://www.blogger.com/atom/ns#' term='Dicas para Iniciantes'/><category scheme='http://www.blogger.com/atom/ns#' term='Links para outros Blogs'/><title type='text'>Entrevista: Wanderlei Caloni</title><content type='html'>&lt;span style="font-size:78%;"&gt;&lt;span&gt;Para saber o que é esse blog, leia o post &lt;a href="http://dozeroaomestre.blogspot.com/2008/07/hello-world.html"&gt;Hello World&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;Para ler o resumo do terceiro dia, clique &lt;a href="http://dozeroaomestre.blogspot.com/2008/07/terceiro-dia-revisando.html"&gt;aqui&lt;/a&gt;.&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Entrevista com &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;Wanderlei Caloni&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Se você visitar a página oficial da &lt;a href="http://www.cbrasil.org"&gt;comunidade de programadores C/C++ no Brasil&lt;/a&gt;, irá encontrar uma série de links para os principais sites tupiniquins e estrangeiros. Entre eles, está o site do &lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;&lt;a href="http://www.caloni.com.br/"&gt;Wanderlei Caloni&lt;/a&gt;&lt;/span&gt;, programador com 8 anos de mercado e muitas informações para dar sobre o dia-a-dia da profissão.&lt;br /&gt;&lt;div dir="ltr"&gt;&lt;br /&gt;Ele trabalha principalmente com &lt;a href="http://en.wikipedia.org/wiki/Front-end_and_back-end"&gt;softwares backend&lt;/a&gt; (daqueles que não tem telinha, como serviços e drivers) para a plataforma Windows e com segurança da informação. Ele diz que é um profundo conhecedor da linguagem C e não-tão-profundo-conhecedor-modéstia-mode-ON da linguagem C++. Ele usa a &lt;a href="http://en.wikipedia.org/wiki/Windows_API"&gt;API Win32&lt;/a&gt; para a maioria das tarefas, apesar de já ter se aventurado com o tão bem falado &lt;a href="http://www.borland.com/br/products/cbuilder/index.html"&gt;C++ Builder&lt;/a&gt; (plataforma de desenvolvimento rápido da Borland) e com &lt;a href="http://pt.wikipedia.org/wiki/Microsoft_Foundation_Classes"&gt;MFC&lt;/a&gt;/&lt;a href="http://en.wikipedia.org/wiki/Active_Template_Library"&gt;ATL&lt;/a&gt;/&lt;a href="http://en.wikipedia.org/wiki/Windows_Template_Library"&gt;WTL&lt;/a&gt; (&lt;a href="http://www.1bit.com.br/content.1bit/weblog/sopa_de_letrinhas_wtl"&gt;confuso?&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Sem mais delongas, segue abaixo a entrevista que fiz com ele, na íntegra. Espero que lhe seja bastante útil. =)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Você começou com C++ direto, ou com outra linguagem?&lt;/span&gt;&lt;/div&gt;&lt;div dir="ltr"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Caloni:&lt;/span&gt; Comecei com BASIC, em uma telinha do DOS dentro do Windows 95, o primeiro sistema operacional que fucei na minha vida. Na época lia diversos livros disponíveis na biblioteca sobre a linguagem, os quais continham exemplos para treinar. Obviamente, naquela época programar era apenas um hobby. Um hobby, aliás, muito divertido.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Como você começou a programar? Qual foi a sua motivação?&lt;/span&gt;&lt;/div&gt;&lt;div class="Ih2E3d"&gt; &lt;/div&gt;&lt;div dir="ltr"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Caloni:&lt;/span&gt; Sou "novato" no ramo perto das pessoas veteranas que conheço: comecei a programar aos 17 anos. Minha motivação? Eu achava todo esse negócio de informática e computador a coisa mais divertida do mundo! (na verdade, ainda acho). Não houve uma motivação especial no começo, visto que eu lia sobre todas as coisas que eu achava necessário para conhecer a fundo o funcionamento do computador (da visão abstrata do hardware até os princípios lógicos que levaram-no a ser inventado). Programar foi uma continuação do meu estudo; se tornou um vício, e hoje sou um programador profissional.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Quais foram as principais dificuldades encontradas?&lt;/span&gt;&lt;/div&gt;&lt;div class="Ih2E3d"&gt; &lt;/div&gt;&lt;div dir="ltr"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Caloni:&lt;/span&gt; Para quem tem tempo e vontade de aprender sobre alguma coisa, não existe muita dificuldade (ou como diz meu amigo Thiago, "quem tem tempo caga longe!". A própria dificuldade é uma diversão! Quando, por exemplo, nos vemos com um erro de compilação ou um programa que trava, a diversão é descobrir por que não está compilando, ou por que está travando. Esse negócio de dificuldade eu acredito que seja para as pessoas que não estão motivadas o suficiente e que deveriam, na minha opinião, pensar em fazer outra coisa mais motivante. Todos podem ser felizes fazendo o que gostam.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Por quê C++?&lt;/span&gt;&lt;/div&gt;&lt;div dir="ltr"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Caloni:&lt;/span&gt; Acredito que a pergunta deva ser "Por que C?", já que comecei efetivamente programando em C, dominando a linguagem, para depois me atrever a aprender "C com classes". A resposta pode não ser bonita, mas serviu de motivação para eu mudar do BASIC para o C: é a linguagem dos "fodões". Sistemas operacionais são escritos em C; os programas mais badalados do planeta são escritos em C; jogos são escritos em C; como você mesmo disse, até novas linguagens são escritas em C. Além do mais, é a linguagem dos hackers (além de assembly, que também me aventurei algum tempo atrás), ou seja, não existem muitos limites do que se possa fazer em C. É uma linguagem pra vida toda. Depois de dominar completamente essa linguagem você pode partir para outras linguagens mais modernas ou mais "funcionais" para o que você está fazendo e tirar de letra em pouquíssimo tempo. Porém, você não consegue aprender e usar C facilmente se partir de outra linguagem de mais alto nível. Outra coisa que merece atenção: aprender C pode não ser tão difícil, mas dominar a linguagem, isso, talvez demore anos; e muitos dizem que você sempre está aprendendo coisas novas todos os dias. Eu acredito nisso. Programar em C é uma lição de humildade, pois quase todo o tempo você terá que lidar com o fato que se existe alguma bug no seu programa, o bug é totalmente seu, e não do framework, da runtime do C ou do compilador.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Quais programadores brasileiros você mais admira? Por quê?&lt;/span&gt;&lt;/div&gt;&lt;div class="Ih2E3d"&gt;&lt;blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"&gt; &lt;/blockquote&gt;&lt;/div&gt;&lt;div dir="ltr"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Caloni: &lt;/span&gt;Não conheço muitos pessoalmente, mas são esses os que mais admiro por vê-los de fato programando, e não em linques qualquer da internet ou em uma lista de discussão: &lt;a href="www.1bit.com.br"&gt;Rodrigo Strauss&lt;/a&gt;, &lt;a href="www.driverentry.com.br"&gt;Fernando Roberto da Silva&lt;/a&gt;, William Oliveira, &lt;a href="codebehind.wordpress.com"&gt;Thiago Oliveira&lt;/a&gt;. Por coincidência, a maioria programa em C/C++. Porém, nem todos; o Thiago, por exemplo, programa em C# principalmente, o que prova que não é a linguagem que faz o programador, mas o que ele faz com a linguagem é que o define melhor. A razão de admirá-los é porque houve hábitos e princípios de todos que usei como inspiração para me melhorar como programador, e porque aprendi muito com todos eles. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Quais as principais dicas que você dá aos iniciantes?&lt;/span&gt; &lt;/div&gt;&lt;div dir="ltr"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Caloni: &lt;/span&gt;Dicas? Não tem dicas. Nem segredos. Se você quer aprender C/C++ ou qualquer outra coisa nessa vida, a única saída é agir. Leia o quanto puder, programe o quanto puder. Bons programadores gostam de fato do que fazem e se destacam naturalmente, assim como em qualquer profissão. O único conselho que dou a quem deseja se iniciar na arte é ter certeza de que é isso mesmo o que você quer. Se for realmente o que você sempre quis fazer, então não existirá tempo ruim nos momentos ruins (e vão haver, tenha certeza disso). Agora, se não for o que te faz acordar todo santo dia para ir trabalhar, então você tem duas escolhas: achar o que realmente você gosta de fazer ou aprender a gostar do que você quer fazer. Ambas são possíveis; basta ter vontade.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Poste os links dos artigos que já escreveu.&lt;/span&gt;&lt;/div&gt;&lt;div dir="ltr"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Caloni: &lt;/span&gt;Artigos? Bom, pensei que a maioria dos meus posts no blogue fossem artigos... aqui vão alguns (em inglês) que fiz para o The Code Project (um site muito bom sobre programação Windows lá fora):&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.codeproject.com/script/Articles/MemberArticles.aspx?amid=108248" target="_blank"&gt;http://www.codeproject.com/&lt;wbr&gt;script/Articles/&lt;wbr&gt;MemberArticles.aspx?amid=&lt;wbr&gt;108248&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;E abaixo alguns artigos que eu acho particularmente interessante para os iniciantes:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.caloni.com.br/blog/archives/guia-basico-para-programadores-de-primeiro-int-main" target="_blank"&gt;http://www.caloni.com.br/blog/&lt;wbr&gt;archives/guia-basico-para-&lt;wbr&gt;programadores-de-primeiro-int-&lt;wbr&gt;main&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.caloni.com.br/blog/archives/guia-basico-para-programadores-de-primeiro-breakpoint" target="_blank"&gt;http://www.caloni.com.br/blog/&lt;wbr&gt;archives/guia-basico-para-&lt;wbr&gt;programadores-de-primeiro-&lt;wbr&gt;breakpoint&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.caloni.com.br/blog/archives/os-diferentes-erros-na-linguagem-c" target="_blank"&gt;http://www.caloni.com.br/blog/&lt;wbr&gt;archives/os-diferentes-erros-&lt;wbr&gt;na-linguagem-c&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.caloni.com.br/blog/archives/configurando-seus-projetos-no-visual-studio" target="_blank"&gt;http://www.caloni.com.br/blog/&lt;wbr&gt;archives/configurando-seus-&lt;wbr&gt;projetos-no-visual-studio&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.caloni.com.br/blog/archives/read-the-functional-manual" target="_blank"&gt;http://www.caloni.com.br/blog/&lt;wbr&gt;archives/read-the-functional-&lt;wbr&gt;manual&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2211950964556159463-6819874983989118920?l=dozeroaomestre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dozeroaomestre.blogspot.com/feeds/6819874983989118920/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2211950964556159463&amp;postID=6819874983989118920' title='5 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2211950964556159463/posts/default/6819874983989118920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2211950964556159463/posts/default/6819874983989118920'/><link rel='alternate' type='text/html' href='http://dozeroaomestre.blogspot.com/2008/07/entrevista-wanderlei-caloni.html' title='Entrevista: Wanderlei Caloni'/><author><name>Rafael Beckel</name><uri>http://www.blogger.com/profile/01830105071166080182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Ai3cuiX4grk/TQ5xoUpX6KI/AAAAAAAAAM8/dFw03bJ_PFQ/S220/Twitter.png'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2211950964556159463.post-3684761906545037046</id><published>2008-07-21T19:20:00.006-03:00</published><updated>2009-02-27T17:28:24.795-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dicas para Iniciantes'/><category scheme='http://www.blogger.com/atom/ns#' term='Links para outros Blogs'/><category scheme='http://www.blogger.com/atom/ns#' term='Diário de Aprendizado'/><title type='text'>Terceiro dia: revisando</title><content type='html'>&lt;span style="font-size:78%;"&gt;&lt;span&gt;Para saber o que é esse blog, leia o post &lt;a href="http://dozeroaomestre.blogspot.com/2008/07/hello-world.html"&gt;Hello World&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;Para ler o resumo do segundo dia, clique &lt;a href="http://dozeroaomestre.blogspot.com/2008/07/segundo-dia-seguindo-os-tutoriais.html"&gt;aqui&lt;/a&gt;.&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Resumo do meu terceiro dia&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Existem duas categorias de pessoas que estão começando a aprender &lt;a href="http://pt.wikipedia.org/wiki/C%2B%2B"&gt;C++&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;- Aqueles que nunca tiveram contato com programação na vida;&lt;br /&gt;- Aqueles que já programaram antes e querem ser mais poderosos, dominando uma liguagem mais avançada;&lt;br /&gt;&lt;br /&gt;Como estou na segunda categoria, passei o dia revisando tudo aquilo que eu já sei de outras linguagens e fiquei treinando escrever na sintaxe do C++.  Trabalho pra um único dia, no máximo dois, apesar de eu ter estranhado alguns detalhes. Porém, para o pessoal da primeira categoria, é impossível fazer isso em um só dia, então vou dedicar meu post para eles.&lt;br /&gt;&lt;br /&gt;Para você que nunca programou na vida, selecionei 3 artigos no &lt;a href="http://www.1bit.com.br/"&gt;site do Rodrigo Strauss&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.1bit.com.br/content.1bit/programador"&gt;Como ser um Programador&lt;/a&gt;?&lt;br /&gt;Melhor ainda, &lt;a href="http://www.1bit.com.br/content.1bit/bom_programador"&gt;Como ser um Bom Programador&lt;/a&gt;?&lt;br /&gt;E, finalmente, as &lt;a href="http://www.1bit.com.br/content.1bit/weblog/faq_cpp_start"&gt;Perguntas mais frequentes de quem está começando&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Recomendo que leia-os antes de continuar aqui. Depois, se ainda se sentir motivado a aprender C++, leia sobre os seguintes assuntos, em todos os lugares que conseguir encontrar: &lt;a href="http://pt.wikipedia.org/wiki/Algoritmo"&gt;algoritmos&lt;/a&gt;, &lt;a href="http://return0.wordpress.com/2008/05/07/instrucoes-if-e-else-em-c-c-e-java/"&gt;condicionais&lt;/a&gt;, &lt;a href="http://www.cplusplus.com/doc/tutorial/operators.html"&gt;operadores&lt;/a&gt;, &lt;a href="http://qualadoce.blogspot.com/2008/04/laos-de-repetio.html"&gt;loops (for, while &amp;amp; do-while)&lt;/a&gt;, &lt;a href="http://www.cprogramming.com/tutorial/lesson4.html"&gt;funções&lt;/a&gt;. Leia, preatique, comente lá embaxo, escreva-me um e-mail, entre nas comunidades do Orkut sobre programação, etc.&lt;br /&gt;&lt;br /&gt;A próxima lição da lista do meu &lt;a href="http://www.cprogramming.com/tutorial/lesson1.html"&gt;tutorial escolhido&lt;/a&gt; é a primeira novidade real que apareceu pra mim: os temidos &lt;span style="font-weight: bold;"&gt;pointers&lt;/span&gt; (ou ponteiros). Eu já esperava isso, sei que com o C++ eu tenho que gerenciar a memória do computador na unha (as linguagens mais alto nível fazem isso automaticamente) e que isso confunde muita gente.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Cenas do próximo capítulo*: &lt;/span&gt;vou estudá-los com calma. Todas as recomendações que li a respeito dizem que essa parte é difícil de entender, mas que não devemos passar pra frente enquanto não estiver dominando isso. Vou dedicar mais dias a essa parte, já que praticamente pulei as lições mais básicas, além de ser um assunto que naturalmente gera mais dúvidas.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;*Entrevista: &lt;a href="http://dozeroaomestre.blogspot.com/2008/07/entrevista-wanderlei-caloni.html"&gt;Wanderlei Caloni&lt;/a&gt;&lt;br /&gt;*&lt;a href="http://dozeroaomestre.blogspot.com/2008/08/quarto-quinto-dcimo-sexto.html"&gt;Quarto dia&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Espero vê-los em breve.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2211950964556159463-3684761906545037046?l=dozeroaomestre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dozeroaomestre.blogspot.com/feeds/3684761906545037046/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2211950964556159463&amp;postID=3684761906545037046' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2211950964556159463/posts/default/3684761906545037046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2211950964556159463/posts/default/3684761906545037046'/><link rel='alternate' type='text/html' href='http://dozeroaomestre.blogspot.com/2008/07/terceiro-dia-revisando.html' title='Terceiro dia: revisando'/><author><name>Rafael Beckel</name><uri>http://www.blogger.com/profile/01830105071166080182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Ai3cuiX4grk/TQ5xoUpX6KI/AAAAAAAAAM8/dFw03bJ_PFQ/S220/Twitter.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2211950964556159463.post-6044050679549391541</id><published>2008-07-20T22:28:00.006-03:00</published><updated>2008-07-23T03:03:03.528-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Links para Tutoriais'/><category scheme='http://www.blogger.com/atom/ns#' term='Diário de Aprendizado'/><title type='text'>Segundo Dia: seguindo os tutoriais</title><content type='html'>&lt;span style="font-size:78%;"&gt;&lt;span&gt;Para saber o que é esse blog, leia o post &lt;a href="http://dozeroaomestre.blogspot.com/2008/07/hello-world.html"&gt;Hello World&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;Para ler o resumo do primeiro dia, clique &lt;a href="http://dozeroaomestre.blogspot.com/2008/07/primeiro-dia-organizando-se.html"&gt;aqui&lt;/a&gt;.&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Resumo do meu segundo dia&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Hora de escolher um bom tutorial pra trabalhar! Existem muitos na internet.&lt;br /&gt;&lt;br /&gt;O meu método pessoal de aprendizado é me concentrar em &lt;span style="font-weight: bold;"&gt;apenas um&lt;/span&gt; tutorial, que vai servir de guia, e usar os outros apenas para ver os assuntos estudados sob outro ângulo. Eles sempre trabalham com exemplos diferentes, exercícios diferentes - e ver um assunto sob vários ângulos é a melhor forma de fixá-lo. Ontem fiz uma seleção prévia e estou com 3 tutoriais abertos:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://newdata.box.sk/bx/c/htm/ch01.htm"&gt;http://newdata.box.sk/bx/c/htm/ch01.htm&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.cprogramming.com/tutorial/lesson1.html"&gt;&lt;br /&gt;http://www.cprogramming.com/tutorial/lesson1.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.isotton.com/devel/docs/lcpp/unpacked/node3.html"&gt;http://www.isotton.com/devel/docs/lcpp/unpacked/node3.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Você pode ficar livre pra escolher aquele que faz você se sentir mais familiar, ou procurar &lt;a href="http://www.arnaut.eti.br/op/CPPAI00.htm"&gt;um em português&lt;/a&gt;. Eu prefiro me acostumar a ler tudo em inglês porque as melhores documentações de tudo o que você imaginar estão em inglês - e isso vai ser crucial pra quando você for alçar vôos maiores com programação.&lt;br /&gt;&lt;br /&gt;Antes de ler, passei uma vista rápida neles e pulei toda a parte introdutória, por exemplo: diferenças entre linguagem interpretada e compilada; o que é um compilador; diferença entre código-fonte e executável; etc. Eu não preciso ler essas coisas, MAS se você está programando pela primeira vez na sua vida, recomendo fortemente que leia tudo isso e entenda (principalmente a parte de Programação Orientada a Objeto).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;MÃOS À OBRA&lt;/span&gt;:&lt;br /&gt;Escolhi o tutorial de 21 dias como guia e comecei a seguí-lo. Eis que surgiu, então, a primeira mudança de planos. Eu havia decidido por esse tutorial porque me pareceu ser mais completo, mas quando cheguei na parte prática, descobri que não funcionava, porque foi escrito antes do C++ se tornar um ISO Standard. Esse tutorial foi tirado da segunda edição de um livro que já está na quinta, a única coisa que achei atualizada dele estava à venda no Amazon e eu não quero gastar dinheiro com isso agora.&lt;br /&gt;&lt;br /&gt;Fiquei então com o tutorial do &lt;span style="font-weight: bold;"&gt;cprogramming.com&lt;/span&gt;, que é mais objetivo e explica direitinho. A compilação que fiz do meu "Hello Fuckin' World" funcionou perfeitamente bem e eu não fiquei me sentindo um idiota perdido.&lt;br /&gt;&lt;br /&gt;Descobri também que passo mais tempo escrevendo aqui do que de fato lendo o tutorial. =p&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Cenas do &lt;a href="http://dozeroaomestre.blogspot.com/2008/07/terceiro-dia-revisando.html"&gt;próximo capítulo&lt;/a&gt;: &lt;/span&gt;vou tentar fazer posts mais resumidos e com mais links. O próximo passo é exercitar as "IF Statements", que não são novidade pra mim, mas vou seguir o tutorial passo a passo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2211950964556159463-6044050679549391541?l=dozeroaomestre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dozeroaomestre.blogspot.com/feeds/6044050679549391541/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2211950964556159463&amp;postID=6044050679549391541' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2211950964556159463/posts/default/6044050679549391541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2211950964556159463/posts/default/6044050679549391541'/><link rel='alternate' type='text/html' href='http://dozeroaomestre.blogspot.com/2008/07/segundo-dia-seguindo-os-tutoriais.html' title='Segundo Dia: seguindo os tutoriais'/><author><name>Rafael Beckel</name><uri>http://www.blogger.com/profile/01830105071166080182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Ai3cuiX4grk/TQ5xoUpX6KI/AAAAAAAAAM8/dFw03bJ_PFQ/S220/Twitter.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2211950964556159463.post-6805056829822005159</id><published>2008-07-19T09:01:00.009-03:00</published><updated>2008-07-23T03:01:38.248-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Links para Tutoriais'/><category scheme='http://www.blogger.com/atom/ns#' term='Diário de Aprendizado'/><category scheme='http://www.blogger.com/atom/ns#' term='Planejamento'/><category scheme='http://www.blogger.com/atom/ns#' term='Links para IDEs'/><category scheme='http://www.blogger.com/atom/ns#' term='Organização pessoal'/><title type='text'>Primeiro dia: Organizando-se</title><content type='html'>&lt;span style="font-size:78%;"&gt;&lt;span&gt;Para saber o que é esse blog, leia o post &lt;a href="http://dozeroaomestre.blogspot.com/2008/07/hello-world.html"&gt;Hello World&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Resumo do meu primeiro dia&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Estou começando uma jornada de 6 meses e preciso me manter sempre dentro da minha meta, então as palavras de ordem são: &lt;a href="http://docs.google.com/"&gt;organização&lt;/a&gt; e &lt;a href="http://www.google.com/calendar"&gt;planejamento&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;Nota importante: &lt;/span&gt;nunca, &lt;span style="font-weight: bold;"&gt;NUNCA&lt;/span&gt; comece nada de longo prazo sem planejar todos os detalhes, mesmo que no meio do caminho esse plano sofra algumas alterações. &lt;/span&gt;Toda caminhada de 1000 passos sempre começa com o primeiro - e esse primeiro passo deve ser sempre: escrever tudo o que você precisa fazer para atingir a sua meta E MANTER TUDO O QUE VOCÊ ESCREVEU NUM ÚNICO LUGAR. Em outras palavras, esqueça os post-it. Alimente o hábito de ter uma agenda, seja no papel ou eletrônica, que guarde todas as suas informações num único lugar e que seja facilmente acessível. Você vai ver o quanto isso faz diferença na vida de um programador.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Há uns meses atrás confiei toda a minha vida pessoal e profissional aos servidores do Google. Nunca mais precisei de agenda no papel e nunca mais perdi meus dados com formatações e acidentes, além de integrar tudo com meu e-mail, mas depois eu entro nessa questão com mais detalhes.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Meu primeiro passo&lt;/span&gt;, portanto, foi criar uma &lt;a href="http://spreadsheets.google.com/ccc?key=p4nOWYrXMmYytPfvjv0YZcw&amp;amp;hl=pt_BR"&gt;planilha de acompanhamento&lt;/a&gt; pra mim mesmo, baseado no que eu esperava de cada mês. Lembre-se, você é um autodidata, não alguém que está surfando a esmo na internet. O objetivo aqui é aprender &lt;span style="font-weight: bold;"&gt;algo específico&lt;/span&gt; com um &lt;span style="font-weight: bold;"&gt;prazo bem definido&lt;/span&gt;, então temos que organizar esse pouco tempo que temos. Segue abaixo o que eu escrevi no papel antes de passar para a planilha:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-weight: bold;"&gt;Primeiro mês&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;Pretendo entender a linguagem e já fazer meus primeiros programas em C++. Vai ser um pouco mais do que calculadoras e programinhas "&lt;a href="http://pt.wikipedia.org/wiki/Programa_Ol%C3%A1_Mundo"&gt;Hello World&lt;/a&gt;". Vou atingir esse objetivo em 30 dias. &lt;/span&gt;&lt;span style="font-size:78%;"&gt;Pra calcular esse tempo, me baseei num tutorial que achei de 21 dias. Como vou seguí-lo à risca, deixo mais 9 dias para pesquisar outras referências na internet livremente.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Segundo mês&lt;/span&gt;&lt;br /&gt;Pretendo me aprofundar mais em lógica de programação, estruturação de dados, interface e pesquisar bibliotecas que possam me ser úteis. Criar um mini-projeto pessoal para exercitar os conhecimentos adquiridos.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Terceiro mês&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;Estudar mais a fundo gráficos e interface com o usuário.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Quarto mês&lt;/span&gt;&lt;br /&gt;Começar a brincar com o Ogre. Entender a arquitetura e os fundamentos dele.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Quinto mês&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;Pesquisar bibliotecas que possam ser integradas com o Ogre para a produção de um game e decidir quais usar. Escrever um mini-game básico para testar (um joguinho básico de tiro)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Sexto mês&lt;/span&gt;&lt;br /&gt;Começar a trabalhar no &lt;span style="font-weight: bold;"&gt;Game Secreto&lt;/span&gt; que prometi revelar no final da novela. Publicar o novo blog.&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;  &lt;br /&gt;Agora que eu já tinha idéia de como seriam esses 6 meses, &lt;span style="font-weight: bold;"&gt;meu segundo passo&lt;/span&gt; foi começar a fuçar tudo o que eu encontrasse sobre C++. Criei uma pasta nos meus favoritos do &lt;a href="http://pt-br.www.mozilla.com/pt-BR/"&gt;Firefox&lt;/a&gt; e coloquei tudo o que eu achei lá, sem ler muito a fundo, mas organizando por necessidade.&lt;br /&gt;&lt;br /&gt;Agora, &lt;span style="font-weight: bold;"&gt;o terceiro passo&lt;/span&gt;: depois de escolher um &lt;a href="http://www.cprogramming.com/tutorial.html"&gt;bom site para me basear&lt;/a&gt;, comecei a ler o que eu precisava pra começar a programar. Então, descobri que eu teria um passo a mais antes de escrever meu "Hello World" turbinado: qual &lt;a href="http://pt.wikipedia.org/wiki/Ambiente_de_desenvolvimento_integrado"&gt;ambiente de desenvolvimento&lt;/a&gt; escolher?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Passo três ponto um&lt;/span&gt;: passei o dia escolhendo o IDE que eu iria trabalhar. É uma tarefa difícil, pois existem muitos deles e cada um é melhor em alguma coisa. Depois de pesquisar as opções gratuitas que existem, acabei optando pelo &lt;a href="http://www.codeblocks.org/"&gt;Code::Blocks&lt;/a&gt;, depois de duvidar se baixaria ou não o &lt;a href="http://www.eclipse.org/"&gt;Eclipse&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;O Code::Blocks é um editor de projetos respeitável, já está na versão 8.2, mas o que mais pesou na decisão de escolhê-lo foi o fato de ser recomendado no &lt;a href="http://www.ogre3d.org/wiki/index.php/Installing_An_SDK"&gt;Wiki da Ogre&lt;/a&gt;. Enfim, finalmente eu baixei e instalei tudo o que tinha que instalar e me permiti um bônus: meu primeiro "Hello World" seria um mundo em 3D do Ogre. Afinal, eu tenho que começar com o pé direito.&lt;br /&gt;&lt;br /&gt;Então, &lt;span style="font-weight: bold;"&gt;meu quarto passo&lt;/span&gt; foi botar esse Hello World pra funcionar. Sem entender nada de Ogre, baixei o SDK recomendado e me aventurei a instalar junto com o Code::Blocks. Segui umas instruções para compilar uns projetos que vinham junto com ele, mas não deu certo.&lt;br /&gt;&lt;br /&gt;Então comecei a fuçar tutoriais de como configurar um projeto do Ogre, e achei &lt;a href="http://www.gamedev.com.br/forum/viewtopic.php?p=7265"&gt;meu salvador da pátria&lt;/a&gt;: o Eric Draven escreveu um &lt;a href="http://netpointz.com/tutoriais/ogre_cb/"&gt;tutorial&lt;/a&gt; em português de como configurar uma cena do zero. Achei aquilo ótimo, pois assim eu poderia entender mais a fundo o que estava acontecendo. E li avidamente até o final, fazendo tudo passo-a-passo e descobrindo os confins do Code::Blocks.&lt;br /&gt;&lt;br /&gt;Infelizmente, ainda perdi mais um pouco de tempo porque a versão de uma DLL do DirectX não era compatível com o programa que eu compilei e eu tive que olhar em alguns fóruns gringos a solução, mas não foi tão difícil assim de achar. Enfim, depois que consegui rodar o programa, me dei por satisfeito. Estava terminada minha busca do primeiro dia, com a sensação de ter feito mais progressos do que eu imaginava: estou com um SDK funcionando, o Ogre instalado pra eu brincar de vez em quando e um &lt;a href="http://newdata.box.sk/bx/c/htm/ch01.htm"&gt;tutorial de 21 dias selecionado a dedo&lt;/a&gt;, que vou mesclar com &lt;a href="http://www.cprogramming.com/tutorial/lesson1.html"&gt;outro &lt;/a&gt;&lt;a href="http://www.cprogramming.com/tutorial/lesson1.html"&gt;de 24 lições&lt;/a&gt; pra ter duas abordagens diferentes no aprendizado. Se não entender uma coisa de um, tenho o outro pra explicar. =)&lt;br /&gt;&lt;br /&gt;Até amanhã, crianças!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://netpointz.com/tutoriais/ogre_cb/imagens/rodando.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 282px; height: 221px;" src="http://netpointz.com/tutoriais/ogre_cb/imagens/rodando.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:78%;"&gt;Meu primeiro "Hello World" em C++. Nada mau, né?    =)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Cenas do &lt;a href="http://dozeroaomestre.blogspot.com/2008/07/segundo-dia-seguindo-os-tutoriais.html"&gt;próximo capítulo&lt;/a&gt;: &lt;/span&gt;amanhã vou ler a lição 01 do tutorial e procurar pessoas pra divulgar esse blog. Adicionar outros desenvolvedores no meu Gmail e MSN, procurar fazer um network. Bingo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2211950964556159463-6805056829822005159?l=dozeroaomestre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dozeroaomestre.blogspot.com/feeds/6805056829822005159/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2211950964556159463&amp;postID=6805056829822005159' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2211950964556159463/posts/default/6805056829822005159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2211950964556159463/posts/default/6805056829822005159'/><link rel='alternate' type='text/html' href='http://dozeroaomestre.blogspot.com/2008/07/primeiro-dia-organizando-se.html' title='Primeiro dia: Organizando-se'/><author><name>Rafael Beckel</name><uri>http://www.blogger.com/profile/01830105071166080182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Ai3cuiX4grk/TQ5xoUpX6KI/AAAAAAAAAM8/dFw03bJ_PFQ/S220/Twitter.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2211950964556159463.post-6270691167453300258</id><published>2008-07-19T04:40:00.005-03:00</published><updated>2008-07-23T02:57:31.418-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Introdução'/><title type='text'>Hello World!</title><content type='html'>&lt;span style="font-weight: bold;"&gt;O QUE É ESSE BLOG?&lt;/span&gt;&lt;br /&gt;Esse blog fala sobre as aventuras de um cara que quer aprender &lt;a href="http://pt.wikipedia.org/wiki/C%2B%2B"&gt;C++&lt;/a&gt; avançado, do ZERO, e existe pra ajudar outros iniciantes como eu. É uma forma de mostrar aos aspirantes o que eles vão encontrar pela frente, além de dar dicas de como completar esse objetivo num prazo determinado.&lt;br /&gt;&lt;br /&gt;Meu objetivo é bem definido: quero &lt;span style="font-weight: bold;"&gt;dominar&lt;/span&gt; a linguagem em menos de 6 meses (entenda: dominar não é igual a aprender. Você aprende em 20 dias, pra dominar geralmente leva anos). Depois disso, vou fazer um game  com o &lt;a href="http://www.ogre3d.org/"&gt;Ogre&lt;/a&gt;. A identidade desse &lt;span style="font-weight: bold;"&gt;game secreto&lt;/span&gt;&lt;span&gt; &lt;/span&gt;(que já existe no papel) pouca gente sabe e ela será revelada no final do blog. =)&lt;br /&gt;&lt;br /&gt;É isso mesmo, esse blog vai ter &lt;span style="font-weight: bold;"&gt;início&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;meio&lt;/span&gt; e &lt;span style="font-weight: bold;"&gt;fim&lt;/span&gt;. É uma novela. Meu último post vai ser no dia &lt;a href="http://www.submarino.com.br/games_productdetails.asp?Query=ProductPage&amp;amp;ProdTypeId=12&amp;amp;ProdId=21372907"&gt;&lt;span style="font-weight: bold;"&gt;30 de janeiro&lt;/span&gt;&lt;/a&gt; (meu aniversário), daqui a exatos 6 meses e 10 dias. A partir desse dia, vou escrever outro blog, dessa vez especificamente sobre o projeto do &lt;span style="font-weight: bold;"&gt;game secreto&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;POR QUÊ APRENDER C++ E NÃO OUTRA LINGUAGEM?&lt;/span&gt;&lt;br /&gt;1- porque meu intuito é fazer jogos 3D sem limitações. &lt;a href="http://www.3dgamestudio.com/"&gt;3D Game Studio&lt;/a&gt;, &lt;a href="http://darkbasicpro.thegamecreators.com/"&gt;DarkBasic&lt;/a&gt;, &lt;a href="http://irrlicht.sourceforge.net/"&gt;Irrlicht&lt;/a&gt;, &lt;a href="http://www.blitzbasic.com/"&gt;Blitz&lt;/a&gt; e similares não me atendem. C++ é mais rápido, mais poderoso, tem acesso direto ao hardware e, portanto, pode escrever a próxima &lt;a href="http://www.youtube.com/watch?v=oaQ256lZ0ew&amp;amp;feature=related"&gt;CryEngine&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;2- porque você pode brincar de Deus. C++ faz tudo. C++ é a mãe* de todas as linguagens de programação, todas elas (com excessão do&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://pt.wikipedia.org/wiki/Linguagem_de_montagem"&gt;Assembly&lt;/a&gt;&lt;/span&gt;) são escritas em C ou C++. O seu sistema operacional é escrito em C++, o seu navegador de internet também, seu editor de texto idem e, o mais importante, os jogos mais fodásticos do mundo são feitos em C++.&lt;br /&gt;&lt;span style="font-size:78%;"&gt;*Na verdade é o Assembly, mas ele é tão feio e chato que não tenho coragem de chamá-lo de mãe.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;3- porque não muda. É ISO Standard. Tem 30 anos nas costas e sua estrutura básica continua praticamente inalterada. Portanto, é um aprendizado para a vida inteira, diferentemente de outras linguagens que mudam de sintaxe como mudam de roupa e aposentam seus livros antigos. Isso significa que existe muito código de C++ que os tiozões escreveram e ainda servem.&lt;br /&gt;&lt;br /&gt;4- conhece outros motivos? Comente. =)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;MAS RAFAEL, POR QUÊ EU DEVO ACOMPANHAR ESSA NOVELA?&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;Bom, se você &lt;a href="http://www.orkut.com.br/Home.aspx"&gt;não tem interesse em aprender C ++&lt;/a&gt;, nem sei porque chegou a ler até aqui, mas obrigado pela atenção. Talvez você goste de ler o resto da novela, por curiosidade - embora ela não vá ter muita utilidade prática pra você. =)&lt;br /&gt;&lt;br /&gt;Porém, caso &lt;a href="http://www.cprogramming.com/"&gt;tenha interesse em aprender&lt;/a&gt;, esse blog vai ser muito útil no seu caminho e eu te dou as boas vindas a esse time de pessoas corajosas que encaram essa linguagem tão complexa. &lt;a href="mailto:%20rafaelbeckel@gmail.com"&gt;Te convido para trocar figurinhas conforme a gente vai aprendendo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;Meu intuito é que o blog sirva de inspiração &lt;span&gt;pra quem quer começar também&lt;/span&gt;, porque sei que &lt;span style="font-weight: bold;"&gt;não é um caminho fácil&lt;/span&gt;, principalmente pra quem quer programar jogos 3D, e o prazo é apertado: posso até começar a programar relativamente bem no primeiro mês; mas, pra DOMINAR a linguagem, 6 meses é muito pouco.&lt;br /&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;Está pronto para começar a jornada? Então, vamos ao &lt;a href="http://dozeroaomestre.blogspot.com/2008/07/primeiro-dia-organizando-se.html"&gt;primeiro dia&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Enjoy! ;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-weight: bold;"&gt;OBSERVAÇÃO:&lt;br /&gt;&lt;/span&gt;Vale ressaltar um detalhe: estou partindo do zero, mas não exatamente sem nada na mão. Eu não sei &lt;/span&gt;&lt;span style="font-weight: bold;font-size:78%;" &gt;quase nada&lt;/span&gt;&lt;span style="font-size:78%;"&gt; de C++, mas não absolutamente nada, porque já programei em outras linguagens antes e tenho noção das complexidades &lt;span style="font-weight: bold;"&gt;a mais&lt;/span&gt; que o C++ tem; então posso passar rápido por toda a parte introdutória. Portanto, posso afirmar que vou sair desses 6 meses me sentindo seguro até para ensinar C++ para outras pessoas, mas se você estiver realmente partindo do &lt;/span&gt;&lt;span style="font-weight: bold;font-size:78%;" &gt;zero absoluto&lt;/span&gt;&lt;span style="font-size:78%;"&gt;, ou seja, se nunca programou antes, &lt;/span&gt;&lt;span style="font-weight: bold;font-size:78%;" &gt;com certeza você vai levar mais tempo do que eu&lt;/span&gt;&lt;span style="font-size:78%;"&gt; (sem querer te desencorajar, é claro).&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2211950964556159463-6270691167453300258?l=dozeroaomestre.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dozeroaomestre.blogspot.com/feeds/6270691167453300258/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2211950964556159463&amp;postID=6270691167453300258' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2211950964556159463/posts/default/6270691167453300258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2211950964556159463/posts/default/6270691167453300258'/><link rel='alternate' type='text/html' href='http://dozeroaomestre.blogspot.com/2008/07/hello-world.html' title='Hello World!'/><author><name>Rafael Beckel</name><uri>http://www.blogger.com/profile/01830105071166080182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_Ai3cuiX4grk/TQ5xoUpX6KI/AAAAAAAAAM8/dFw03bJ_PFQ/S220/Twitter.png'/></author><thr:total>3</thr:total></entry></feed>
