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

<channel>
	<title>Athanazio &#187; hello world</title>
	<atom:link href="http://www.athanazio.com/tag/hello-world/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.athanazio.com</link>
	<description>Nada é Simples, Mas Tudo é Possível</description>
	<lastBuildDate>Thu, 01 Dec 2011 03:47:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>android &#8211; mover bolinha</title>
		<link>http://www.athanazio.com/2009/11/21/android-mover-bolinha/</link>
		<comments>http://www.athanazio.com/2009/11/21/android-mover-bolinha/#comments</comments>
		<pubDate>Sat, 21 Nov 2009 14:14:00 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[programacao]]></category>
		<category><![CDATA[90 fps]]></category>
		<category><![CDATA[direction]]></category>
		<category><![CDATA[fps]]></category>
		<category><![CDATA[hello world]]></category>
		<category><![CDATA[main loop]]></category>
		<category><![CDATA[touch screen]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=2310</guid>
		<description><![CDATA[Na minha opinão o hello world para desenvolver jogos eh mover um desenho primitivo na tela junto com a informação de FPS (frames por segundo) até porque logo logo perguntamos : tah rodando a quantos FPS ? assim sendo já posso dizer que fiz o meu hello world para o android. Alguns links que ajudaram [...]]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p><a href="http://www.athanazio.com/wp-content/uploads/2009/11/android-move-ball.png"><img class="alignnone size-medium wp-image-2311" title="android move ball" src="http://www.athanazio.com/wp-content/uploads/2009/11/android-move-ball-450x300.png" alt="android move ball" width="450" height="300" /></a></p>
<p>Na minha opinão o hello world para desenvolver jogos eh mover um desenho primitivo na tela junto com a informação de FPS (frames por segundo) até porque logo logo perguntamos : tah rodando a quantos FPS ? <img src='http://www.athanazio.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  assim sendo já posso dizer que fiz o meu hello world para o android.</p>
<p>Alguns links que ajudaram bastante foram estes :</p>
<p>Uma apresentação da google sobre o desenvolvimento para de jogos para o Android<br />
<a href="http://www.scribd.com/doc/16917369/Writing-Real-Time-Games-for-Android">Writing-Real-Time-Games-for-Android</a></p>
<p>Os exemplos de cógigo citados na apresentação<br />
<a href="http://code.google.com/p/apps-for-android/source/browse/trunk/CLiCkin2DaBeaT/src/com/google/clickin2dabeat/C2B.java">C2B </a>2 <a href="http://code.google.com/p/apps-for-android/source/browse/trunk/CLiCkin2DaBeaT/src/com/google/clickin2dabeat/GameView.java">GameView</a></p>
<p>Com certeza este exemplo que escrevi eh extremamente simples, mas exemplifica alguns elementos básicos :</p>
<ul>
<li>main loop</li>
<li>chamada de update</li>
<li>atualização da area de vizualização</li>
<li>input do usuário</li>
</ul>
<p>O ambiente que tenho eh o Eclipse com o plugin para desenvolvimento do android instalado, para os testes eu prefiro usar o telefone porque o emulador demora muito para inicializar <img src='http://www.athanazio.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  e este exemplo tem basicamento 3 classes :</p>
<p><strong>GameActivity</strong> &#8211; que eh a entrada da aplicação, nela eu solicito o uso fullscreen para o jogo, e determino que a visualização será realizada por uma instancia da classe GameView.</p>
<pre class="brush: java; title: ; notranslate">
package com.athanazio.android.moveball2;

import android.app.Activity;
import android.os.Bundle;
import android.view.Window;

public class GameActivity extends Activity {
	private GameView view;

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);

		view = new GameView(this);
		setContentView(view);
	}

	protected void onPause() {
		super.onPause();
		view.pause();
	}
}
</pre>
<p><strong>GameView</strong> &#8211; nesta classe reside o loop principal do jogo que é iniciado no final do construtor, note que na verdade eh criado um Thread com baixa prioridade, que passará a realizar as atividades de atualização e principalmente executar o método postupdate() notficando a interface que pode ser exibida.</p>
<p>além do loop principal o input direcional é tratado pelo método onKeyDown() e o tocar na tela pelo método onTouchEvent()</p>
<pre class="brush: java; title: ; notranslate">
package com.athanazio.android.moveball2;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.Log;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;

