Pular para o conteúdo principal

Postagens

Mostrando postagens de julho, 2008
2008-07-23: finalmente, o programa funciona! Nesta parte final o que fizemos foi criar o método geraStr(), que como o nome fala, vai gravar o arquivo STR. - primeiro instanciamos rafOut, rafOut = new RandomAccessFile(fileNamePath+".str", "rw");, que vai gerar um arquivo ao final chamado “nome.str.str”. - em rafOut.writeShort(Short.reverseBytes(totalPonteiros)); estamos escrevendo em primeiro lugar o ponteiro de ponteiros, hehe, que é um short com a quantidade de ponteiros que existe no arquivo. Detalhe, que para colocar de volta no arquivo, temos que inverter os bytes para a forma original. - depois temos um laço que percorrerá o array de RegistraPonteiro, lista[], pegando as informações, short ponteiro e byte[] conteúdo, gravando-as em sequencia no arquivo. Novamente, temos que inverter o short ponteiro para gravar de forma correta: for ( i = 0; i < totalPonteiros; i++){ rafOut.writeShort(Short.reverseBytes(lista[i].getPonteiro()));
2008-07-23: resolve melhorar um pouquinho o StrEditor e criei este método, getInfo(), que retorna um array de inteiros com várias informações a respeito dos ponteiros, offsets e tamanhos. No início temos o inteiro array que receberá as informações calculadas; declarei também várias variáveis que as descrevem cada índice do array. No fim retornamos o array int para ser utilizado com outros métodos. private int[] getInfo(){ int[] info = new int[6]; try { final int LINHA = 0; final int INICIOOFFSETLINHA = 1; final int FIMOFFSETLINHA = 2; final int OFFSETTEXTO = 3; final int TAMANHOTEXTO = 4; final int TAMANHOPONTEIRO = 5; info[LINHA] = getLine(); info[INICIOOFFSETLINHA] = txtMain.getLineStartOffset(info[LINHA]); info[FIMOFFSETLINHA] = txtMain.getLineEndOffset(info[LINHA]); info[OFFSETTEXTO] = info[INICIOOFFSETLINHA]; info[TAMANHOTEXTO] = (info[FIMOFFSETLINHA]-1) - info[OFFSETTEXTO];
2008-07-22: Ontem conseguimos fazer coisas importantes, como ler a linha de texto e calcular o tamanho do ponteiro. Hoje, continuando, vamos pegar estas informações e devolver ao array de RegistraPonteiro, que possui como atributos, short ponteiro, byte[] conteúdo. Criamos um método chamado writeChanges() que recebe os parâmetros int linha, short ponteiro e String texto. Como cada ponteiro está em uma linha, o parâmetro linha serve como índex do array RegistraPonteiro lista[]. Os outros parâmetros serão os novos valores do ponteiro e seu conteúdo, definidos através dos métodos setPonteiro(short ponteiro) e setConteudo(byte[] conteudo) da Classe RegistraPonteiro. Para um teste simples, é só retirar o “//DEBUG” e olhar na saída de console o resultado. Desta vez, depois de muito procurar, consegui converter String para bytes de uma forma fácil, através de String.getBytes(). Comentando os teste debugs: - em Integer.toHexString((int) teste.getPonteiro()));, recebemos o valor short com o mét
StrEditor: hoje fiquei quebrando a cabeça. Depois de abrir o arquivo str, preciso modificar a linha de texto e pegar somente o que me interessa, calculando o tamanho. Daí posso calcular o tamanho do ponteiro deste bloco modificado de texto. Bom, aproveitando o método que criamos anteriormente, getLine(), precisamos saber o início da linha, em offset: public int JTextArea.getLineStartOffset(int line). Com o método public int JTextArea.getLineEndOffset(int line) conseguimos saber o ultimo offset da linha em questão. Agora fica fácil, é só utilizar o método public String JTextArea.getText(int offs, int len), passando o offset e o tamanho a ser lido. O código abaixo exemplifica o que fiz para conseguir isso: private void txtMainMouseClicked(java.awt.event.MouseEvent evt) { try { int linha = getLine();//guarda a linha int inicioOffsetLinha = txtMain.getLineStartOffset(getLine());//offset inicio linha
2008-07-18: Hoje estava eu brincando com o SQLServer 2008 rc0 e lendo blogs sobre o assunto. Aprendi sobre o plano de execução que o SQLServer cria para agilizar uma busca. Interessante mesmo foi que consegui criar um Job para fazer backup dos bancos, mas não apenas isso, primeiro seleciono um banco, seleciono suas tabelas, ajusto os indexes e recompilo um novo plano de execução. Daí é só backapear. Depois ia testar uma funcionalidade nova, que é a COMPRESSION, mas ainda não testei. Depois que eu der um jeito de instalar o SQLServer 2008 aqui posso explicar as coisas com mais calma e clareza. Preciso preparar meu trabalho interdisciplinar. Estava esses tempos atrás fazendo uns teste sobre mapas e parece que vou seguir essa linha. Achei show de bola. Tem um amigo no trabalho que é desenvolvedor web e tem um sistema feito em .net chamado GEO, que ele utiliza para criar geodados. Muito legal, por exemplo, temos a cidade de São Paulo e seus devidos bairros, etc., então é mostrado na tela,
2008-07-18: Nesta madrugada estou eu mexendo um pouquinho no strEditor. Desta vez o desafio foi criar um mecanismo que por onde eu percorra ou click na área de texto, seja exibido em que linha estou. Consegui resolver da seguinte maneira: - primeiro, pego a atual posição do cursor: JTextArea.getCaretPosition() retorna um int da posição de onde está o cursor. - depois, utilizando o método JTextArea. getLineOfOffset(int offset) teremos como resultado um int da linha que está o offset. Na prática, criamos um método getLine(): private int getLine(){ int posicao = txtMain.getCaretPosition();//guarda a posição do cursor int linha = 0;//inicializa com 0 try { //passamos como parâmetro a posição do cursor linha = txtMain.getLineOfOffset(posicao); } catch (BadLocationException ex) { // } return linha;//retorna a linha do cursor } Setando o label ficaria assim: jLabel1.setText("Linha: "+getLine()); Um probleminha que t
O editor: ta ta ta... confesso que para o fim da tradução pode ser perda de tempo toda essa firula, mas é isso que está me ensinando Java mais rápido! Ok, por enquanto tenho um frame que contém um JTextArea que recebe todo o conteúdo que consigo ler de um arquivo *.STR. Na primeira coluna, temos o número de linhas, que é o número de ponteiros existente no arquivo. Na segunda coluna temos o tamanho do bloco de texto do ponteiro, depois temos a representação deste bloco em hexadecimal e por fim a representação em caracteres. Vou adicionar uma funcionalidade para extrair todos blocos num arquivo *.TXT e assim passar logo para o GameBoy colocar no Looney.

Doom RPG BR

2008-07-15: Depois de mais algum tempo, aqui estou mexendo em um projeto congelado: Doom RPG, EA/Jamdat, JME, para Português-br. Posso dizer que comecei a mexer nesse projeto desde setembro de 2006, a data do arquivo de progresso que criei na época. Puta-que-pariu! São quase dois anos... Foda mesmo não terminar algo e ver que muita gente gostaria de ver a idéia concretizada, mas essa tradução serviu muito para meu amadurecimento no conhecimento sobre romhack, tradução, jogo portáteis e Java, na qual sou o maior interessado nessa linguagem hoje. Ah, já ia me esquecendo, o chato do Gamer Boy/Gato Felix, que está sempre acreditando na gente. Firulas à parte, estou desenvolvendo um programinha para editar os arquivos do Doom RPG e visto que tem muitos joguinhos que utilizam sistema similar, será uma mão-na-roda futuramente. Depois posto mais detalhes sobre. Voltando ao Doom RPG, reencontrei meu último backup da tradução, Yahooooooo!!! Nesta versão tenho as imagens de apresentação traduzida
2008-06-29: Faz tempo, mas tem uma coisa interessante que me trouxe aqui. Nos meus estudos de jme, estava fazendo um joguinho do tipo Pong, beleza. O problema é que coloquei uma imagem como fundo de tela e essa imagem tem um tamanho fixo e, quando vou testar em vários emuladores que possam ter o tamanho da tela diferente, já viu né? Bom, borá lá, buscando na net, encontrei um post do blog Mobilidade é tudo, http://www.mobilidadetudo.com/2008/04/redimensionar-imagens-em-java-me.html, que me levou a um post no JavaFree, http://www.javafree.org/javabb/viewtopic.jbb?t=851285, falando sobre redimensionamento de imagens em JME. Talvez não seja muito bom utilizar esse método, pois pode consumir muito processamento em celulares mais “humildes”, mas mesmo assim achei uma idéia fantástica, claro que não pude deixar de testar: Show de bola né? Ah, este joguinho fiz utilizando um velho tutorial da JogosPro e-magazine #2, de milhões de anos atrás! Aliás, como sempre, tenho mania de coletar um milhã
Video Game Art? Neste artigo da Benzaiten , http://benzaitenbrasil.blogspot.com/2008/01/videogamearte-inicio.html , temos a abordagem do livro VideoGameArte, de Arthur Bobany, que nos mostra que, sim, vídeo game é uma arte. É uma arte que consome outras artes e neste conjunto todo temos a arte do vídeo game. É até engraçado, mas isso me faz lembrar as aulas de Teoria Geral de Sistemas (TGS) da faculdade, na qual aprendi que um sistema é um conjunto de suas partes, interligadas entre si. Este conjunto de resultados nos leva a um Sistema maior (como no caso dos games), e mais, é suposto que um sistema é parte de algum sistema ainda maior, o que nos expande a possibilidade de pesquisar mais e mais em busca destes sistemas maior... Ta, viajei um pouco, mas ao ler que o vídeo game é uma arte, não pude deixar de associar com um sistema, composto de outras partes, outras artes...
Video Game Art? Neste artigo da Benzaiten , http://benzaitenbrasil.blogspot.com/2008/01/videogamearte-inicio.html , temos a abordagem do livro VideoGameArte, de Arthur Bobany, que nos mostra que, sim, vídeo game é uma arte. É uma arte que consome outras artes e neste conjunto todo temos a arte do vídeo game. É até engraçado, mas isso me faz lembrar as aulas de Teoria Geral de Sistemas (TGS) da faculdade, na qual aprendi que um sistema é um conjunto de suas partes, interligadas entre si. Este conjunto de resultados nos leva a um Sistema maior (como no caso dos games), e mais, é suposto que um sistema é parte de algum sistema ainda maior, o que nos expande a possibilidade de pesquisar mais e mais em busca destes sistemas maior... Ta, viajei um pouco, mas ao ler que o vídeo game é uma arte, não pude deixar de associar com um sistema, composto de outras partes, outras artes...
Neste artigo da Benzaiten, Games como inclusão digital, Diego fala da importância dos jogos na inclusão digital e nos mostra que, pode até ser que o uso dos jogos não levem as pessoas a comprar mais online, mas pelo menos vamos ter pessoas sem dificuldade alguma em manipular uma tecnologia, por exemplo, um recurso de celular, um site de e-commerce ou mesmo um terminal de auto-atendimento bancário. A mesma tecla, mouse, etc. que joga será a mesma que poderá acessar um e-commerce, por exemplo. É impressionante se notarmos que crianças que jogam ou mexem com celulares desenvolvem uma grande habilidade (como no exemplo, temos crianças que manipulam um iPhone, e seus recursos, melhor que seus pais...) e se pararmos para pensar, tornarão pessoas que não deverão ter alguma grande dificuldade futuramente ao manipular tecnologias digitais.
Um artigo muito interessante do blog Benzaitenbasil, Vídeo Game Arte: protagonistas nos mostra como um jogador pode ligar-se com o protagonista de um jogo. Antigamente os jogos não tinham grandes visuais e a ligação com o protagonista era mais algo imaginável, pois na época dos Ataris, por exemplo, não tinha como fazer algo melhor tecnologicamente. Depois, com a evolução tecnológica, os personagens passaram a ter maior semelhança com o público, com a realidade e muitos jogadores acabam se identificando com o protagonista. O exemplo das personagens masculino e feminino, onde jogadores escolhem o sexo do protagonista, ou muitos marmanjos se recusam a jogar com um protagonista feminino. É, o jogador gosta mesmo de se identificar com o protagonista, ou mesmo tirar vantagens disto. Vale à pena a visita.
Engraçado como uma coisa puxa a outra: lendo o blog do J. Pereira fiquei sabendo sobre um tal Princípio de Pareto, num post em que ele nos dá dicas de como batalhar por um emprego. É assim que começa e fui logo pesquisando na Wikipédia. O princípio de Pareto, também conhecido como regra 80-20, fala que para muitos eventos, 80% do resultado vem de 20% das causas. O economista italiano Vilfredo Pareto observou que 80% das riquezas da Itália provinham de 20% da população. Aprofundando suas pesquisas, descobriu que outros países também tinham números parecidos, assim como em outros fenômenos. O princípio de Pareto tem aplicações práticas nos campos de controle de qualidade e ciência da computação, por exemplo. Matematicamente não há uma precisão consistente no princípio, mas este é como uma base geral para o desenvolvimento de outras ferramentas. Em Portugal, existe um importante índice de referência de mercado capital, o PSI-20, que utiliza este princípio, selecionando as 20 empresas com
2008-04-26: Desta vez descobri um blog de um português, J. Pereira, e que pouco que li, voltado para gestão de projetos. No post http://jpereira.eu/pensar-atras-do-guardanapo.html, Pereira nos apresenta o livro de Dan Roam , The Back of the Napkin que mostra como responder 6 questões essenciais com 6 desenhos: Interessante. Às vezes desenhar torna a coisa fácil. Neste outro post http://jpereira.eu/o-que-e-o-mantra.html , Pereira mostra a visão contida no livro The Art of the Start de Guy Kawasaki em que o autor defende que as empresas devem ter um “mantra” que as descrevam, em lugar do tradicional “Missão”. Uma empresa deve querer colaboradores e clientes fiéis a ela, assim como as religiões tem seu público enorme de fiéis. Pareceu-me que este é o tipo de coisa que aproxima mais ainda uma pessoa de uma empresa. HUahUAhu, olha como seria o mantra da força aérea norte-americana. Aposto que isso atrairia milhares de fiéis... Nesta figura fica claro o significado: Neste outro post de J. P
2008-04-23: Estou aprendendo um pouco sobre UML e me pareceu muito interessante, do ponto de vista que posso “desenhar” meus casos de uso e classe, em uma linguagem genérica que posso mais tarde escrever em qualquer linguagem de programação. Lendo alguns depoimentos, o profissional que utiliza o UML como meio para projetar e documentar seus sistemas, diz que ganha muito em tempo hábil, pois em projetos leva-se de uma a duas semanas a implementação do UML e é possível encontrar erros ou desafios a serem solucionados antes mesmo de codificar uma única linha, o que leva ao desenvolvedor ao não sofrimento quando for escrever códigos. Parece-me que o padrão da indústria hoje é o Microsoft Visio, mas há quem defenda os sistemas mais leves e funcionais. Na faculdade, nos ensinam UML através do JUDE, andei dando uma sapeada nas funções UML do NetBeans e também já me deram a dica do UMLet (http://www.umlet.com/), que ainda não testei.
2008-04-12: Estava eu aça, pensando com os meus botões: como que posso utilizar um “clear screen” no meu programa Java console? É, o joguinho de campo minado poderia ficar mais interessante se eu conseguir fazer o efeito de sobreposição de tela, algo que o “clear screen” se mostraria útil. Com a ajuda do novo pai dos burros, o Google, cheguei a interessantes sugestões de diversos fóruns de discussão envolvendo Java. A saída mais interessante e simples que achei, foi imprimir na tela uma seqüência de vários “\n”, isso mesmo, a famosa quebra de linha, de modo a deixar a tela limpa para receber novos caracteres. Tudo bem que se consiga chamar algum método que execute algum comando de shell de algum sistema, mas isso iria acabar com a portabilidade do programa. É, pelo que pude perceber, o Java não possui uma solução pronta como “clrscr()” ou system(“CLS”), mas podemos driblar isso facilmente com uma sucessão de quebras de linha. Show de bola! Depois vou testar no campo minado e ver no que
2008-04-09: Ultimamente estive buscando informações sobre WebService. Ainda não estudei nada, mas estou estudando o material, pois me parece fantástico que qualquer aplicação possa acessar informações em um banco de dados centralizado, se comunicando através de uma linguagem intermediadora. Encontrei um interessante serviço de WebService (WS) em http://www.republicavirtual.com.br/cep/index.php, inclusive com muitos exemplos em diferentes linguagens, que vão consumir os serviços de consulta de CEP. Vocês também podem utilizar o WS de Cotação de moedas, http://www.republicavirtual.com.br/cotacao/index.php. Se você, aventureiro que pretende, assim como eu, dar uma passadinha na Nova Zelândia (sim... isto aconteceu numa terra muuuuito distante, lá na nova Zelândia... HUAHuAHu), por que não, depois de fazer um curso de inglês, se preparar para a indústria gamística? Aconselho uma visitinha ao site da Media Design School, http://www.mediadesign.school.nz/ e descobrir as possibilidades de enc
Aqui vai mais uma matéria devmedia: Curso Online - Criando uma aplicacão de controle de contas para Pocket PC com .NET (Weliton Carlos Flor (English)) http://www.devmedia.com.br/articles/viewcomp.asp?comp=8309 Da GameDev fiquei sabendo que a google está apoiando estudantes a desenvolverem open source games, através de seu programa Google Summer Code. É mole, uma oportunidade dessas e ainda ser financiado para desenvolver jogos? http://www.gamedev.net/community/forums/topic.asp?topic_id=487195 Chega de news agora… 2008-03-23: Finalmente escrevi um tutorial bem visual, explicando a tradução de jogos em Java para dispositivos móveis. Confira em www.romhackers.org 2008-03-26: Voltando no joguinho de campo minado. Hoje trabalhei no método setGameOver(). Agora o setGameOver() desenha o campo minado mostrando onde estão as bombas, usando o caractere “X” no lugar do “1”. Quando você perde, chamamos o método setGameOver(), este então percorre todos os índices da matriz field à procura de bomba