quarta-feira, 24 de outubro de 2012

Alguém se lembra: MotoMachine?


Alguém já ouviu falar na Gurgel?

Não? Então vale uma explicação: a Gurgel foi uma empresa que fabricava automóveis genuinamente brasileira (nasceu, cresceu e morreu aqui no Brasil), sendo que o carro mais famoso criado por eles era o chamado BR-800.

Quer saber mais sobre a Gurgel? A Wikipédia explica.

Num dia desses, me lembrei de uma Quatro Rodas (revista da Editora Abril, especializada em "automóveis") que tinha um artigo que falava de um carro desta fabricante que seria customizável, ou seja, você poderia comprar "partes" do carro e monta-lo como quisesse (como se fosse um Lego).

Este se chamaria MotoMachine.

Fazendo uma pesquisa na Internet, soube que este carro realmente "saiu". Porém a customização do "carrinho" ficou somente na capota (que era "removível" e "trocável" por outra) e somente acionistas da empresa poderiam comprá-lo.

Hum... Seria este um dos motivos da Gurgel ter falido? :P

Até mais!

quinta-feira, 18 de outubro de 2012

Crie jogos para Mega Drive!


Sei lá, mas quando eu era adolescente, escolhi informática como profissão pois queria saber fazer jogos (já comentei isso em algum lugar? :P ).

Hoje, até que consegui programar alguma coisa para games, não foi nenhum Halo ou God of War, mas pelo menos, matei a vontade. (claro que o código não esta aquelas coisas, porém o mais importante é que funciona... :P )

Voltando ao passado, eu só queria saber programar, por que era um gamemaníaco (existe esta expressão ainda?) que ficava fissurado em jogos do Master System e do Mega Drive (quando a Tec Toy era "o ó do borogodó" -- essa sim é uma expressão velha (quase idosa...)).

Naquela época, pensava comigo mesmo: "Um dia, vou fazer o jogo para Mega Drive".

Depois desses anos todos que se passaram, agora achei um jeito de desenvolver para o console.

Esta disponível um kit de desenvolvimento para criar jogos para Mega Drive/Genesis chamado SGDK:
http://code.google.com/p/sgdk/

Não sei se funciona, mas parece legal (pelo que li, não é tão difícil de programar, pelo menos, eu acho...)
Pena que não tenho a eprom e a "plaquinha" para gerar o cartucho... :P

Até mais!

terça-feira, 16 de outubro de 2012

Alguém se lembra: Xadrez Eletrônico?


Isso faz parte da minha infância (era 1984): eu vivia no comércio do Centro de Campinas e, de vez em quando, via na vitrine de uma loja de presentes um tabuleiro de xadrez eletrônico.



Naquela época, achava a coisa mais fantástica do mundo, pois as peças se mexiam sozinhas! (como eu tinha 7 anos, achava que era algum tipo de fantasma ou coisa parecida :P )

Agora sei que, na verdade, era só um imã que fazia as "jogadas"... (hum... me veio uma dúvida: como seria o "programa" da inteligência artificial dele???)

Até mais!

domingo, 14 de outubro de 2012

A jornada de uma andorinha

Uma andorinha, em sua primeira viagem de migração para o sul, se perdeu de seu bando. Triste, mas sabendo que não poderia parar, ela procurava um de seus semelhantes para lhe indicar o caminho.

Nesta, uma outra andorinha que também estava atrasada, passava por perto.

"Desculpe pelo incômodo cara amiga, mas você pode me indicar o caminho para o sul?" -- perguntou

Sua semelhante, que já havia feito várias viagens, sabendo que a jovem teria mais chances de acasalar quando chegasse lá, apontou para a direção contrária e disse:

"Siga esta direção, com certeza você chegará lá rapidamente".

"Obrigada! Muito obrigada!" -- agradeceu, feliz.

Com isso, o pássaro seguiu a rota indicada, porém, cada vez que seguia a viagem, mais frio este sentia.

De repente, uma coruja voava perto e, estranhando aquele pequeno ser naquele lugar, perguntou:

"O que o pequenino faz por estes lados?"

"Estou indo para o sul, a fim de perpetuar minha espécie..." -- respondeu a andorinha.

"Mas esta é a direção errada! Você não sente que esta cada vez mais frio e que a paisagem nesta região está cada vez mais desolada?" -- contestou a coruja.

"Não, você esta tentando me enganar! Foi um de meus semelhantes que me indicou este caminho..." -- falou com fúria o pequeninho.

"Esta certo... Tudo bem você não acreditar em mim, afinal, não sou de sua espécie... Mas pense um pouco: por que eu a enganaria? E você não sente como o ambiente esta estranho para ser a primavera do sul?" -- indagou a coruja.

Porém, ignorando os avisos da coruja e de seus instintos, o pássaro continuou seguindo sua jornada, acreditando fielmente no que sua prima disse.

E, depois disso, ela nunca mais foi vista pelas redondezas...

quinta-feira, 4 de outubro de 2012

Dicas de Programação: Desenhando na tela do Android

Esta foi um pedido de um colega meu.

Para os acostumados em "desenhar" pelo método paint do Java AWT/Swing, sabia que dá para "converter" este tipo de coisa para Android?

