Estava conversando com um amigo hoje discutido sobre alguns programadores “fodásticos” que tem o glorioso costume de implementar soluções mirabolantes para problemas simples. Começamos a falar então (em um nível mais medíocre ) sobre a implementação de programas “comuns” de desktop usando recursos mínimos em todos os sentidos ,claro usar modo console não vale ,ninguém entrega um produto em modo console e java como todo mundo sabe não tem a melhor performance do universo xD .
Depois disso comecei a pensar no conceito de simplicidade na programação, ela existe ? ,código limpo = código simples ? ,código simples = solução? ,o que da pra fazer realmente apelando para a simplicidade extrema do código sem usar o Gambi Design Patterns ou criar um código ilegível ?.
Depois de um tempo pensei em um programa medíocre uma calculadora bem simples e que tivesse uma interface para o usuário e usasse apenas linhas de código necessárias sem que o resultado final fosse um programa inutilizável e para minha surpresa eu não consegui chegar a uma solução que usa-se poucos recursos e que fosse “utilizável” é muito difícil fazer o simples ,o código começa a ficar ilegível ou o programa perde funcionalidades e o numero de linhas aumenta rápido .Claro que tudo isso é agravado pela minha pouca experiencia com a linguagem maaaas ai vai a minha tentativa de fazer uma calculadora (não consegui pensar em nada mais simples) com recursos mínimos .
Calculadora usando recursos minimouuuus
Sempre me questiono se no nosso pais (p em minusculo) investir tempo/dinheiro em desenvolvimento de games é , ou algum dia será algo rentável financeiramente .
Meu interesse como programador (agora programando em java) nessa área é grande mas não sou do tipo sonhador, jamais me dedicaria integralmente a uma atividade tão hard core quanto desenvolvimento de jogos sem antes ter uma garantia ,um sinal, uma luz de posso viver desse trabalho.
Programando em java só existem trés opções viáveis atualmente em relação criação de jogos .
Não me agradam por serem baseadas em criar uma propaganda de um produto especifico , no meu ponto de vista o conceito de “arte” do game fica limitado, mas dizem que o retorno financeiro existe e é bom.
Jogos para celulares :
Esses podem ser criados na forma de advergame , títulos originais ou remakes de franquias muito conhecidas . Existe uma grande produção nacional nesse mercado e isso todo mundo já sabe, é interessante como os jogos para plataformas moveis podem ter uma produção barata e rápida.
Jogos casuais :
Um advergame pode estar disponível em um celular e consequentemente ser casual , mas gosto de pensar em jogos casuais como jogos curtos disponíveis para PC ou jogáveis pelo navegador . Esse tipo de mercado é mais atraente para desenvolvedores pequenos sem recursos milionários e que podem vender seus games via download , já que seus games não vem em um box de 20GB xD.
No gamasutra uma ótima avaliação do mercado de jogos casuais , inclusive citando o club penguin um jogo em flash que sempre vi como uma coisa interessante para se observar do ponto de vista mercadológico. O jogo é simples e não falha na hora de divertir pois não tenta ser um GOW ou qualquer jogo modinha , e por ser online é leve acabou atraindo um publico especifico, pagante inclusive.
É isso … o mercado nacional as vezes da sinal de que pode ser bom e muito promissor além do mercado mobile, mas as vezes da sinal de tudo que que vc e sua empresa de desenvolvimento de jogos pode conseguir é uma liminar de algum juiz idiota mandando bloquear aquele jogo que vc desenvolveu com muito trabalho xD .
*Título explosivo com vários efeitos de partícula*
Bom depois de ums 3 meses sem postar nada nesse meu blog/diário , encontrei um coisa que me fez escrever aqui de novo. Esse texto era pra ser um comentário no blog do Rodrigo Flausino ,mas ficou um pouco grande não queria ser mala de escrever um comentário enorme.
O assunto em questão é a tal censura.
Depois de ameça de bloqueio do youtube , games proibidos em algums Estados e mais um monte fatos no minimo patéticos envolvendo nossos amados e queridos juízes e esse bicho estranho ,satânico chamado internet vemos agora o pode ser um bloqueio do inocente , doce , meigo, WordPress um dos sistemas de blogs mais usados no mundo e por incrível que pareça o BraZil fica no mundo . (apesar de algums juízes desconhecerem esse fato e já terem expedido uma ordem judicial exigindo que o braZil seja retirado do que conhecemos como “mundo” ).
A cara que eu posso dizer … tamufudido com esses gênios que não entendem que um site presta um serviço e que não é palhaçada , não tem muleque usando WordPress, mas discutir o nível de conhecimento dessas pessoas em relação a informática (ou seja nenhum) é perda de tempo .
Uma luz no fim do abismo (isso mesmo braZil = abismo) seria o fato de muitas pessoas sérias por aqui usarem o WordPress como ferramenta de trabalho inclusive. Mas enquanto a gente espera o que vai sair desse show de ignorância e estupides tecnológica vamos aderir a uma campanha do tipo “Diga Não” , não doi nada postar isso no blog .
Depois de meses sem postar nada aqui to pensando em voltar a usar esse espaço como “diario”
falando sobre meus estudos (java) , sobre gamedev entre outras coisas …
To lendo esse livro a um tempo já (pdf básico xD) , tá eu disse que me interessava por j2ME mas também curto gráficos 3d e dai? xD
O livro é muito bom, bem completo tirou 99% das minhas duvidas sobre Java 3D e fala sobre as coisas interessantes do Java 6 para jogos. Ele é dividido em duas partes , a primeira é uma introdução muito completa sobre Java 3D explicando bem o que é a API e o que ela pode fazer e citando vários projetos que usam a API assim como links para bibliotecas extras e paginas com tutoriais exemplos de código e tudo mais relacionado a documentação . Ele também fala sobre a possibilidade de uma aplicação Java 3D rodar no PS3 usando o Linux do console heuaheuaheua gênial ,o que mais me surpreendeu foi saber que Java 3D suporta shading languages no caso GLSL ou Cg para criar pixel e vertex shaders. O autor também cria um exemplo de jogo e usa elementos do desktop e até scripting com JavaScript tem xD .
Depois mostra um exemplo com landscapes (terrenos) criados a partir de um heitghmap , e um exemplo de colisão com a biblioteca de fisica ODEjava . A segunda parte fala sobre outras APIs que podem ser utilizadas para criação de games .
JOGL - É um wrapper para openGL uma das APIs mais usadas para games .
JInput - Uma API para para input de teclado , mouse , joystick.
JOAL - Java Open Library uma API para som 3D.
Sobre o JOGL é uma API low level (diferente do Java 3D) assim como o openGL então vou ficar longe dessa pelos próximos 5 , 6 anos heuaheuaheua