public class GameView extends View implements Runnable {

	private static final String TAG = &quot;GAMEVIEW&quot;;

	private static final int INTERVAL = 10;
	private Paint cPaint;

	private float x = 50;

	private float y = 50;

	private boolean running = true;

	FPSCounter fps;

	public GameView(Context context) {
		super(context);
		cPaint = new Paint();
		setFocusable(true);
		setClickable(true);
		setLongClickable(true);

		fps = new FPSCounter();

		// Set the background
		this.setBackgroundColor(Color.WHITE);
		Log.i(TAG, &quot;game view created&quot;);

		Thread monitorThread = new Thread(this);
		monitorThread.setPriority(Thread.MIN_PRIORITY);
		monitorThread.start();
	}

	public boolean onKeyUp(int keyCode, KeyEvent event) {
		return super.onKeyUp(keyCode, event);
	}

	public boolean onKeyDown(int keyCode, KeyEvent event) {
		boolean handled = false;
		Log.i(TAG, &quot;key down&quot;);

		if (keyCode == KeyEvent.KEYCODE_DPAD_UP) {
			y = y - 5;
			handled = true;
		} else if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN) {
			y = y + 5;
			handled = true;
		} else if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT) {
			x = x - 5;
			handled = true;
		} else if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) {
			x = x + 5;
			handled = true;
		}
		return handled;
	}

	public boolean onTouchEvent(MotionEvent event) {
		x = event.getRawX();
		y = event.getRawY();
		Log.i(TAG, &quot;on touch&quot;);

		return super.onTouchEvent(event);
	}

	public void draw(Canvas canvas) {
		super.draw(canvas);

		cPaint.setColor(Color.BLUE);
		canvas.drawCircle(x, y, 15, cPaint);

		cPaint.setColor(Color.BLACK);
		canvas.drawText(fps.getFPS(), 20, 20, cPaint);

	}

	public void run() {
		while (running) {
			try {
				Thread.sleep(INTERVAL);
			} catch (InterruptedException e) {
				Log.e(TAG, &quot;main loop finished&quot;);
			}
			update();
			postInvalidate();
		}
	}

	private void update() {
		fps.update();

	}

	public void pause() {
		running = false;
	}

}
</pre>
<p><strong>FPSCounter</strong> &#8211; nesta classe é feita uma contagem de frames que o jogo consegue exibir por segundo, vi algumas implementações interessantes disto, mas acabei fazendo o mais simples e mais econômico, contar frames e ver se jah passou o tempo <img src='http://www.athanazio.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  note que algumas variáveis eu criei fora dos métodos para evitar que o Garbage collector tivesse que trabalhar, querendo ou não isto economiza alguns milisegundos <img src='http://www.athanazio.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<pre class="brush: java; title: ; notranslate">
package com.athanazio.android.moveball2;

import java.text.DecimalFormat;

import android.os.SystemClock;

public class FPSCounter {