Para isso, o primeiro passo seria reescrever o método onDraw de uma View:

/**
 *Classe que herdar de android.view.View
 **/
public class DrawView extends View {

//Objeto de auxilio para desenhar
private Paint paint = new Paint();

/**
 *Construtor da classe
 *@param context Contexto da aplicação
 */
public DrawView(Context context) {
      super(context);
}

/**
 *Reescrevendo o método onDraw da View
 *@param canvas Objeto para "desenhar" na tela
 */
@Override
protected void onDraw(Canvas canvas) {
        //Chamando o método reescrito da "superclasse" (classe-pai)
super.onDraw(canvas);
        //Pintando a tela inteira de preto
canvas.drawColor(Color.BLACK);
        //Pintando um quadrado verde 50x50 na posição 100x100 deste objeto (view)
paint.setColor(Color.GREEN);
canvas.drawRect(100, 100, 150, 150, paint);
}
}

Agora, em sua Activity principal (classe que é executada pelo Android), basta adicionar a view que criamos para mostra-la na aplicação:

/**
 * Classe que herda de android.app.Activity
 */
public class MainActivity extends Activity {
 
/**
 *Reescrevendo o método onCreate da Activity (chamado no inicio da "atividade")
 *@param savedInstanceState Objeto que contém o último estado salvo.
 */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        //chamando o mesmo método da classe-pai ("superclasse")
        super.onCreate(savedInstanceState);
        //obtendo as propriedades da tela
        Display screen = getWindowManager().getDefaultDisplay();
        //criando a view principal
        DrawView drawView = new DrawView(getApplicationContext());
        //adicionando a view para ser mostrada em tela inteira
        addContentView(drawView, new LayoutParams(screen.getWidth(), screen.getHeight()));
    }
}

Se tudo funcionar bem, um quadrado verde aparecerá em seu sistema. :)

Até mais!

sábado, 29 de setembro de 2012

CocosBuilder: Criando interfaces para jogos


Para quem não sabe, Cocos2D é uma biblioteca gráfica que ajuda a criar jogos 2D (ela usa o OpenGL por trás dos panos).

Escrita inicialmente em Python, hoje esta é mais famosa pelo "port" feito em Objective-C para iOS.

Apesar da facilidade de usar a biblioteca (muito mais fácil que usar o OpenGL "puro"), fica difícil saber, via programação, como uma tela pode ficar (além de "perder" tempo ajustando posicionamento e resolução...).

Pensando nisso, algumas pessoas criaram uma ferramenta que auxilia a "moldar" a interface de um jogo feito com Cocos2D, chamada CocosBuilder.

Parece bem legal, ainda mais para quem esta começando agora (que é o meu caso :P).

Para mais informações, no site:
http://cocosbuilder.com/

Obs.: Parece que existe um "port" para AndEngine (que é similar ao Cocos2D, só que para Android) para suporte ao CocosBuilder:
http://www.andengine.org/blog/2012/06/andengine-cocosbuilderextension/

Obrigado Gui, pela dica! :)

Até mais!

quarta-feira, 26 de setembro de 2012

Planejamento e Construção


De tempos em tempos, eu acho que confundo "falta de planejamento" com "metodologia ágil"...

Por várias vezes, me peguei pensando:

"Para que planejar/explicar/escrever estas coisas no quadro, vamos é trabalhar!" (neste caso, o sinônimo de trabalhar é "programar")

"Para que criar uma arquitetura? O sistema é simples!" (seria simples, se o sistema não fosse distribuído, não tivesse que manter as informações no mainframe e que um dos requisitos não funcionais seria a performance...)

"O escopo desta história esta fechado." (na verdade, deu o maior sono na reunião de planejamento...)

"Hum... Acho que poderiamos fazer isso um pouco diferente..." (uma pequena observação nesta frase: em 90% dos casos, vá por mim: é melhor não fazer "diferente")

"Acho que o cliente vai gostar dessa modificação!" (nesta, pelo menos uns 80% dos clientes não vão gostar das modificações que você faz, principalmente por não consulta-los antes...)

"Poderiamos discutir isso mais tarde..." (no final, não discutimos nada :( )

"Para que planejar testes (unitários/regressivos/funcionais/exploratórios), eu sempre faço as coisas direito!" (essa é pura prepotência minha, afinal sou humano e como umano, herro -- pelo menos, um humano normal erra :) )

"Vamos cortar os testes para dar mais tempo de implementar" (tá, e a qualidade, ó!)

"Vou deixar esse prá lá, que este é fácil de alterar" (é, se não tivesse que alterar o pedaço em 1000 linhas de código que você copiou e colou por toda parte...)

"Vou deixar esse prá lá, que este vai tomar tempo" (acabei de perceber que frases que começam com "Vou deixar..." são bem perigosas... :P )

Preciso parar de pensar que um projeto de informática é só codificação. Ele é muito mais do que código: é um conjunto de conhecimentos e idéias (e de sonhos, talvez :) ) de várias pessoas que participam direta ou indiretamente de minha equipe.

Só uma observação ao meus "leitores":  Também não menospreze a codificação, pois esta ainda é a "realização" de tal "sonho/idéia/conhecimento". :P

Continuo errando e aprendendo...

Até mais!