O melhor desse livro é que ele é novo , todas as referencias são novas , mas o livro poderia
ser excelente pelo menos pra mim.
Eu achei os exemplos um pouco especifícos demais mesmo com diagramas das classes imagino que reutilizar algumas partes fica dificíl , fora que o exemplo com landscapes ,ainda não testei , mas não me parece a melhor forma de faze-lo imagino que exista um maneira mais simples e com melhor performance pra se texturizar terrenos grandes em tempo real.
Outro problema é o título do livro que te da a impressão de com ter técnicas um pouco mais avançadas (não que eu busca-se isso pois ainda sou iniciante em Java) mas achei que iria encontrar técnicas pelo menos mais sofísticadas , não que essas sejam inúteis (já to sonhando em criar um joguinho mas criando terrenos de outra forma) mas todas essas técnicas eu já conhecia bem do Blitz3D ( sim eu uso Blitz xD ) .
Claro que a implementação é diferente mais complexa em Java mais eu achei que iria encontrar um pouco mais , mas ta blz o livro é muito bom eu vou compra-lo assim que surgir a oportunidade ($) xD
O site do livro é esse e tem todos os códigos para download e um resumo de cada capítulo.
Só pra não ficar no vazio por aqui (NUSSA É MESMO?) vou postar o código do que seria um editor de texto mas ta muito longe de editar alguma coisa efetivamente … o nosso exemplo tem um JFrame um JScrolPane um JTextArea e só xD
import javax.swing.*;
import java.awt.*;
public class SwingText
{
public static void main(String args[])
{
JFrame frame = new JFrame(" :: JanelaSwingText :: ");
frame.setSize(400,320);
JTextArea text = new JTextArea(”>”);
text.setForeground(new java.awt.Color(0,5,255));
text.setBackground(new java.awt.Color(255,255,255));
text.setFont(new Font ("Tahoma",Font.PLAIN,17));
Component scroll = new JScrollPane(text);
frame.getContentPane().add(scroll);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
E e por mais R$0,00 essa maravilha com o código comentado pode ser baixada aqui … O_O
Como a alguns posts atrás (aqui ) eu falei sobre usar um compilador Java online para compilar códigos simples,
resolvi falar de algumas ” ferramentinhas ” (kigay) que existem online e podem fazer tarefas simples .
Você pode achar bobagem um editor de texto ou de imagens online com poucos recursos , mas eu acredito que no futuro essas ferramentas poderão ter milhares
de funcionalidades e se tornarem ferramentas completas, claro pela evolução dos nossos PCs e de como são trabalhadas as linguagens web.
pixoh.com
É um editor de imagens que te da opções básicas como Resize,Crop,Enhance,Ajuste de cor,Rotação da imagem e efeitos , mas os efeitos são pagos (triste) , ele salva em JPG,PNG.
www.codeide.com
Também é um compilador online e trabalha com várias linguagens Pascal,Pearl,JavaScript, Basic e até ASM e C .
Bom eu não sei exatamente como ele funciona para C e ASM , (porque elas não são interpretadas) testei um código meu em C e rodou legal.
Claro que ninguém deve usar um compilador online para um trabalho preciso (PELOAMORDEDEUZ) mas para testes simples é legal , e esse
compilador já tem o próprio editor com Highlight syntax e tudo mais . O problema dele é que não tem Java heuaheuaheau .
Ajax13
Por ai tem vários editores de texto e de apresentações estilo PowerPoint nesse site tem alguns desses. O Ajaxwrite parece com o bloco de notas mas usa formatação,também tem um Desktop online mas nunca vi .
EyeOS
Sem mistério é um SO online.
Ainda não se sabe exatamente as aplicações de um SO que depende de outro SO para rodar, existem vários outros por ai de todos os tipos até em linha de comando tem.
Além dessas com certeza existem outras até com mais funcionalidades mas esses são os que lembro agora HeuAHEuaHe.
Na primeira parte deste artigo eu comentei sobre utilizar um compilador online no lugar do Java Devlopment Kit (JDK) , porque?
Pra mim inicialmente a configuração do JDK foi um pouco confusa , mesmo lemdo bons tutoriais foi dificíl entender
todos os procedimentos (que são simples).
Mas agora sem drama porque é simples mesmo XD.
Você precisa primeiro baixar o JDK aqui do site da Sun. clique em Acept lá em cima e depois em Windows Offline Installation, Multi-language .
Esse download pode demorar um pouco , depois de baixar instale como qualquer outro programa.
Agora fica só um pouquinho mais dificil , nos precisamos configurar as variaveis de ambiente (WinXP) elas são 3, va em:
Inicio->Painel de Controle->Sistema->Clique na aba Avançados->e depois em Variaveis de ambiente

Voçê tem 2 opções :
Criar as variaveis necessárias no seu usuario (parte superior) ou para todo o sistema.
Bom clique em ” Nova ” e no campo Nome da variavel coloque ” CLASS PATH ” (sem aspas)
No campo Valor coloque ” .;JAVA_HOME ” e de OK.

segunda variavel com o mesmo procedimento no campo Nome da variavel coloque ” JAVA_HOME “
No campo valor ” C:\Java\Jdk1.6.0_01\”Endereço de onde você instalou o JDK “
A terceira variavel no campo Nome da variavel ” PATH ” e o valor como ” C:\Sun\AppServer\bin;C:\Java\jdk1.5.0_6\bin “
Reinicie o computador ,depois va no prompt do DOS e digite ” java -version ” se tudo deu certo isso deve mostrar a versão
do java instalado em seu computador.
para compilar aquele exemplo digite javac HelloWorldSwing.java e o .class sera gerado heuaheuah.
É isso para que o JDK tenha acesso aos arquivos java do seu PC lembrando que se você não tem o JRE (Java Runtime Enviroment)
para rodar as aplicações não é necessário , a instalação o JDK já vem com o JRE.
Lembrando que nada disso é um tutorial to apenas frisando para meu aprendizado
HeuAhEauu…
Bom como eu disse antes vamos dar uma comentada nesse código !!!
O código:
import javax.swing.*;
Quem já viu algumas coisas em C/C++ ou até outras linguagens já deve estár habituado com o ” include <> “. O ” import ” no java tem a mesma utilidade , incluir bibliotecas extras de uma API e outros arquivos de código Java por exemplo , o ” .* ” indica que estaremos usando Classes do Swing mas sem declarar uma especificamente . Nesse código usamos 2 Classes ” Jframe ” , e
” JLabel ” , poderiamos usar o import também dessa maneira :
import javax.swing.Jframe;
import javax.swing.JLabel;
Teriamos acesso as mesmas classes só que com declarações especificas delas no pacote javax.swing.
public class HelloWorldSwing
{
Declaramos a Classe principal como ” HelloWorldSwing ” respeitando o case sensitive do Java (Nome de Classes sempre começam com letras maiúsculas).
public static void main(String args[])
{
Aqui declaramos a função main do programa , todo programa deve ter mas é possível criar um programinha sem main mas isso é só zuera xD.
JFrame frame = new JFrame(” :: JanelaSwing :: “);
Aqui começa a ficar legal , criamos um novo JFrame , que é a janela do programa propriamente dita , como ” frame ” e damos um valor char que é o nome que aparece na barra da janela .
JLabel label = new JLabel("Hello World Swing");
Agora o que vizemos no nosso super mega programa HeuaHeua é criarmos um novo JLabel como label .O JLabel é aquela Informação (texto) que aparece em uma janela windows e não pode ser editada é apenas para visualização. E também neste caso passamos um valor do tipo char que sera escrito na tela.
frame.getContentPane().add(label);
Adicionamos um componente ao nosso frame (janela) , .add(label) adiciona o label para ser mostrado na janela .
frame.setSize(300,250);
Isso aqui é bem legal ,nos definimos um tamanho para o nosso frame com .setSize(300,250)
os dois numeros inteiros que foram passados são o tamanho inicial (em pixels) da janela que criamos.
Lembrando que essa janela pode sem maximizada para ocupar todo o monitor . Para criar uma janela já maximizada podemos substituir o frame.setSize(300,250); por :
frame.setExtendedState(frame.MAXIMIZED_BOTH);
Isso define o estado inicial do frame como “maximizado” .
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Esta parte define a operação padrão (default) para quando o frame for fechado , no caso ,
a Classe JFrame usa exatamente a operação EXIT_ON_CLOSE para ” sair ao fechar ” a janela.
frame.setVisible(true);
}
}
Definimos que o nosso frame sera visivel , se o valor boolean (TRUE/FALSE) fosse passado como FALSE o programa seria executado mas a janela não seria visualizada . E fechamos as chaves ” { ” da Classe HelloWorldSwing e do metodo main .
É isso , só uma janelinha pra não ficar somente no ” System.out.println(”HelloWorld”) “, lembrando que em java assim como C/C++ todos os comando terminam com ” ; ” (ponto e virgula) .
No próximo capitulo vamos ver como compilar usando o JDK propriamente dito , claro né não da pra programar usando varias APIs com um compilador online heuaheuahe.
Bom como eu comentei no primeiro post desse maravilhoso blog (que ninguém vai ler xD)
pretendo progamar em J2me que é a especificação móvel da plataforma java , mas isso é pro futuro , primeiro tenho que dominar o J2SE que vou estar (?) estudando ano que vem… espero … que é voltado para aplicações desktop e applets.
Bom mas como ninguém vai a lugar nenhum sem antes passar por esse magnifico “cliche” da programação , e eu não vou fugir dele , vamos a um Hello World . Mas não vou criar o Hello World clássico porque … sei lá ele chato XD , como aprendi primeiro a criar uma janela Swing (uma das varias APIs para desktop) vou criar um Hello World Swing !!!
Sempre se recomenda usar o JDK (Java Development Kit) claro é com ele que vc ira compilar suas aplicações em java mas para compilar um código simples como esse vc pode usar um compilador online … é eu sei é sem noção XD mas funciona e te ajuda a entender o processo . Mas claro o JRE (Java Runtime Enviromente) prescisa estar instalado na máquina para que o programa seja executado (Java é flexivel má nem tanto xD) .
import javax.swing.*;
public class HelloWorldSwing
{
public static void main(String args[])
{
JFrame frame = new JFrame(" :: JanelaSwing :: ");
JLabel label = new JLabel("Hello World Swing");
frame.getContentPane().add(label);
frame.setSize(300,250);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
Bom agora é copiar o código no bloco de notas e salva-lo como “HelloWorldSwing.java” , o arquivo .java que sera compilado e sera transformado em um .class sempre possui o mesmo neme da classe que contêm o metodo main ( a coisa clássica do java) . Depois vc pode selecionar no compilador online a opção para usar o JDK 1.6 e selecionar o arquivo , no caso “HelloWorldSwing.java” e compilar , se não existir nenhum erro no código aparecera a opção para baixar o arquivo .class gerado . Para executar o arquivo HelloWorldSwing.class vc pode criar um arquivo ” .bat ” com o comando que diz para o JRE executar o arquivo…
Abra o bloco de notas e digite
@echo off
java HelloWorldSwing
e salve o arquivo como ” QualquerCoisa.bat ” no mesmo diretório do seu arquivo HelloWorldSwing.class e execute esse arquivo , se tudo esta certo ira aparecer uma janela com um label “Hello World Swing”
Na próxima explico cada parte do código ^^