	public static final DecimalFormat format = new DecimalFormat(&quot;###0.00&quot;);

	private float frames;
	private String fps;
	private long start;
	private long current;

	public FPSCounter() {
		start = SystemClock.uptimeMillis();
		frames = 0;
		fps = &quot;???&quot;;
	}

	public void update() {
		frames ++;
		current = SystemClock.uptimeMillis();
		if( current - start &gt; 1000 ){
			fps = format.format(frames);
			frames = 0;
			start = current;
		}
	}

	public String getFPS() {
		return fps;
	}
}
</pre>
<p>a propósito o fps esta em torno de 90 e poucos, vamos ver o que acontece quando tiver de desenhar uma imagem no fundo e varias outras na tela hehehehe.</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2009/11/21/android-mover-bolinha/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>unity3d passo 1</title>
		<link>http://www.athanazio.com/2009/09/22/unity3d-passo-1/</link>
		<comments>http://www.athanazio.com/2009/09/22/unity3d-passo-1/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 03:37:29 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[games]]></category>
		<category><![CDATA[programacao]]></category>
		<category><![CDATA[unity3d]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[hello world]]></category>
		<category><![CDATA[javas]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[move]]></category>
		<category><![CDATA[update]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=2103</guid>
		<description><![CDATA[Esta eh a primeira aventura com o Unity3D, graças a um esperto tutorial do Erick consegui dar os primeiros passos no Unity3D !! o resultado pode ser encontrado aqui : move-box1 Quero registrar alguns passos importantes que aprendi : 1. O chao vira chao quando vc chama ele de chao hehehehe neste exemplo adicionei um [...]]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p><a href="http://www.athanazio.com/wp-content/uploads/2009/09/move-box1.html"><img class="alignnone size-full wp-image-2108" title="movebox1" src="http://www.athanazio.com/wp-content/uploads/2009/09/movebox1.jpg" alt="movebox1" width="450" height="343" /><br />
</a>Esta eh a primeira aventura com o Unity3D, graças a um esperto tutorial do <a href="http://sertao3d.wordpress.com/">Erick </a>consegui dar os primeiros passos no Unity3D !! o resultado pode ser encontrado aqui : <a href="http://www.athanazio.com/wp-content/uploads/2009/09/move-box1.html">move-box1</a></p>
<p>Quero registrar alguns passos importantes que aprendi :</p>
<p>1. O chao vira chao quando vc chama ele de chao <img src='http://www.athanazio.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  hehehehe neste exemplo adicionei um cubo usando a opcao : &#8216;Game Object / Create Other / Cube&#8217;, fiz ele ficar mais larguinho para dar mais estabilidade ao movimento e adicionei o component de corpo rigido atraves de : &#8216;Component / Physics / Rigid Body&#8217; pronto isto bastaria para todos serem felizes e o cubo nao passar do chao quando dah o play.</p>
<p>2. nao entendi ainda como usar um Shader para cada elemento heheheh quando mudo a cor do plano muda a cor da rampinha que fiz</p>
<p>3. adicionei um codigo javascript e arrastei sobre o cubo, pronto !! o metodo update implementado fica valendo para o objeto, e uma variavel que declarei no codigo : var speed:int ficou on inspector do objeto, simplim simplim</p>
<p>olha o codigo usado para o controle de teclado:</p>
<pre class="brush: jscript; title: ; notranslate">
var speed: int;
function Update () {
    var x = Input.GetAxis(&quot;Horizontal&quot;) * speed * Time.deltaTime;
    var y = 0;
    var z = Input.GetAxis(&quot;Vertical&quot;) * speed * Time.deltaTime;
    transform.Translate(x , y, z );
}
</pre>
<p>4. e este links salvaram o dia<br />
<a href="http://unity3d.com/support/documentation/Manual/Creating%20Gameplay.html">documentacao sobre o gameplay</a><br />
<a href="http://unity3d.com/support/documentation/Manual/Physics.html">documentacao sobre a fisica </a><br />
<a href="http://unity3d.com/support/documentation/Manual/Input.html">documentacao sobre o input </a><br />
<a href="http://forum.unity3d.com/viewtopic.php?t=5563&amp;highlight=transform+translate+input+getaxis+horizontal">post sobre movimentacao com teclas</a></p>
<p>por enquanto eh soh, depois tem mais</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2009/09/22/unity3d-passo-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>c# xna, desenhando o sprite na tela</title>
		<link>http://www.athanazio.com/2009/01/06/c-xna-desenhando-o-sprite-na-tela/</link>
		<comments>http://www.athanazio.com/2009/01/06/c-xna-desenhando-o-sprite-na-tela/#comments</comments>
		<pubDate>Wed, 07 Jan 2009 02:23:39 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[games]]></category>
		<category><![CDATA[programacao]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[C Sharp]]></category>
		<category><![CDATA[draw]]></category>
		<category><![CDATA[hello world]]></category>
		<category><![CDATA[sprite]]></category>
		<category><![CDATA[xna]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=1510</guid>
		<description><![CDATA[arre o primeiro sprite na tela a gente nunca esquece !! olha que belo o codigo !!]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p>arre o primeiro sprite na tela a gente nunca esquece !!<br />
<a href="http://www.athanazio.com/wp-content/uploads/2009/01/windows_game1.jpg"><img src="http://www.athanazio.com/wp-content/uploads/2009/01/windows_game1-150x150.jpg" alt="" title="windows_game1" width="150" height="150" class="alignnone size-thumbnail wp-image-1511" /></a></p>
<p>olha que belo o codigo !!</p>
<p>using System;<br />
using System.Collections.Generic;<br />
using System.Linq;<br />
using Microsoft.Xna.Framework;<br />
using Microsoft.Xna.Framework.Audio;<br />
using Microsoft.Xna.Framework.Content;<br />
using Microsoft.Xna.Framework.GamerServices;<br />
using Microsoft.Xna.Framework.Graphics;<br />
using Microsoft.Xna.Framework.Input;<br />
using Microsoft.Xna.Framework.Media;<br />
using Microsoft.Xna.Framework.Net;<br />
using Microsoft.Xna.Framework.Storage;</p>
<p>namespace WindowsGame1<br />
{</p>
<p>    public class Game1 : Microsoft.Xna.Framework.Game<br />
    {<br />
        GraphicsDeviceManager graphics;<br />
        SpriteBatch spriteBatch;</p>
<p>        Vector2 mPosition = new Vector2(0, 0);</p>
<p>        Texture2D mSpriteTexture;</p>
<p>        public Game1()<br />
        {<br />
            graphics = new GraphicsDeviceManager(this);<br />
            Content.RootDirectory = &#8220;Content&#8221;;<br />
        }</p>
<p>        protected override void Initialize()<br />
        {<br />
            base.Initialize();<br />
        }</p>
<p>        protected override void LoadContent()<br />
        {<br />
            spriteBatch = new SpriteBatch(GraphicsDevice);<br />
            mSpriteTexture = this.Content.Load<Texture2D>(&#8220;alien&#8221;);<br />
        }</p>
<p>        protected override void UnloadContent()<br />
        {<br />
        }</p>
<p>        protected override void Update(GameTime gameTime)<br />
        {<br />
            // Allows the game to exit<br />
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)<br />
                this.Exit();</p>
<p>            base.Update(gameTime);<br />
        }</p>
<p>        protected override void Draw(GameTime gameTime)<br />
        {<br />
            GraphicsDevice.Clear(Color.CornflowerBlue);</p>
<p>            spriteBatch.Begin();<br />
            spriteBatch.Draw(mSpriteTexture, mPosition, Color.White);<br />
            spriteBatch.End();</p>
<p>            base.Draw(gameTime);<br />
        }<br />
    }<br />
}</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2009/01/06/c-xna-desenhando-o-sprite-na-tela/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hello world!</title>
		<link>http://www.athanazio.com/2006/05/17/hello-world/</link>
		<comments>http://www.athanazio.com/2006/05/17/hello-world/#comments</comments>
		<pubDate>Wed, 17 May 2006 17:46:51 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[hello world]]></category>

		<guid isPermaLink="false">http://www.athanazio.pro.br/index.php/2006/05/17/hello-world/</guid>
		<description><![CDATA[Oh well, every language learning, every blog, everything MUST begin with a HelloWorld &#8230; jsut to avoid the HelloWorld curse =) so &#8230; here it goes  ! public class HelloWorld { public static void main(String[] args) { System.out.println(&#8220;Hello World&#8221;); } }]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p>Oh well, every language learning, every blog, everything MUST begin with a HelloWorld &#8230; jsut to avoid the HelloWorld curse =)</p>
<p>so &#8230; here it goes  !</p>
<p>public class HelloWorld {<br />
public static void main(String[] args) {<br />
System.out.println(&#8220;Hello World&#8221;);<br />
}<br />
}</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2006/05/17/hello-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

